diff --git a/.gitignore b/.gitignore index 0dbaa06..cdaa90a 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,4 @@ krusty.sqlite3 *.sqlite3 *.db *.tar.gz -*.zip *.minisig -*.jpg -*.pdf diff --git a/README.md b/README.md deleted file mode 100644 index 017c7d0..0000000 --- a/README.md +++ /dev/null @@ -1,146 +0,0 @@ -# Krusty Cookies - -> Krusty Kookies is a bakery which specializes in cookies, and they need a database to keep track of their production and deliveries. - -## Building and testing - -This project uses sqlite3 as a database. Migrations happens automatically on launch. -Migrations drop all tables and recreate them, so all data is lost on restart. -By default jdbc connects sqlite to an in-memory database, so all data is lost on restart anyway. - -```bash -./gradlew build -./gradlew test -``` - -The gradle environment is bumped to a recent version, and it is configured with kotlin and junit5. -The syntax for junit4 was ported to junit5. -**Most** of the pre-configured deps in the handout contained CVEs of varying severity, so they were updated to newer versions. -No tests were changed, some helper classes were implemented. - -## Base tables - -**This description is no longer consistent with the current state of the project.** - -Unsuprisingly, we will need a cookie table. - -```sql -CREATE TABLE cookies ( - cookie_id INT PRIMARY KEY, - cookie_name VARCHAR(50) NOT NULL UNIQUE, -); -``` - -Last i checked, a commercial bakery needs customers: - -```sql -CREATE TABLE customers ( - customer_id INT PRIMARY KEY, - customer_name VARCHAR(50) NOT NULL, - customer_address VARCHAR(50) NOT NULL, -); -``` - -We could also have a recipe table that relates ingredients to cookies. But instead, we just keep track of inventory (raw materials) and let the business logic handle orders/production by subtracting a certain set of ingredients from the inventory, and adding the corresponding pallets to the "freezer". - -```sql -CREATE TABLE raw_materials ( - ingredient_id INT PRIMARY KEY, - ingredient_name VARCHAR(50) NOT NULL UNIQUE, - ingredient_quantity INT NOT NULL, - unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml')) -); -``` - -> When a pallet is produced, the raw materials storage must be updated, and the company must be able to check the amount in store of each ingredient, and to see when, and **how much of**, an ingredient was last delivered into storage. - -Because of the 'how much of' part, we cannot simply record a last_delivery field in the raw_materials table. - -We will use a separate table to keep track of increments in inventory (raw material deliveries). - -```sql -CREATE TABLE raw_materials_deliveries ( - delivery_id INT PRIMARY KEY, - ingredient_id INT NOT NULL, - delivery_date DATE NOT NULL, - delivery_quantity INT NOT NULL, - unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml')), - FOREIGN KEY (ingredient_id) REFERENCES raw_materials(ingredient_id) -); -``` - -When recieving new inventory, we need to initiate a transaction that updates the inventory table, and adds a new row to the raw_mat_delivery table. - -### Pallets and orders - -> The cookies are baked in large quantities, and then quickly frozen and packaged in bags with 15 cookies in each bag. The bags are put into boxes, with 10 bags per box. Finally, the boxes are stacked on pallets, where each pallet contains 36 boxes. - -15 x 10 x 36 = 5400 cookies per pallet. So, to produce a pallet: calculate the total material cost and subtract it from the inventory. - -> The company only delivers to to wholesale Links to an external site. customers, and a typical order looks like “send 10 pallets of Tango cookies, and 6 pallets of Berliners to Kalaskakor AB” – pallets are the unit of all orders (i.e., you can’t break up a pallet in an order). - -This is reiterating the fact that 'pallet' is the atomic unit of orders. Furthermore: - -> A pallet is considered to be produced when the pallet label is read at the entrance to the deep-freeze storage. The pallet number, product name, and date and time of production are registered in the database. The pallet number is unique. - -Conceptually, what happens before the cookies arrive in the freezer is not interesting to us. We only care about the final pallets. The number of cookies per pallet is also of intrest, to keep track of the inventory (recipes and subsequent raw_materials subtractions are handled by the business logic). - -Either we have pallets in the freezer, or we make more pallets. If we do not have enough inventory to make a pallet, we can't make a pallet, and the order is rejected. - -```sql -CREATE TABLE pallets ( - pallet_id INT PRIMARY KEY, - cookie_id INT NOT NULL, - order_id INT NOT NULL, - status VARCHAR(50) NOT NULL CHECK (status IN ('freezer', 'delivered', 'blocked')), - production_date DATE NOT NULL, - FOREIGN KEY (cookie_id) REFERENCES cookie(cookie_id) - FOREIGN KEY (order_id) REFERENCES orders(order_id) -); -``` - -> When the truck is fully loaded, the driver receives a loading bill containing customer names, addresses, and the number of pallets of each product that is to be delivered to each customer. A transport may contain deliveries intended for different customers. - -This suggests that we may need to relate pallets to customers via a truck entity, however, this truck entity is never referenced, so we can omit it entirely. - -> On delivery, pallets are transported from the deep-freeze storeroom via a loading ramp to the freezer trucks – each truck loads 60 pallets. The entry to the loading ramp contains a bar code reader which reads the pallet label. Pallets must be loaded in production date order. - -Again, the truck as an entity is irrelevant and we only need a table to keep track of what pallet was delivered to what customer along with a date. - -```sql -``` - -> Orders must be registered in the database, and, for production planning purposes, the company must be able to see all orders which are to be delivered during a specific time period. - -Note that the individial pallets hold the delivery date. - -```sql -CREATE TABLE orders ( - order_id INT PRIMARY KEY, - customer_id INT NOT NULL, - cookie_id INT NOT NULL, - order_date DATE NOT NULL DEFAULT CURRENT_DATE CHECK (order_date >= CURRENT_DATE), - FOREIGN KEY (customer_id) REFERENCES customer(customer_id), - FOREIGN KEY (cookie_id) REFERENCES cookie(cookie_id) -); -``` - -> The company continuously take random samples among the products, and the samples are analyzed in their laboratory. If a sample doesn’t meet their quality standards, all pallets containing that product which have been produced during a specific time interval are blocked. A blocked pallet may not be delivered to customers. - -So, our pallet table needs a status column. This conveniently fits as an enum of 'freezer', 'delivered' and 'blocked'. - -> All pallets must be traceable, for instance, the company needs to be able to see all information about a pallet with a given number (the contents of the pallet, the location of the pallet, if the pallet is delivered and in that case to whom, etc.). They must also be able to see which pallets contain a certain product and which pallets have been produced during a certain time interval. - -This should all be possible with a simple join query. - -> Blocked products are of special interest. The company needs to find out **which products are blocked**, and also which pallets contain a certain blocked product. - -As well as: - -> Finally, they must be able to check **which pallets have been delivered** to a given customer, and the date and time of delivery. - -And: - -> Orders must be registered in the database, and, for production planning purposes, the company must be able to see all orders which are to be **delivered during a specific time period**. - -These are all trivial queries. diff --git a/app/Migrations/create-schema.sql b/app/Migrations/create-schema.sql index d5561ef..55cc874 100644 --- a/app/Migrations/create-schema.sql +++ b/app/Migrations/create-schema.sql @@ -1,124 +1,112 @@ -PRAGMA foreign_keys = OFF; - --- Drop everything... -DROP TABLE IF EXISTS pallets; -DROP TABLE IF EXISTS raw_materials_deliveries; -DROP TABLE IF EXISTS raw_materials; -DROP TABLE IF EXISTS orders; -DROP TABLE IF EXISTS customers; -DROP TABLE IF EXISTS cookies; - -------------------------------------------- --- Orders, deliveries and customers +-- Logistics/orders related tables -------------------------------------------- -- Our known customers, may need more fields CREATE TABLE IF NOT EXISTS customers ( - customer_id INTEGER PRIMARY KEY, - customer_name VARCHAR(50) NOT NULL, - customer_address VARCHAR(50) NOT NULL + customer_id int PRIMARY KEY, + customer_name varchar(100), + customer_address varchar(255) ); -- Orders from customers. +-- Keep in mind that the delivery_date may be NULL CREATE TABLE IF NOT EXISTS orders ( - order_id INTEGER PRIMARY KEY, - customer_id INT NOT NULL, - order_date DATE NOT NULL DEFAULT CURRENT_DATE CHECK (order_date >= CURRENT_DATE), - expected_delivery_date DATE NOT NULL, - FOREIGN KEY (customer_id) REFERENCES customers(customer_id) + order_id int PRIMARY KEY, + customer_id int, + order_datetime datetime DEFAULT NOW, + preferred_delivery_date DATE, --the table Delivery tells when the delivery is arrived + FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ); -CREATE TABLE IF NOT EXISTS order_spec ( - nbr_pallets INTEGER NOT NULL, - order_id INTEGER NOT NULL, - cookie_id INTEGER NOT NULL, - FOREIGN KEY (order_id) REFERENCES orders(order_id), - FOREIGN KEY (cookie_id) REFERENCES cookies(cookie_id), - PRIMARY KEY (order_id, cookie_id) +CREATE TABLE IF NOT EXISTS delivery ( + order_id INT, + truck_id INT, + delivery_datetime DATETIME, + PRIMARY KEY (order_id, truck_id), + FOREIGN KEY (order_id) REFERENCES orders(order_id) ); --------------------------------------------- --- Cookies, raw_materials and recipes --------------------------------------------- --- Notes: the unit type can be defined in terms --- of volume or weight instead. Here we choose --- to use static si-prefixes in relevant tables. --- Holds the different types of cookies we can make. -CREATE TABLE IF NOT EXISTS cookies ( - cookie_id INTEGER PRIMARY KEY, - cookie_name VARCHAR(50) NOT NULL UNIQUE +CREATE TABLE IF NOT EXISTS OrderSpec ( + order_id INT, + cookie_id INT, + quantity INT, + PRIMARY KEY (orderID, cookieID), + FOREIGN KEY (order_id) REFERENCES Orders(order_id), + FOREIGN KEY (cookie_id) REFERENCES Cookies(cookie_id) ); --- What types of raw_materials do we handle. --- raw_materials quantity tells us amount in stock -CREATE TABLE IF NOT EXISTS raw_materials ( - ingredient_id INTEGER PRIMARY KEY, - ingredient_name VARCHAR(50) NOT NULL UNIQUE, - ingredient_quantity INT NOT NULL, - unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml')) -); - --- What raw_materials are in what cookies? --- Glues together the cookies and raw_materials, a 'recipe'. -CREATE TABLE IF NOT EXISTS recipe_contents ( - cookie_id INT NOT NULL, - ingredient_id INT NOT NULL, - quantity INT NOT NULL, - unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml')), - PRIMARY KEY (cookie_id, ingredient_id), - FOREIGN KEY (cookie_id) REFERENCES cookies(cookie_id), - FOREIGN KEY (ingredient_id) REFERENCES raw_materials(ingredient_id) -); - --- When did we get the raw_materials? -CREATE TABLE IF NOT EXISTS raw_materials_deliveries ( - delivery_id INTEGER PRIMARY KEY, - ingredient_id INT NOT NULL, - delivery_date DATE NOT NULL, - delivery_quantity INT NOT NULL, - unit VARCHAR(50) NOT NULL CHECK (unit IN ('g', 'ml')), - FOREIGN KEY (ingredient_id) REFERENCES raw_materials(ingredient_id) -); - --------------------------------------------- --- Pallet related tables --------------------------------------------- - --- Pallets are used to store cookies for delivery --- Order related columns are unused for now. -CREATE TABLE IF NOT EXISTS pallets ( - pallet_id INTEGER PRIMARY KEY, - cookie_id INT NOT NULL, - status VARCHAR(50) NOT NULL CHECK (status IN ('freezer', 'delivered', 'blocked')), - production_date DATE NOT NULL DEFAULT NOW, +CREATE TABLE IF NOT EXISTS pallet ( + pallet_id INT PRIMARY KEY, + order_id INT, + cookie_id INT, + production_datetime DATETIME, + is_blocked BOOLEAN, + pallet_location VARCHAR(255), + FOREIGN KEY (order_id) REFERENCES Orders(order_id), FOREIGN KEY (cookie_id) REFERENCES cookies(cookie_id) ); --- Connects pallets to orders -CREATE TABLE IF NOT EXISTS deliveries ( - delivery_date DATE DEFAULT NOW, - order_id INT NOT NULL, - pallet_id INT NOT NULL, - FOREIGN KEY (order_id) REFERENCES orders(order_id), - FOREIGN KEY (pallet_id) REFERENCES pallets(pallet_id), - PRIMARY KEY (order_id, pallet_id) + +-------------------------------------------- +-- Recipe/Cookie related tables +-------------------------------------------- + +CREATE TABLE IF NOT EXISTS cookies ( + cookie_id INT PRIMARY KEY, + recipe_id INT, + cookie_name VARCHAR(255), + price INT, + FOREIGN KEY (recipeID) REFERENCES Recipe(recipeID) ); --------------------------------------------- --- Views --------------------------------------------- --- Pallet -CREATE VIEW IF NOT EXISTS pallets_view AS -SELECT - pallets.pallet_id, - cookie_name, - status, - production_date, - delivery_date -FROM pallets -LEFT JOIN cookies ON pallets.cookie_id = cookies.cookie_id -LEFT JOIN deliveries ON pallets.pallet_id = deliveries.pallet_id; +-- Recipes for all the cookies (essentially a list of cookies) +CREATE TABLE IF NOT EXISTS recipes ( + recipe_id int PRIMARY KEY, + cookie_id int, + recipe_name varchar(100) UNIQUE, -- Cookie name + FOREIGN KEY (cookie_id) REFERENCES cookies(cookie_id) +); + +--weak table which descirbies the amout of the ingredient +--needed for a recipe +CREATE TABLE RecipeIngredients ( + ingredient_id INT, + recipe_id INT, + quantity FLOAT, + PRIMARY KEY (ingredientID, recipeID), + FOREIGN KEY (ingredient_id) REFERENCES ingredients(ingredient_id), + FOREIGN KEY (recipe_id) REFERENCES recipes(recipe_id) +); + +-- "The company has a raw materials warehouse in which +-- all ingredients used in their production are stored." + +-- Describes ingredients and stock. +-- Each ingredient has 'amount' of 'unit' in stock +CREATE TABLE IF NOT EXISTS ingredients ( + ingredient_id int PRIMARY KEY, + ingredient_name varchar(100), + in_stock float, + unit varchar(50), + amout_purchase float, + last_delivery DATETIME +); + +-- use this table instead of amount_purchase and last_delivery attributes +-- in ingrdients table if the assigment want us to have a purchase history +-- for every ingredient order. +/* +CREATE TABLE IF NOT EXISTS ingredient_purchase( + ingredientOrder_id + ingredient_id int, + amout_purchase float, + delivery_datetime DATETIME, + FOREIGN KEY(ingreident_id) REFERENCES ingridients(ingridient_id) +); +*/ + + -PRAGMA foreign_keys = ON; \ No newline at end of file diff --git a/app/Migrations/initial-data.sql b/app/Migrations/initial-data.sql index 25de406..1fd9348 100644 --- a/app/Migrations/initial-data.sql +++ b/app/Migrations/initial-data.sql @@ -12,7 +12,7 @@ VALUES (8, 'Småbröd AB', 'Malmö'); INSERT -OR IGNORE INTO cookies (cookie_name) +OR IGNORE INTO recipes (recipe_name) VALUES ('Nut ring'), ('Nut cookie'), @@ -22,7 +22,7 @@ VALUES ('Berliner'); INSERT -OR IGNORE INTO raw_materials(ingredient_name, ingredient_quantity, unit) +OR IGNORE INTO ingredients (ingredient_name, amount, unit) VALUES ('Bread crumbs', 500000, 'g'), ('Butter', 500000, 'g'), diff --git a/app/bin/main/krusty/Database.class b/app/bin/main/krusty/Database.class new file mode 100644 index 0000000..a186cf0 Binary files /dev/null and b/app/bin/main/krusty/Database.class differ diff --git a/app/bin/main/krusty/DefaultRecipes.class b/app/bin/main/krusty/DefaultRecipes.class new file mode 100644 index 0000000..d62481c Binary files /dev/null and b/app/bin/main/krusty/DefaultRecipes.class differ diff --git a/app/bin/main/krusty/Ingredient.class b/app/bin/main/krusty/Ingredient.class new file mode 100644 index 0000000..6998ef3 Binary files /dev/null and b/app/bin/main/krusty/Ingredient.class differ diff --git a/app/bin/main/krusty/Jsonizer.class b/app/bin/main/krusty/Jsonizer.class new file mode 100644 index 0000000..de69f3c Binary files /dev/null and b/app/bin/main/krusty/Jsonizer.class differ diff --git a/app/bin/main/krusty/Recipe.class b/app/bin/main/krusty/Recipe.class new file mode 100644 index 0000000..10f0aff Binary files /dev/null and b/app/bin/main/krusty/Recipe.class differ diff --git a/app/bin/main/krusty/ServerMain.class b/app/bin/main/krusty/ServerMain.class new file mode 100644 index 0000000..4ef5f51 Binary files /dev/null and b/app/bin/main/krusty/ServerMain.class differ diff --git a/app/bin/main/public/index.html b/app/bin/main/public/index.html new file mode 100644 index 0000000..acc5827 --- /dev/null +++ b/app/bin/main/public/index.html @@ -0,0 +1 @@ +Krusty
\ No newline at end of file diff --git a/app/bin/main/public/static/css/main.59f83d58.chunk.css b/app/bin/main/public/static/css/main.59f83d58.chunk.css new file mode 100644 index 0000000..466b853 --- /dev/null +++ b/app/bin/main/public/static/css/main.59f83d58.chunk.css @@ -0,0 +1,2 @@ +div.App{width:800px;margin:0 auto}@media screen and (max-width:800px){div.App{width:100%}}body{margin:10px;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace} +/*# sourceMappingURL=main.59f83d58.chunk.css.map */ \ No newline at end of file diff --git a/app/bin/main/public/static/css/main.59f83d58.chunk.css.map b/app/bin/main/public/static/css/main.59f83d58.chunk.css.map new file mode 100644 index 0000000..a9a9d21 --- /dev/null +++ b/app/bin/main/public/static/css/main.59f83d58.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.css"],"names":[],"mappings":"AAAA,QACC,WAAY,CACZ,aACD,CAEA,oCACE,QACE,UACF,CACF,CAEA,KACE,WAAY,CACZ,SAAU,CACV,mJAEY,CACZ,kCAAmC,CACnC,iCACF,CAEA,KACE,yEAEF","file":"main.59f83d58.chunk.css","sourcesContent":["div.App {\n\twidth: 800px;\n\tmargin: 0 auto;\n}\n\n@media screen and (max-width: 800px) {\n div.App {\n width: 100%;\n }\n}\n\nbody {\n margin: 10px;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, \"Courier New\",\n monospace;\n}\n"]} \ No newline at end of file diff --git a/app/bin/main/public/static/js/2.0a7bcc05.chunk.js b/app/bin/main/public/static/js/2.0a7bcc05.chunk.js new file mode 100644 index 0000000..26998bc --- /dev/null +++ b/app/bin/main/public/static/js/2.0a7bcc05.chunk.js @@ -0,0 +1,3 @@ +/*! For license information please see 2.0a7bcc05.chunk.js.LICENSE.txt */ +(this.webpackJsonpfrontend=this.webpackJsonpfrontend||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(71)},function(e,t,n){"use strict";function r(){return(r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},function(e,t,n){"use strict";function r(e){var t,n,o="";if(e)if("object"===typeof e)if(Array.isArray(e))for(t=0;t<+~=|^:(),"'`\s])/g,E="undefined"!==typeof CSS&&CSS.escape,S=function(e){return E?E(e):e.replace(k,"\\$1")},O=function(){function e(e,t,n){this.type="style",this.key=void 0,this.isProcessed=!1,this.style=void 0,this.renderer=void 0,this.renderable=void 0,this.options=void 0;var r=n.sheet,o=n.Renderer;this.key=e,this.options=n,this.style=t,r?this.renderer=r.renderer:o&&(this.renderer=new o)}return e.prototype.prop=function(e,t,n){if(void 0===t)return this.style[e];var r=!!n&&n.force;if(!r&&this.style[e]===t)return this;var o=t;n&&!1===n.process||(o=this.options.jss.plugins.onChangeValue(t,e,this));var a=null==o||!1===o,i=e in this.style;if(a&&!i&&!r)return this;var l=a&&i;if(l?delete this.style[e]:this.style[e]=o,this.renderable&&this.renderer)return l?this.renderer.removeProperty(this.renderable,e):this.renderer.setProperty(this.renderable,e,o),this;var u=this.options.sheet;return u&&u.attached,this},e}(),C=function(e){function t(t,n,r){var o;(o=e.call(this,t,n,r)||this).selectorText=void 0,o.id=void 0,o.renderable=void 0;var a=r.selector,i=r.scoped,l=r.sheet,u=r.generateId;return a?o.selectorText=a:!1!==i&&(o.id=u(Object(p.a)(Object(p.a)(o)),l),o.selectorText="."+S(o.id)),o}Object(f.a)(t,e);var n=t.prototype;return n.applyTo=function(e){var t=this.renderer;if(t){var n=this.toJSON();for(var r in n)t.setProperty(e,r,n[r])}return this},n.toJSON=function(){var e={};for(var t in this.style){var n=this.style[t];"object"!==typeof n?e[t]=n:Array.isArray(n)&&(e[t]=g(n))}return e},n.toString=function(e){var t=this.options.sheet,n=!!t&&t.options.link?Object(r.a)({},e,{allowEmpty:!0}):e;return w(this.selectorText,this.style,n)},Object(d.a)(t,[{key:"selector",set:function(e){if(e!==this.selectorText){this.selectorText=e;var t=this.renderer,n=this.renderable;if(n&&t)t.setSelector(n,e)||t.replaceRule(n,this)}},get:function(){return this.selectorText}}]),t}(O),T={onCreateRule:function(e,t,n){return"@"===e[0]||n.parent&&"keyframes"===n.parent.type?null:new C(e,t,n)}},j={indent:1,children:!0},P=/@([\w-]+)/,R=function(){function e(e,t,n){this.type="conditional",this.at=void 0,this.key=void 0,this.query=void 0,this.rules=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0,this.key=e,this.query=n.name;var o=e.match(P);for(var a in this.at=o?o[1]:"unknown",this.options=n,this.rules=new J(Object(r.a)({},n,{parent:this})),t)this.rules.add(a,t[a]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.indexOf=function(e){return this.rules.indexOf(e)},t.addRule=function(e,t,n){var r=this.rules.add(e,t,n);return r?(this.options.jss.plugins.onProcessRule(r),r):null},t.toString=function(e){if(void 0===e&&(e=j),null==e.indent&&(e.indent=j.indent),null==e.children&&(e.children=j.children),!1===e.children)return this.query+" {}";var t=this.rules.toString(e);return t?this.query+" {\n"+t+"\n}":""},e}(),N=/@media|@supports\s+/,M={onCreateRule:function(e,t,n){return N.test(e)?new R(e,t,n):null}},_={indent:1,children:!0},z=/@keyframes\s+([\w-]+)/,A=function(){function e(e,t,n){this.type="keyframes",this.at="@keyframes",this.key=void 0,this.name=void 0,this.id=void 0,this.rules=void 0,this.options=void 0,this.isProcessed=!1,this.renderable=void 0;var o=e.match(z);o&&o[1]?this.name=o[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=n;var a=n.scoped,i=n.sheet,l=n.generateId;for(var u in this.id=!1===a?this.name:S(l(this,i)),this.rules=new J(Object(r.a)({},n,{parent:this})),t)this.rules.add(u,t[u],Object(r.a)({},n,{parent:this}));this.rules.process()}return e.prototype.toString=function(e){if(void 0===e&&(e=_),null==e.indent&&(e.indent=_.indent),null==e.children&&(e.children=_.children),!1===e.children)return this.at+" "+this.id+" {}";var t=this.rules.toString(e);return t&&(t="\n"+t+"\n"),this.at+" "+this.id+" {"+t+"}"},e}(),I=/@keyframes\s+/,D=/\$([\w-]+)/g,F=function(e,t){return"string"===typeof e?e.replace(D,(function(e,n){return n in t?t[n]:e})):e},L=function(e,t,n){var r=e[t],o=F(r,n);o!==r&&(e[t]=o)},W={onCreateRule:function(e,t,n){return"string"===typeof e&&I.test(e)?new A(e,t,n):null},onProcessStyle:function(e,t,n){return"style"===t.type&&n?("animation-name"in e&&L(e,"animation-name",n.keyframes),"animation"in e&&L(e,"animation",n.keyframes),e):e},onChangeValue:function(e,t,n){var r=n.options.sheet;if(!r)return e;switch(t){case"animation":case"animation-name":return F(e,r.keyframes);default:return e}}},U=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),o=0;o=this.index)t.push(e);else for(var r=0;rn)return void t.splice(r,0,e)},t.reset=function(){this.registry=[]},t.remove=function(e){var t=this.registry.indexOf(e);this.registry.splice(t,1)},t.toString=function(e){for(var t=void 0===e?{}:e,n=t.attached,r=Object(h.a)(t,["attached"]),o="",a=0;a0){var n=function(e,t){for(var n=0;nt.index&&r.options.insertionPoint===t.insertionPoint)return r}return null}(t,e);if(n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element};if((n=function(e,t){for(var n=e.length-1;n>=0;n--){var r=e[n];if(r.attached&&r.options.insertionPoint===t.insertionPoint)return r}return null}(t,e))&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element.nextSibling}}var r=e.insertionPoint;if(r&&"string"===typeof r){var o=function(e){for(var t=de(),n=0;nr)&&(n=r);try{if("insertRule"in e)e.insertRule(t,n);else if("appendRule"in e){e.appendRule(t)}}catch(o){return!1}return e.cssRules[n]},me=function(){function e(e){this.getPropertyValue=le,this.setProperty=ue,this.removeProperty=se,this.setSelector=ce,this.element=void 0,this.sheet=void 0,this.hasInsertedRules=!1,e&&te.add(e),this.sheet=e;var t=this.sheet?this.sheet.options:{},n=t.media,r=t.meta,o=t.element;this.element=o||function(){var e=document.createElement("style");return e.textContent="\n",e}(),this.element.setAttribute("data-jss",""),n&&this.element.setAttribute("media",n),r&&this.element.setAttribute("data-meta",r);var a=pe();a&&this.element.setAttribute("nonce",a)}var t=e.prototype;return t.attach=function(){if(!this.element.parentNode&&this.sheet){!function(e,t){var n=t.insertionPoint,r=fe(t);if(!1!==r&&r.parent)r.parent.insertBefore(e,r.node);else if(n&&"number"===typeof n.nodeType){var o=n,a=o.parentNode;a&&a.insertBefore(e,o.nextSibling)}else de().appendChild(e)}(this.element,this.sheet.options);var e=Boolean(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&e&&(this.hasInsertedRules=!1,this.deploy())}},t.detach=function(){var e=this.element.parentNode;e&&e.removeChild(this.element)},t.deploy=function(){var e=this.sheet;e&&(e.options.link?this.insertRules(e.rules):this.element.textContent="\n"+e.toString()+"\n")},t.insertRules=function(e,t){for(var n=0;n-1){var o=Mt[e];if(!Array.isArray(o))return lt+vt(o)in t&&ut+o;if(!r)return!1;for(var a=0;at?1:-1:e.length-t.length};return{onProcessStyle:function(t,n){if("style"!==n.type)return t;for(var r={},o=Object.keys(t).sort(e),a=0;a0&&void 0!==arguments[0]?arguments[0]:{},t=e.disableGlobal,n=void 0!==t&&t,r=e.productionPrefix,o=void 0===r?"jss":r,a=e.seed,i=void 0===a?"":a,l=""===i?"":"".concat(i,"-"),u=0;return function(e,t){u+=1;var r=t.options.name;if(r&&0===r.indexOf("Mui")&&!t.options.link&&!n){if(-1!==Se.indexOf(e.key))return"Mui-".concat(e.key);var a="".concat(l).concat(r,"-").concat(e.key);return t.options.theme[Ee.a]&&""===i?"".concat(a,"-").concat(u):a}return"".concat(l).concat(o).concat(u)}}(),jss:Gt,sheetsCache:null,sheetsManager:new Map,sheetsRegistry:null},Zt=i.a.createContext(Jt);var en=-1e9;function tn(){return en+=1}n(29);var nn=n(134);var rn=function(e){var t="function"===typeof e;return{create:function(n,o){var a;try{a=t?e(n):e}catch(u){throw u}if(!o||!n.overrides||!n.overrides[o])return a;var i=n.overrides[o],l=Object(r.a)({},a);return Object.keys(i).forEach((function(e){l[e]=Object(nn.a)(l[e],i[e])})),l},options:{}}},on={};function an(e,t,n){var r=e.state;if(e.stylesOptions.disableGeneration)return t||{};r.cacheClasses||(r.cacheClasses={value:null,lastProp:null,lastJSS:{}});var o=!1;return r.classes!==r.cacheClasses.lastJSS&&(r.cacheClasses.lastJSS=r.classes,o=!0),t!==r.cacheClasses.lastProp&&(r.cacheClasses.lastProp=t,o=!0),o&&(r.cacheClasses.value=Object(xe.a)({baseClasses:r.cacheClasses.lastJSS,newClasses:t,Component:n})),r.cacheClasses.value}function ln(e,t){var n=e.state,o=e.theme,a=e.stylesOptions,i=e.stylesCreator,l=e.name;if(!a.disableGeneration){var u=we.get(a.sheetsManager,i,o);u||(u={refs:0,staticSheet:null,dynamicStyles:null},we.set(a.sheetsManager,i,o,u));var s=Object(r.a)({},i.options,{},a,{theme:o,flip:"boolean"===typeof a.flip?a.flip:"rtl"===o.direction});s.generateId=s.serverGenerateClassName||s.generateClassName;var c=a.sheetsRegistry;if(0===u.refs){var d;a.sheetsCache&&(d=we.get(a.sheetsCache,i,o));var f=i.create(o,l);d||((d=a.jss.createStyleSheet(f,Object(r.a)({link:!1},s))).attach(),a.sheetsCache&&we.set(a.sheetsCache,i,o,d)),c&&c.add(d),u.staticSheet=d,u.dynamicStyles=function e(t){var n=null;for(var r in t){var o=t[r],a=typeof o;if("function"===a)n||(n={}),n[r]=o;else if("object"===a&&null!==o&&!Array.isArray(o)){var i=e(o);i&&(n||(n={}),n[r]=i)}}return n}(f)}if(u.dynamicStyles){var p=a.jss.createStyleSheet(u.dynamicStyles,Object(r.a)({link:!0},s));p.update(t),p.attach(),n.dynamicSheet=p,n.classes=Object(xe.a)({baseClasses:u.staticSheet.classes,newClasses:p.classes}),c&&c.add(p)}else n.classes=u.staticSheet.classes;u.refs+=1}}function un(e,t){var n=e.state;n.dynamicSheet&&n.dynamicSheet.update(t)}function sn(e){var t=e.state,n=e.theme,r=e.stylesOptions,o=e.stylesCreator;if(!r.disableGeneration){var a=we.get(r.sheetsManager,o,n);a.refs-=1;var i=r.sheetsRegistry;0===a.refs&&(we.delete(r.sheetsManager,o,n),r.jss.removeStyleSheet(a.staticSheet),i&&i.remove(a.staticSheet)),t.dynamicSheet&&(r.jss.removeStyleSheet(t.dynamicSheet),i&&i.remove(t.dynamicSheet))}}function cn(e,t){var n,r=i.a.useRef([]),o=i.a.useMemo((function(){return{}}),t);r.current!==o&&(r.current=o,n=e()),i.a.useEffect((function(){return function(){n&&n()}}),[o])}var dn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.name,a=t.classNamePrefix,l=t.Component,u=t.defaultTheme,s=void 0===u?on:u,c=Object(o.a)(t,["name","classNamePrefix","Component","defaultTheme"]),d=rn(e),f=n||a||"makeStyles";return d.options={index:tn(),name:n,meta:f,classNamePrefix:f},function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object(ke.a)()||s,o=Object(r.a)({},i.a.useContext(Zt),{},c),a=i.a.useRef(),u=i.a.useRef();return cn((function(){var r={name:n,state:{},stylesCreator:d,stylesOptions:o,theme:t};return ln(r,e),u.current=!1,a.current=r,function(){sn(r)}}),[t,d]),i.a.useEffect((function(){u.current&&un(a.current,e),u.current=!0})),an(a.current,e.classes,l)}},fn=n(137),pn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function(n){var a=t.defaultTheme,l=t.withTheme,s=void 0!==l&&l,c=t.name,d=Object(o.a)(t,["defaultTheme","withTheme","name"]);var f=c,p=dn(e,Object(r.a)({defaultTheme:a,Component:n,name:c||n.displayName,classNamePrefix:f},d)),h=i.a.forwardRef((function(e,t){e.classes;var l,u=e.innerRef,d=Object(o.a)(e,["classes","innerRef"]),f=p(e),h=d;return("string"===typeof c||s)&&(l=Object(ke.a)()||a,c&&(h=Object(fn.a)({theme:l,name:c,props:d})),s&&!h.theme&&(h.theme=l)),i.a.createElement(n,Object(r.a)({ref:u||t,classes:f},h))}));return h.defaultProps=n.defaultProps,u()(h,n),h}},hn=n(41);t.a=function(e,t){return pn(e,Object(r.a)({defaultTheme:hn.a},t))}},function(e,t,n){e.exports=n(94)()},function(e,t,n){"use strict";function r(e){return e.charAt(0).toUpperCase()+e.slice(1)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),o=n.n(r),a=n(27);function i(e,t){return o.a.useMemo((function(){return null==e&&null==t?null:function(n){Object(a.a)(e,n),Object(a.a)(t,n)}}),[e,t])}},function(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(72)},,function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(t,e),n)}function o(e){if(e.type)return e;if("#"===e.charAt(0))return o(function(e){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length/3,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map((function(e){return e+e}))),n?"rgb(".concat(n.map((function(e){return parseInt(e,16)})).join(", "),")"):""}(e));var t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla"].indexOf(n))throw new Error(["Material-UI: unsupported `".concat(e,"` color."),"We support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()."].join("\n"));var r=e.substring(t+1,e.length-1).split(",");return{type:n,values:r=r.map((function(e){return parseFloat(e)}))}}function a(e){var t=e.type,n=e.values;return-1!==t.indexOf("rgb")?n=n.map((function(e,t){return t<3?parseInt(e,10):e})):-1!==t.indexOf("hsl")&&(n[1]="".concat(n[1],"%"),n[2]="".concat(n[2],"%")),"".concat(t,"(").concat(n.join(", "),")")}function i(e,t){var n=l(e),r=l(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}function l(e){var t="hsl"===(e=o(e)).type?o(function(e){var t=(e=o(e)).values,n=t[0],r=t[1]/100,i=t[2]/100,l=r*Math.min(i,1-i),u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return i-l*Math.max(Math.min(t-3,9-t,1),-1)},s="rgb",c=[Math.round(255*u(0)),Math.round(255*u(8)),Math.round(255*u(4))];return"hsla"===e.type&&(s+="a",c.push(t[3])),a({type:s,values:c})}(e)).values:e.values;return t=t.map((function(e){return(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4)})),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function u(e,t){return e=o(e),t=r(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),e.values[3]=t,a(e)}function s(e,t){if(e=o(e),t=r(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]*=1-t;return a(e)}function c(e,t){if(e=o(e),t=r(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(var n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;return a(e)}n.d(t,"c",(function(){return i})),n.d(t,"b",(function(){return u})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return c}))},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){for(var n=0;n=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(29),o=n(26);function a(e,t){return!t||"object"!==Object(r.a)(t)&&"function"!==typeof t?Object(o.a)(e):t}},function(e,t,n){"use strict";function r(e){return(r=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var r=n(62),o=n(41);function a(){return Object(r.a)()||o.a}},function(e,t,n){"use strict";var r=n(0),o=n.n(r).a.createContext();t.a=o},function(e,t,n){"use strict";function r(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:["all"],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.duration,l=void 0===n?a.standard:n,u=t.easing,s=void 0===u?o.easeInOut:u,c=t.delay,d=void 0===c?0:c;Object(r.a)(t,["duration","easing","delay"]);return(Array.isArray(e)?e:[e]).map((function(e){return"".concat(e," ").concat("string"===typeof l?l:i(l)," ").concat(s," ").concat("string"===typeof d?d:i(d))})).join(",")},getAutoHeightDuration:function(e){if(!e)return 0;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}}},function(e,t,n){"use strict";function r(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){"function"===typeof e?e(t):e&&(e.current=t)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return o}));var r=function(e){return e.scrollTop};function o(e,t){var n=e.timeout,r=e.style,o=void 0===r?{}:r;return{duration:o.transitionDuration||"number"===typeof n?n:n[t.mode]||0,delay:o.transitionDelay}}},function(e,t,n){"use strict";function r(e){return(r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";var r=n(0),o=n.n(r);t.a=o.a.createContext(null)},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n(13);function o(e){return Object(r.a)(e).defaultView||window}},function(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;n=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(a)})),e.exports=l}).call(this,n(81))},function(e,t,n){"use strict";var r=n(14),o=n(83),a=n(53),i=n(85),l=n(88),u=n(89),s=n(57);e.exports=function(e){return new Promise((function(t,c){var d=e.data,f=e.headers;r.isFormData(d)&&delete f["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";f.Authorization="Basic "+btoa(h+":"+m)}var v=i(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),a(v,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?l(p.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:e,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(s(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var b=n(90),y=(e.withCredentials||u(v))&&e.xsrfCookieName?b.read(e.xsrfCookieName):void 0;y&&(f[e.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(f,(function(e,t){"undefined"===typeof d&&"content-type"===t.toLowerCase()?delete f[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(g){if("json"!==e.responseType)throw g}"function"===typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"===typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),c(e),p=null)})),void 0===d&&(d=null),p.send(d)}))}},function(e,t,n){"use strict";var r=n(84);e.exports=function(e,t,n,o,a){var i=new Error(e);return r(i,t,n,o,a)}},function(e,t,n){"use strict";var r=n(14);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],a=["headers","auth","proxy"],i=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,(function(e){"undefined"!==typeof t[e]&&(n[e]=t[e])})),r.forEach(a,(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):"undefined"!==typeof t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):"undefined"!==typeof e[o]&&(n[o]=e[o])})),r.forEach(i,(function(r){"undefined"!==typeof t[r]?n[r]=t[r]:"undefined"!==typeof e[r]&&(n[r]=e[r])}));var l=o.concat(a).concat(i),u=Object.keys(t).filter((function(e){return-1===l.indexOf(e)}));return r.forEach(u,(function(r){"undefined"!==typeof t[r]?n[r]=t[r]:"undefined"!==typeof e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";var r=n(37),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function u(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var s=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=u(t),m=u(n),v=0;v0?r:e)-s/100).concat(a,")")},between:f,only:function(e){return f(e,e)},width:function(e){return n[e]}},c)}function s(e,t,n){var o;return Object(i.a)({gutters:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object(i.a)({paddingLeft:t(2),paddingRight:t(2)},n,Object(r.a)({},e.up("sm"),Object(i.a)({paddingLeft:t(3),paddingRight:t(3)},n[e.up("sm")])))},toolbar:(o={minHeight:56},Object(r.a)(o,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),Object(r.a)(o,e.up("sm"),{minHeight:64}),o)},n)}var c={black:"#000",white:"#fff"},d={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#d5d5d5",A200:"#aaaaaa",A400:"#303030",A700:"#616161"},f={50:"#e8eaf6",100:"#c5cae9",200:"#9fa8da",300:"#7986cb",400:"#5c6bc0",500:"#3f51b5",600:"#3949ab",700:"#303f9f",800:"#283593",900:"#1a237e",A100:"#8c9eff",A200:"#536dfe",A400:"#3d5afe",A700:"#304ffe"},p={50:"#fce4ec",100:"#f8bbd0",200:"#f48fb1",300:"#f06292",400:"#ec407a",500:"#e91e63",600:"#d81b60",700:"#c2185b",800:"#ad1457",900:"#880e4f",A100:"#ff80ab",A200:"#ff4081",A400:"#f50057",A700:"#c51162"},h=n(44),m={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},v={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},b={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},y=n(10),g={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.54)",disabled:"rgba(0, 0, 0, 0.38)",hint:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:c.white,default:d[50]},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpaciy:.12}},x={text:{primary:c.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",hint:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:d[800],default:"#303030"},action:{active:c.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpaciy:.24}};function w(e,t,n,r){e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=Object(y.d)(e.main,r):"dark"===t&&(e.dark=Object(y.a)(e.main,1.5*r)))}function k(e){var t=e.primary,n=void 0===t?{light:f[300],main:f[500],dark:f[700]}:t,r=e.secondary,l=void 0===r?{light:p.A200,main:p.A400,dark:p.A700}:r,u=e.error,s=void 0===u?{light:h.a[300],main:h.a[500],dark:h.a[700]}:u,k=e.warning,E=void 0===k?{light:m[300],main:m[500],dark:m[700]}:k,S=e.info,O=void 0===S?{light:v[300],main:v[500],dark:v[700]}:S,C=e.success,T=void 0===C?{light:b[300],main:b[500],dark:b[700]}:C,j=e.type,P=void 0===j?"light":j,R=e.contrastThreshold,N=void 0===R?3:R,M=e.tonalOffset,_=void 0===M?.2:M,z=Object(o.a)(e,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function A(e){if(!e)throw new TypeError("Material-UI: missing background argument in getContrastText(".concat(e,")."));return Object(y.c)(e,x.text.primary)>=N?x.text.primary:g.text.primary}function I(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:500,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:300,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:700;return!(e=Object(i.a)({},e)).main&&e[t]&&(e.main=e[t]),w(e,"light",n,_),w(e,"dark",r,_),e.contrastText||(e.contrastText=A(e.main)),e}var D={dark:x,light:g};return Object(a.a)(Object(i.a)({common:c,type:P,primary:I(n),secondary:I(l,"A400","A200","A700"),error:I(s),warning:I(E),info:I(O),success:I(T),grey:d,contrastThreshold:N,getContrastText:A,augmentColor:I,tonalOffset:_},D[P]),z)}function E(e){return Math.round(1e5*e)/1e5}var S={textTransform:"uppercase"};function O(e,t){var n="function"===typeof t?t(e):t,r=n.fontFamily,l=void 0===r?'"Roboto", "Helvetica", "Arial", sans-serif':r,u=n.fontSize,s=void 0===u?14:u,c=n.fontWeightLight,d=void 0===c?300:c,f=n.fontWeightRegular,p=void 0===f?400:f,h=n.fontWeightMedium,m=void 0===h?500:h,v=n.fontWeightBold,b=void 0===v?700:v,y=n.htmlFontSize,g=void 0===y?16:y,x=n.allVariants,w=n.pxToRem,k=Object(o.a)(n,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]);var O=s/14,C=w||function(e){return"".concat(e/g*O,"rem")},T=function(e,t,n,r,o){return Object(i.a)({fontFamily:l,fontWeight:e,fontSize:C(t),lineHeight:n},'"Roboto", "Helvetica", "Arial", sans-serif'===l?{letterSpacing:"".concat(E(r/t),"em")}:{},{},o,{},x)},j={h1:T(d,96,1.167,-1.5),h2:T(d,60,1.2,-.5),h3:T(p,48,1.167,0),h4:T(p,34,1.235,.25),h5:T(p,24,1.334,0),h6:T(m,20,1.6,.15),subtitle1:T(p,16,1.75,.15),subtitle2:T(m,14,1.57,.1),body1:T(p,16,1.5,.15),body2:T(p,14,1.43,.15),button:T(m,14,1.75,.4,S),caption:T(p,12,1.66,.4),overline:T(p,12,2.66,1,S)};return Object(a.a)(Object(i.a)({htmlFontSize:g,pxToRem:C,round:E,fontFamily:l,fontSize:s,fontWeightLight:d,fontWeightRegular:p,fontWeightMedium:m,fontWeightBold:b},j),k,{clone:!1})}function C(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}var T=["none",C(0,2,1,-1,0,1,1,0,0,1,3,0),C(0,3,1,-2,0,2,2,0,0,1,5,0),C(0,3,3,-2,0,3,4,0,0,1,8,0),C(0,2,4,-1,0,4,5,0,0,1,10,0),C(0,3,5,-1,0,5,8,0,0,1,14,0),C(0,3,5,-1,0,6,10,0,0,1,18,0),C(0,4,5,-2,0,7,10,1,0,2,16,1),C(0,5,5,-3,0,8,10,1,0,3,14,2),C(0,5,6,-3,0,9,12,1,0,3,16,2),C(0,6,6,-3,0,10,14,1,0,4,18,3),C(0,6,7,-4,0,11,15,1,0,4,20,3),C(0,7,8,-4,0,12,17,2,0,5,22,4),C(0,7,8,-4,0,13,19,2,0,5,24,4),C(0,7,9,-4,0,14,21,2,0,5,26,4),C(0,8,9,-5,0,15,22,2,0,6,28,5),C(0,8,10,-5,0,16,24,2,0,6,30,5),C(0,8,11,-5,0,17,26,2,0,6,32,5),C(0,9,11,-5,0,18,28,2,0,7,34,6),C(0,9,12,-6,0,19,29,2,0,7,36,6),C(0,10,13,-6,0,20,31,3,0,8,38,7),C(0,10,13,-6,0,21,33,3,0,8,40,7),C(0,10,14,-6,0,22,35,3,0,8,42,7),C(0,11,14,-7,0,23,36,3,0,9,44,8),C(0,11,15,-7,0,24,38,3,0,9,46,8)],j={borderRadius:4};function P(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;if(t.mui)return t;e="function"===typeof t?t:function(e){return t*e};var n=function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,r=e.mixins,i=void 0===r?{}:r,l=e.palette,c=void 0===l?{}:l,d=e.spacing,f=e.typography,p=void 0===f?{}:f,h=Object(o.a)(e,["breakpoints","mixins","palette","spacing","typography"]),m=k(c),v=u(n),b=P(d),y=Object(a.a)({breakpoints:v,direction:"ltr",mixins:s(v,b,i),overrides:{},palette:m,props:{},shadows:T,typography:O(m,p),spacing:b,shape:j,transitions:R.a,zIndex:N.a},h),g=arguments.length,x=new Array(g>1?g-1:0),w=1;wN.length&&N.push(e)}function z(e,t,n){return null==e?0:function e(t,n,r,o){var l=typeof t;"undefined"!==l&&"boolean"!==l||(t=null);var u=!1;if(null===t)u=!0;else switch(l){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case a:case i:u=!0}}if(u)return r(o,t,""===n?"."+A(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s