diff --git a/404.html b/404.html index 354fcb3ce..9dd822e12 100644 --- a/404.html +++ b/404.html @@ -48,4 +48,4 @@ } } }) -

NOT FOUND

Oops! This page has either been taken down or does not exist

bowimg
With lovefrom Hack
\ No newline at end of file +

NOT FOUND

Oops! This page has either been taken down or does not exist

bowimg
With lovefrom Hack
\ No newline at end of file diff --git a/404/index.html b/404/index.html index 8c3d229c3..8f3999ce9 100644 --- a/404/index.html +++ b/404/index.html @@ -48,4 +48,4 @@ } } }) -

NOT FOUND

Oops! This page has either been taken down or does not exist

bowimg
With lovefrom Hack
\ No newline at end of file +

NOT FOUND

Oops! This page has either been taken down or does not exist

bowimg
With lovefrom Hack
\ No newline at end of file diff --git a/about/index.html b/about/index.html index 2a3b3bc9d..c7d13fe86 100644 --- a/about/index.html +++ b/about/index.html @@ -48,7 +48,7 @@ } } }) -

Who We Are

We are a group of hackers, designers, and engineers all working to improve UCLA's +

Who We Are

We are a group of hackers, designers, and engineers all working to improve UCLA's hacking community. We believe in moving fast, having fun, and being passionate about using technology to solve problems that are relevant to us. We have a high bar for success, and are willing to work incredibly hard, balancing school and @@ -89,4 +89,4 @@ programming, I like gaming, playing bass, watching anime and rewatching Gilmore Girls, and spending way too much time on Discord. You can always find me losing sleep from procrastination.

Alumni

Hack wouldn't be what it is today without our awesome alumni! Even though - these officers have graduated, they will always be part of the Hack family.

2023

Brooke Jiang

Asha Kar

Chandra Suresh

Christina Tong

Alex Xia

2022

Rajeshwari Jadhav

Jody Lin

Eugene Lo

Sahen Rai

Miles Wu

Eric Yang

2021

Lea Blum

Connie Chen

Shirly Fang

Timothy Gu

Kristie Lim

Jamie Liu

Tim Rediehs

Galen Wong

2020

Yvonne Chen

Jeanette Lin

Dustin Newman

Prateek Singh

Kevin Tan

Furn Techalertumpai

2019

Dmitri Brereton

Char McGinn

Astrid Wang

Nathan Yang

2018

Shashank Khanna

Breanna Nery

Shannon Phu

Kelvin Wong

2017

Vic Yeh

\ No newline at end of file + these officers have graduated, they will always be part of the Hack family.

2023

Brooke Jiang

Asha Kar

Chandra Suresh

Christina Tong

Alex Xia

2022

Rajeshwari Jadhav

Jody Lin

Eugene Lo

Sahen Rai

Miles Wu

Eric Yang

2021

Lea Blum

Connie Chen

Shirly Fang

Timothy Gu

Kristie Lim

Jamie Liu

Tim Rediehs

Galen Wong

2020

Yvonne Chen

Jeanette Lin

Dustin Newman

Prateek Singh

Kevin Tan

Furn Techalertumpai

2019

Dmitri Brereton

Char McGinn

Astrid Wang

Nathan Yang

2018

Shashank Khanna

Breanna Nery

Shannon Phu

Kelvin Wong

2017

Vic Yeh

\ No newline at end of file diff --git a/archive/index.html b/archive/index.html index 5a1b32b80..f7049a9f2 100644 --- a/archive/index.html +++ b/archive/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filter by tag...

Spring 2023


Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis


Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Winter 2023


Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2022


Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Spring 2022


Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022


Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo


Directed by Christina Tong and Einar Balan

Fall 2021


Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu


Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

Spring 2021


Directed by Galen Wong

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Optimization & Profiling

    javascript

    README 

    · Slides 

    Taught by Galen Wong and Kristie Lim

  • Session 3: Asynchronous JavaScript

    javascript
    async

    README 

    · Slides 

    Taught by Timothy Gu and Jamie Liu

  • Session 4: WebRTC

    javascript
    webrtc

    README 

    · Slides 

    Taught by Jamie Liu and Galen Wong

  • Session 5: WebAssembly

    javascript
    webassembly

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Gu

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

  • Session 7: TypeScript

    javascript
    typescript

    README 

    · Slides 

    · Recording 

    Taught by Omer Demirkan


Directed by Nareh Agazaryan and Einar Balan

  • Session 1: Intro to Python

    python

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Einar Balan

  • Session 2: Data Structures in Python

    python
    data structures

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Nareh Agazaryan

  • Session 3: Classes and Inheritance

    python
    classes

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Alex Xia

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

Winter 2021


Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia


Directed by Asha Kar

  • Getting Started with a Hackathon

    hackathon

    README 

    · Recording 

    Taught by Eric Yang

  • Intro to HTML

    html

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to CSS

    css

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to Web APIs

    api

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Intro to Servers

    http
    json
    nodejs

    README 

    · Slides 

    · Recording 

    Taught by Timothy Gu

  • Intro to Servers Demo

    express
    postman

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

  • Intro to React Part 1

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Part 2

    props

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Native

    jsx
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Intro to Git

    git
    github
    bash

    Slides 

    · Recording 

    Taught by Chandra Suresh

  • Intro to Unity

    unity

    Recording 

    Taught by Jaret Ishii (ACM Studio)

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

  • Intro to Databases

    sql
    nosql
    mongodb

    README 

    · Slides 

    · Recording 

    Taught by Sanya Srivastava (DevX)

Fall 2020


Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Spring 2020


Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki


Directed by Timothy Rediehs and Alex Xia

Winter 2020


Directed by Kevin Tan


Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

Fall 2019


Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs


Directed by Galen Wong and Timothy Gu

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Asynchronous JavaScript

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 3: A Gentle Introduction to React Hooks

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4: Optimizing Frontend and React Apps

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5: Multi-threading in JavaScript: Worker Threads

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6: Introduction to Testing with JavaScript

    javascript

    README 

    · Slides 

    Taught by Galen Wong

Spring 2019


Directed by Jody Lin and Rajeshwari Jadhav

  • Session 1: Basics of Python

    python

    README 

    · Slides 

    Taught by Jody Lin

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

  • Session 4: PyGame

    python
    pygame

    README 

    · Slides 

    Taught by Jody Lin

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

Winter 2019


Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Fall 2018


Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018


Directed by Dustin Newman

  • Getting Started with JavaScript

    javascript

    README 

    Taught by Dustin Newman

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • New JavaScript Features and Syntax (ES6+)

    javascript
    es6

    README 

    · Slides 

    Taught by Timothy Gu

  • HTML Templating

    javascript
    handlebars

    README 

    · Slides 

    Taught by Jorge Fuentes

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

  • React

    reactjs

    README 

    · Slides 

    Taught by Kevin Qian

Fall 2017


  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

Spring 2017


\ No newline at end of file +

Workshop Archive

Filter by tag...

Spring 2023


Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis


Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Winter 2023


Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2022


Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Spring 2022


Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022


Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo


Directed by Christina Tong and Einar Balan

Fall 2021


Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu


Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

Spring 2021


Directed by Galen Wong

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Optimization & Profiling

    javascript

    README 

    · Slides 

    Taught by Galen Wong and Kristie Lim

  • Session 3: Asynchronous JavaScript

    javascript
    async

    README 

    · Slides 

    Taught by Timothy Gu and Jamie Liu

  • Session 4: WebRTC

    javascript
    webrtc

    README 

    · Slides 

    Taught by Jamie Liu and Galen Wong

  • Session 5: WebAssembly

    javascript
    webassembly

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Gu

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

  • Session 7: TypeScript

    javascript
    typescript

    README 

    · Slides 

    · Recording 

    Taught by Omer Demirkan


Directed by Nareh Agazaryan and Einar Balan

  • Session 1: Intro to Python

    python

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Einar Balan

  • Session 2: Data Structures in Python

    python
    data structures

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Nareh Agazaryan

  • Session 3: Classes and Inheritance

    python
    classes

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Alex Xia

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

Winter 2021


Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia


Directed by Asha Kar

  • Getting Started with a Hackathon

    hackathon

    README 

    · Recording 

    Taught by Eric Yang

  • Intro to HTML

    html

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to CSS

    css

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to Web APIs

    api

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Intro to Servers

    http
    json
    nodejs

    README 

    · Slides 

    · Recording 

    Taught by Timothy Gu

  • Intro to Servers Demo

    express
    postman

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

  • Intro to React Part 1

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Part 2

    props

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Native

    jsx
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Intro to Git

    git
    github
    bash

    Slides 

    · Recording 

    Taught by Chandra Suresh

  • Intro to Unity

    unity

    Recording 

    Taught by Jaret Ishii (ACM Studio)

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

  • Intro to Databases

    sql
    nosql
    mongodb

    README 

    · Slides 

    · Recording 

    Taught by Sanya Srivastava (DevX)

Fall 2020


Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Spring 2020


Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki


Directed by Timothy Rediehs and Alex Xia

Winter 2020


Directed by Kevin Tan


Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

Fall 2019


Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs


Directed by Galen Wong and Timothy Gu

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Asynchronous JavaScript

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 3: A Gentle Introduction to React Hooks

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4: Optimizing Frontend and React Apps

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5: Multi-threading in JavaScript: Worker Threads

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6: Introduction to Testing with JavaScript

    javascript

    README 

    · Slides 

    Taught by Galen Wong

Spring 2019


Directed by Jody Lin and Rajeshwari Jadhav

  • Session 1: Basics of Python

    python

    README 

    · Slides 

    Taught by Jody Lin

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

  • Session 4: PyGame

    python
    pygame

    README 

    · Slides 

    Taught by Jody Lin

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

Winter 2019


Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Fall 2018


Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018


Directed by Dustin Newman

  • Getting Started with JavaScript

    javascript

    README 

    Taught by Dustin Newman

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • New JavaScript Features and Syntax (ES6+)

    javascript
    es6

    README 

    · Slides 

    Taught by Timothy Gu

  • HTML Templating

    javascript
    handlebars

    README 

    · Slides 

    Taught by Jorge Fuentes

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

  • React

    reactjs

    README 

    · Slides 

    Taught by Kevin Qian

Fall 2017


  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

Spring 2017


\ No newline at end of file diff --git a/archive/tags/accessibility/index.html b/archive/tags/accessibility/index.html index c11a93421..f0357a0e8 100644 --- a/archive/tags/accessibility/index.html +++ b/archive/tags/accessibility/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: accessibility
Fall 2021

Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

\ No newline at end of file +

Workshop Archive

Filtered by tag: accessibility
Fall 2021

Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

\ No newline at end of file diff --git a/archive/tags/ai/index.html b/archive/tags/ai/index.html index fe13b8e41..fc16a6777 100644 --- a/archive/tags/ai/index.html +++ b/archive/tags/ai/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: ai
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to Machine Learning

    ai

    Slides 

    · Recording 

    Taught by Caden Davis, Jason Jewik, and Nisha McNealis

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Machine Learning

    ai

    Slides 

    · Recording 

    Taught by Nisha McNealis

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: ai
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to Machine Learning

    ai

    Slides 

    · Recording 

    Taught by Caden Davis, Jason Jewik, and Nisha McNealis

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Machine Learning

    ai

    Slides 

    · Recording 

    Taught by Nisha McNealis

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/android-studio/index.html b/archive/tags/android-studio/index.html index a1a3af5fc..8cf16ef8f 100644 --- a/archive/tags/android-studio/index.html +++ b/archive/tags/android-studio/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: android studio
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

\ No newline at end of file +

Workshop Archive

Filtered by tag: android studio
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

\ No newline at end of file diff --git a/archive/tags/android/index.html b/archive/tags/android/index.html index eff1ed6f5..4629d37f2 100644 --- a/archive/tags/android/index.html +++ b/archive/tags/android/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: android
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

\ No newline at end of file +

Workshop Archive

Filtered by tag: android
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

\ No newline at end of file diff --git a/archive/tags/api/index.html b/archive/tags/api/index.html index d7a60298d..c6e10afe1 100644 --- a/archive/tags/api/index.html +++ b/archive/tags/api/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: api
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

\ No newline at end of file +

Workshop Archive

Filtered by tag: api
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

\ No newline at end of file diff --git a/archive/tags/app-store/index.html b/archive/tags/app-store/index.html index 6c330f5c3..81c501a3b 100644 --- a/archive/tags/app-store/index.html +++ b/archive/tags/app-store/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: app store
Winter 2022

Directed by Nareh Agazaryan

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

\ No newline at end of file +

Workshop Archive

Filtered by tag: app store
Winter 2022

Directed by Nareh Agazaryan

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

\ No newline at end of file diff --git a/archive/tags/artificial-intelligence/index.html b/archive/tags/artificial-intelligence/index.html index 46385e950..143573d32 100644 --- a/archive/tags/artificial-intelligence/index.html +++ b/archive/tags/artificial-intelligence/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: artificial intelligence
Winter 2021

Directed by Asha Kar

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

\ No newline at end of file +

Workshop Archive

Filtered by tag: artificial intelligence
Winter 2021

Directed by Asha Kar

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

\ No newline at end of file diff --git a/archive/tags/async-storage/index.html b/archive/tags/async-storage/index.html index a571900c8..92b11ee2a 100644 --- a/archive/tags/async-storage/index.html +++ b/archive/tags/async-storage/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: async storage
Winter 2021

Directed by Eugene Lo

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

\ No newline at end of file +

Workshop Archive

Filtered by tag: async storage
Winter 2021

Directed by Eugene Lo

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

\ No newline at end of file diff --git a/archive/tags/async/index.html b/archive/tags/async/index.html index 7b93764e3..598e17a04 100644 --- a/archive/tags/async/index.html +++ b/archive/tags/async/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: async
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Spring 2021

Directed by Galen Wong

  • Session 3: Asynchronous JavaScript

    javascript
    async

    README 

    · Slides 

    Taught by Timothy Gu and Jamie Liu

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

\ No newline at end of file +

Workshop Archive

Filtered by tag: async
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Spring 2021

Directed by Galen Wong

  • Session 3: Asynchronous JavaScript

    javascript
    async

    README 

    · Slides 

    Taught by Timothy Gu and Jamie Liu

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

\ No newline at end of file diff --git a/archive/tags/authentication/index.html b/archive/tags/authentication/index.html index 9d60236d6..21c9f9c82 100644 --- a/archive/tags/authentication/index.html +++ b/archive/tags/authentication/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: authentication
Winter 2021

Directed by Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: authentication
Winter 2021

Directed by Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

\ No newline at end of file diff --git a/archive/tags/automation/index.html b/archive/tags/automation/index.html index 2e1bbabc2..69c03d104 100644 --- a/archive/tags/automation/index.html +++ b/archive/tags/automation/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: automation
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

\ No newline at end of file +

Workshop Archive

Filtered by tag: automation
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

\ No newline at end of file diff --git a/archive/tags/await/index.html b/archive/tags/await/index.html index 9eeea2642..ad43ba597 100644 --- a/archive/tags/await/index.html +++ b/archive/tags/await/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: await
Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file +

Workshop Archive

Filtered by tag: await
Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file diff --git a/archive/tags/aws/index.html b/archive/tags/aws/index.html index dcc58841f..805dde0be 100644 --- a/archive/tags/aws/index.html +++ b/archive/tags/aws/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: aws
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: aws
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/axios/index.html b/archive/tags/axios/index.html index 1de0e07f1..d58f10c54 100644 --- a/archive/tags/axios/index.html +++ b/archive/tags/axios/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: axios
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: axios
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/backend/index.html b/archive/tags/backend/index.html index b1bf807ec..052330342 100644 --- a/archive/tags/backend/index.html +++ b/archive/tags/backend/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: backend
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

\ No newline at end of file +

Workshop Archive

Filtered by tag: backend
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

\ No newline at end of file diff --git a/archive/tags/bash/index.html b/archive/tags/bash/index.html index 3c2e5b636..3b498c88f 100644 --- a/archive/tags/bash/index.html +++ b/archive/tags/bash/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: bash
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

Winter 2021

Directed by Asha Kar

Spring 2020

Directed by Timothy Rediehs and Alex Xia

  • Session 3: Shell Scripting

    shell
    scripting
    bash

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Kristie Lim

\ No newline at end of file +

Workshop Archive

Filtered by tag: bash
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

Winter 2021

Directed by Asha Kar

Spring 2020

Directed by Timothy Rediehs and Alex Xia

  • Session 3: Shell Scripting

    shell
    scripting
    bash

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Kristie Lim

\ No newline at end of file diff --git a/archive/tags/beautifulsoup/index.html b/archive/tags/beautifulsoup/index.html index c2ab223d9..505e92864 100644 --- a/archive/tags/beautifulsoup/index.html +++ b/archive/tags/beautifulsoup/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: beautifulsoup
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file +

Workshop Archive

Filtered by tag: beautifulsoup
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file diff --git a/archive/tags/blockchain/index.html b/archive/tags/blockchain/index.html index dfdbdca88..f91a720d3 100644 --- a/archive/tags/blockchain/index.html +++ b/archive/tags/blockchain/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: blockchain
Fall 2021

Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

\ No newline at end of file +

Workshop Archive

Filtered by tag: blockchain
Fall 2021

Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

\ No newline at end of file diff --git a/archive/tags/bruinspace/index.html b/archive/tags/bruinspace/index.html index 2fc664da8..50ac523fe 100644 --- a/archive/tags/bruinspace/index.html +++ b/archive/tags/bruinspace/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: bruinspace
Spring 2020

Directed by Asha Kar and Eugene Lo

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

\ No newline at end of file +

Workshop Archive

Filtered by tag: bruinspace
Spring 2020

Directed by Asha Kar and Eugene Lo

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

\ No newline at end of file diff --git a/archive/tags/classes/index.html b/archive/tags/classes/index.html index 5c5952b1b..05baebb01 100644 --- a/archive/tags/classes/index.html +++ b/archive/tags/classes/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: classes
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 3: Classes and Inheritance

    python
    classes

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Alex Xia

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

\ No newline at end of file +

Workshop Archive

Filtered by tag: classes
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 3: Classes and Inheritance

    python
    classes

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Alex Xia

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

\ No newline at end of file diff --git a/archive/tags/cloud-computing/index.html b/archive/tags/cloud-computing/index.html index 22c516faa..30f5d33c2 100644 --- a/archive/tags/cloud-computing/index.html +++ b/archive/tags/cloud-computing/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: cloud computing
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: cloud computing
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/cocoapods/index.html b/archive/tags/cocoapods/index.html index 4a79af34b..60add4a54 100644 --- a/archive/tags/cocoapods/index.html +++ b/archive/tags/cocoapods/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: cocoapods
Winter 2019

Directed by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: cocoapods
Winter 2019

Directed by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/colab/index.html b/archive/tags/colab/index.html index 5d277a886..0b94dabd0 100644 --- a/archive/tags/colab/index.html +++ b/archive/tags/colab/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: colab
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: colab
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/components/index.html b/archive/tags/components/index.html index cfd784cf0..9f13ef4cf 100644 --- a/archive/tags/components/index.html +++ b/archive/tags/components/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: components
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu


Directed by James Wu and Nathan Zhang

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

Fall 2022

Directed by Thomas McGall

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2021

Directed by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan


Directed by Asha Kar

  • Intro to React Part 1

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

\ No newline at end of file +

Workshop Archive

Filtered by tag: components
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu


Directed by James Wu and Nathan Zhang

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

Fall 2022

Directed by Thomas McGall

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2021

Directed by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan


Directed by Asha Kar

  • Intro to React Part 1

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

\ No newline at end of file diff --git a/archive/tags/computer-science/index.html b/archive/tags/computer-science/index.html index 621278a7d..8ecad33fe 100644 --- a/archive/tags/computer-science/index.html +++ b/archive/tags/computer-science/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: computer science
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file +

Workshop Archive

Filtered by tag: computer science
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file diff --git a/archive/tags/computer-vision/index.html b/archive/tags/computer-vision/index.html index fa9176e2a..db7b80d34 100644 --- a/archive/tags/computer-vision/index.html +++ b/archive/tags/computer-vision/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: computer vision
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

\ No newline at end of file +

Workshop Archive

Filtered by tag: computer vision
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

\ No newline at end of file diff --git a/archive/tags/crud-api/index.html b/archive/tags/crud-api/index.html index 3af967fb8..8b097d4c0 100644 --- a/archive/tags/crud-api/index.html +++ b/archive/tags/crud-api/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: crud api
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: crud api
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/css/index.html b/archive/tags/css/index.html index 10dd21e07..1d05e2590 100644 --- a/archive/tags/css/index.html +++ b/archive/tags/css/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: css
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Fall 2017

  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file +

Workshop Archive

Filtered by tag: css
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Fall 2017

  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file diff --git a/archive/tags/cubesats/index.html b/archive/tags/cubesats/index.html index 69e36d68d..c097037b8 100644 --- a/archive/tags/cubesats/index.html +++ b/archive/tags/cubesats/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: cubesats
Spring 2020

Directed by Asha Kar and Eugene Lo

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

\ No newline at end of file +

Workshop Archive

Filtered by tag: cubesats
Spring 2020

Directed by Asha Kar and Eugene Lo

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

\ No newline at end of file diff --git a/archive/tags/data-mining/index.html b/archive/tags/data-mining/index.html index 2997849ba..573785f9a 100644 --- a/archive/tags/data-mining/index.html +++ b/archive/tags/data-mining/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: data mining
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: data mining
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/data-structures/index.html b/archive/tags/data-structures/index.html index c8e2e41ca..1c2cb8821 100644 --- a/archive/tags/data-structures/index.html +++ b/archive/tags/data-structures/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: data structures
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 2: Data Structures in Python

    python
    data structures

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Nareh Agazaryan

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

\ No newline at end of file +

Workshop Archive

Filtered by tag: data structures
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 2: Data Structures in Python

    python
    data structures

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Nareh Agazaryan

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

\ No newline at end of file diff --git a/archive/tags/database/index.html b/archive/tags/database/index.html index acc34530c..b6a8f65ec 100644 --- a/archive/tags/database/index.html +++ b/archive/tags/database/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: database
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

Winter 2022

Directed by Christina Tong and Einar Balan

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Fall 2017

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

\ No newline at end of file +

Workshop Archive

Filtered by tag: database
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

Winter 2022

Directed by Christina Tong and Einar Balan

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Fall 2017

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

\ No newline at end of file diff --git a/archive/tags/deep-learning/index.html b/archive/tags/deep-learning/index.html index bffeea985..a7a99a7d8 100644 --- a/archive/tags/deep-learning/index.html +++ b/archive/tags/deep-learning/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: deep learning
Winter 2021

Directed by Asha Kar

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

\ No newline at end of file +

Workshop Archive

Filtered by tag: deep learning
Winter 2021

Directed by Asha Kar

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

\ No newline at end of file diff --git a/archive/tags/dependencies/index.html b/archive/tags/dependencies/index.html index d2a4f61c6..56f51938d 100644 --- a/archive/tags/dependencies/index.html +++ b/archive/tags/dependencies/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: dependencies
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

\ No newline at end of file +

Workshop Archive

Filtered by tag: dependencies
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

\ No newline at end of file diff --git a/archive/tags/deployment/index.html b/archive/tags/deployment/index.html index efd986827..8f5726f54 100644 --- a/archive/tags/deployment/index.html +++ b/archive/tags/deployment/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: deployment
Winter 2022

Directed by Nareh Agazaryan

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

\ No newline at end of file +

Workshop Archive

Filtered by tag: deployment
Winter 2022

Directed by Nareh Agazaryan

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

\ No newline at end of file diff --git a/archive/tags/design/index.html b/archive/tags/design/index.html index d9125ed2f..cde6e4f65 100644 --- a/archive/tags/design/index.html +++ b/archive/tags/design/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: design
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Caitlyn Chen and Sara Kuchimpos

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Sara Kuchimpos and Caitlyn Chen

Winter 2021

Directed by Asha Kar

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

Spring 2020

Directed by Asha Kar and Eugene Lo

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

\ No newline at end of file +

Workshop Archive

Filtered by tag: design
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Caitlyn Chen and Sara Kuchimpos

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Sara Kuchimpos and Caitlyn Chen

Winter 2021

Directed by Asha Kar

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

Spring 2020

Directed by Asha Kar and Eugene Lo

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

\ No newline at end of file diff --git a/archive/tags/devops/index.html b/archive/tags/devops/index.html index d309f459d..70553cdf2 100644 --- a/archive/tags/devops/index.html +++ b/archive/tags/devops/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: devops
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

\ No newline at end of file +

Workshop Archive

Filtered by tag: devops
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

\ No newline at end of file diff --git a/archive/tags/django/index.html b/archive/tags/django/index.html index 579a6ae73..85c4e404a 100644 --- a/archive/tags/django/index.html +++ b/archive/tags/django/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: django
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

\ No newline at end of file +

Workshop Archive

Filtered by tag: django
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

\ No newline at end of file diff --git a/archive/tags/docker/index.html b/archive/tags/docker/index.html index 7372153e3..bf1c77440 100644 --- a/archive/tags/docker/index.html +++ b/archive/tags/docker/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: docker
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

\ No newline at end of file +

Workshop Archive

Filtered by tag: docker
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

\ No newline at end of file diff --git a/archive/tags/ec2/index.html b/archive/tags/ec2/index.html index 0f421b5b0..3de61cdfa 100644 --- a/archive/tags/ec2/index.html +++ b/archive/tags/ec2/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: ec2
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: ec2
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/edtech/index.html b/archive/tags/edtech/index.html index 87814d745..b067edd0a 100644 --- a/archive/tags/edtech/index.html +++ b/archive/tags/edtech/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: edtech
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

\ No newline at end of file +

Workshop Archive

Filtered by tag: edtech
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

\ No newline at end of file diff --git a/archive/tags/elastic-beanstalk/index.html b/archive/tags/elastic-beanstalk/index.html index 20b9ff90d..75e785e8a 100644 --- a/archive/tags/elastic-beanstalk/index.html +++ b/archive/tags/elastic-beanstalk/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: elastic beanstalk
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

\ No newline at end of file +

Workshop Archive

Filtered by tag: elastic beanstalk
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

\ No newline at end of file diff --git a/archive/tags/es6/index.html b/archive/tags/es6/index.html index 504589abb..8c12d08a6 100644 --- a/archive/tags/es6/index.html +++ b/archive/tags/es6/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: es6
Spring 2018

Directed by Dustin Newman

  • New JavaScript Features and Syntax (ES6+)

    javascript
    es6

    README 

    · Slides 

    Taught by Timothy Gu

\ No newline at end of file +

Workshop Archive

Filtered by tag: es6
Spring 2018

Directed by Dustin Newman

  • New JavaScript Features and Syntax (ES6+)

    javascript
    es6

    README 

    · Slides 

    Taught by Timothy Gu

\ No newline at end of file diff --git a/archive/tags/event-handling/index.html b/archive/tags/event-handling/index.html index 91b7c9ef6..ca59c05f1 100644 --- a/archive/tags/event-handling/index.html +++ b/archive/tags/event-handling/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: event handling
Fall 2022

Directed by Thomas McGall

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

\ No newline at end of file +

Workshop Archive

Filtered by tag: event handling
Fall 2022

Directed by Thomas McGall

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

\ No newline at end of file diff --git a/archive/tags/explore/index.html b/archive/tags/explore/index.html index f71ce8cf4..eb28cfac9 100644 --- a/archive/tags/explore/index.html +++ b/archive/tags/explore/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: explore
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file +

Workshop Archive

Filtered by tag: explore
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file diff --git a/archive/tags/expo/index.html b/archive/tags/expo/index.html index 984421fe4..294cb218c 100644 --- a/archive/tags/expo/index.html +++ b/archive/tags/expo/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: expo
Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

\ No newline at end of file +

Workshop Archive

Filtered by tag: expo
Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

\ No newline at end of file diff --git a/archive/tags/express/index.html b/archive/tags/express/index.html index e2803f13f..c061d554d 100644 --- a/archive/tags/express/index.html +++ b/archive/tags/express/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: express
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

Spring 2018

Directed by Dustin Newman

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

\ No newline at end of file +

Workshop Archive

Filtered by tag: express
Winter 2023

Directed by Maggie Li and Katelyn Yu


Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

Spring 2018

Directed by Dustin Newman

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

\ No newline at end of file diff --git a/archive/tags/fetch/index.html b/archive/tags/fetch/index.html index 9dccd8482..cd5d1bb32 100644 --- a/archive/tags/fetch/index.html +++ b/archive/tags/fetch/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: fetch
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file +

Workshop Archive

Filtered by tag: fetch
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file diff --git a/archive/tags/final-project/index.html b/archive/tags/final-project/index.html index b022a0f86..562194d83 100644 --- a/archive/tags/final-project/index.html +++ b/archive/tags/final-project/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: final project
Fall 2017

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file +

Workshop Archive

Filtered by tag: final project
Fall 2017

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file diff --git a/archive/tags/firebase/index.html b/archive/tags/firebase/index.html index 6a7e2b933..4e4b2c297 100644 --- a/archive/tags/firebase/index.html +++ b/archive/tags/firebase/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: firebase
Winter 2023

Directed by Maggie Li and Katelyn Yu

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

Winter 2019

Directed by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

\ No newline at end of file +

Workshop Archive

Filtered by tag: firebase
Winter 2023

Directed by Maggie Li and Katelyn Yu

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

Winter 2019

Directed by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

\ No newline at end of file diff --git a/archive/tags/firestore/index.html b/archive/tags/firestore/index.html index 959cc7c9d..16a6db111 100644 --- a/archive/tags/firestore/index.html +++ b/archive/tags/firestore/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: firestore
Winter 2021

Directed by Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: firestore
Winter 2021

Directed by Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

\ No newline at end of file diff --git a/archive/tags/flexbox/index.html b/archive/tags/flexbox/index.html index 4b02a84f3..05c301f04 100644 --- a/archive/tags/flexbox/index.html +++ b/archive/tags/flexbox/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: flexbox
Fall 2022

Directed by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

Fall 2020

Directed by Miles Wu and Jamie Liu

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

\ No newline at end of file +

Workshop Archive

Filtered by tag: flexbox
Fall 2022

Directed by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

Fall 2020

Directed by Miles Wu and Jamie Liu

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

\ No newline at end of file diff --git a/archive/tags/frontend/index.html b/archive/tags/frontend/index.html index 43ea9d3a1..d775ff278 100644 --- a/archive/tags/frontend/index.html +++ b/archive/tags/frontend/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: frontend
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

\ No newline at end of file +

Workshop Archive

Filtered by tag: frontend
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

\ No newline at end of file diff --git a/archive/tags/fullstack/index.html b/archive/tags/fullstack/index.html index df2ac863b..7dbd4b107 100644 --- a/archive/tags/fullstack/index.html +++ b/archive/tags/fullstack/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: fullstack
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

\ No newline at end of file +

Workshop Archive

Filtered by tag: fullstack
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

\ No newline at end of file diff --git a/archive/tags/functional-components/index.html b/archive/tags/functional-components/index.html index c900218e1..f892cdc5f 100644 --- a/archive/tags/functional-components/index.html +++ b/archive/tags/functional-components/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: functional components
Winter 2021

Directed by Eugene Lo

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

\ No newline at end of file +

Workshop Archive

Filtered by tag: functional components
Winter 2021

Directed by Eugene Lo

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

\ No newline at end of file diff --git a/archive/tags/functions/index.html b/archive/tags/functions/index.html index d23eb663a..5dca132d5 100644 --- a/archive/tags/functions/index.html +++ b/archive/tags/functions/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: functions
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

\ No newline at end of file +

Workshop Archive

Filtered by tag: functions
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

\ No newline at end of file diff --git a/archive/tags/git/index.html b/archive/tags/git/index.html index e02f46cdd..d28ecaaab 100644 --- a/archive/tags/git/index.html +++ b/archive/tags/git/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: git
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Winter 2023

Directed by Maggie Li and Katelyn Yu

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

Spring 2020

Directed by Timothy Rediehs and Alex Xia

Spring 2018

Directed by Dustin Newman

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

\ No newline at end of file +

Workshop Archive

Filtered by tag: git
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Winter 2023

Directed by Maggie Li and Katelyn Yu

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

Spring 2020

Directed by Timothy Rediehs and Alex Xia

Spring 2018

Directed by Dustin Newman

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

\ No newline at end of file diff --git a/archive/tags/github/index.html b/archive/tags/github/index.html index 339847514..44afb433a 100644 --- a/archive/tags/github/index.html +++ b/archive/tags/github/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: github
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: github
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/hackathon/index.html b/archive/tags/hackathon/index.html index cbf2cdfef..cd1523966 100644 --- a/archive/tags/hackathon/index.html +++ b/archive/tags/hackathon/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: hackathon
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

  • Getting Started with a Hackathon

    hackathon

    README 

    · Recording 

    Taught by Eric Yang

  • Intro to HTML

    html

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to CSS

    css

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to Web APIs

    api

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Intro to Servers

    http
    json
    nodejs

    README 

    · Slides 

    · Recording 

    Taught by Timothy Gu

  • Intro to Servers Demo

    express
    postman

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

  • Intro to React Part 1

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Part 2

    props

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Native

    jsx
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Intro to Git

    git
    github
    bash

    Slides 

    · Recording 

    Taught by Chandra Suresh

  • Intro to Unity

    unity

    Recording 

    Taught by Jaret Ishii (ACM Studio)

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

  • Intro to Databases

    sql
    nosql
    mongodb

    README 

    · Slides 

    · Recording 

    Taught by Sanya Srivastava (DevX)

\ No newline at end of file +

Workshop Archive

Filtered by tag: hackathon
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

  • Getting Started with a Hackathon

    hackathon

    README 

    · Recording 

    Taught by Eric Yang

  • Intro to HTML

    html

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to CSS

    css

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald

  • Intro to Web APIs

    api

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Intro to Servers

    http
    json
    nodejs

    README 

    · Slides 

    · Recording 

    Taught by Timothy Gu

  • Intro to Servers Demo

    express
    postman

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

  • Intro to React Part 1

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Part 2

    props

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Intro to React Native

    jsx
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Intro to Git

    git
    github
    bash

    Slides 

    · Recording 

    Taught by Chandra Suresh

  • Intro to Unity

    unity

    Recording 

    Taught by Jaret Ishii (ACM Studio)

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

  • Intro to Databases

    sql
    nosql
    mongodb

    README 

    · Slides 

    · Recording 

    Taught by Sanya Srivastava (DevX)

\ No newline at end of file diff --git a/archive/tags/handlebars/index.html b/archive/tags/handlebars/index.html index 2655e943e..31e6a2363 100644 --- a/archive/tags/handlebars/index.html +++ b/archive/tags/handlebars/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: handlebars
Spring 2018

Directed by Dustin Newman

  • HTML Templating

    javascript
    handlebars

    README 

    · Slides 

    Taught by Jorge Fuentes

Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

\ No newline at end of file +

Workshop Archive

Filtered by tag: handlebars
Spring 2018

Directed by Dustin Newman

  • HTML Templating

    javascript
    handlebars

    README 

    · Slides 

    Taught by Jorge Fuentes

Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

\ No newline at end of file diff --git a/archive/tags/hooks/index.html b/archive/tags/hooks/index.html index 61c2e8664..6138e3dd7 100644 --- a/archive/tags/hooks/index.html +++ b/archive/tags/hooks/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: hooks
Fall 2022

Directed by Thomas McGall

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

\ No newline at end of file +

Workshop Archive

Filtered by tag: hooks
Fall 2022

Directed by Thomas McGall

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

\ No newline at end of file diff --git a/archive/tags/html/index.html b/archive/tags/html/index.html index ebb521321..e12204b53 100644 --- a/archive/tags/html/index.html +++ b/archive/tags/html/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: html
Winter 2023

Directed by Maggie Li and Katelyn Yu

Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Fall 2017

  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file +

Workshop Archive

Filtered by tag: html
Winter 2023

Directed by Maggie Li and Katelyn Yu

Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Fall 2017

  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file diff --git a/archive/tags/http/index.html b/archive/tags/http/index.html index 74c206739..920ba23bd 100644 --- a/archive/tags/http/index.html +++ b/archive/tags/http/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: http
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: http
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Winter 2021

Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/ios/index.html b/archive/tags/ios/index.html index 7e6461794..579c03a8b 100644 --- a/archive/tags/ios/index.html +++ b/archive/tags/ios/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: ios
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Spring 2017

\ No newline at end of file +

Workshop Archive

Filtered by tag: ios
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Spring 2017

\ No newline at end of file diff --git a/archive/tags/javascript/index.html b/archive/tags/javascript/index.html index 981bcffa8..299930843 100644 --- a/archive/tags/javascript/index.html +++ b/archive/tags/javascript/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: javascript
Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022

Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Galen Wong

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Optimization & Profiling

    javascript

    README 

    · Slides 

    Taught by Galen Wong and Kristie Lim

  • Session 3: Asynchronous JavaScript

    javascript
    async

    README 

    · Slides 

    Taught by Timothy Gu and Jamie Liu

  • Session 4: WebRTC

    javascript
    webrtc

    README 

    · Slides 

    Taught by Jamie Liu and Galen Wong

  • Session 5: WebAssembly

    javascript
    webassembly

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Gu

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

  • Session 7: TypeScript

    javascript
    typescript

    README 

    · Slides 

    · Recording 

    Taught by Omer Demirkan

Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo


Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs


Directed by Galen Wong and Timothy Gu

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Asynchronous JavaScript

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 3: A Gentle Introduction to React Hooks

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4: Optimizing Frontend and React Apps

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5: Multi-threading in JavaScript: Worker Threads

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6: Introduction to Testing with JavaScript

    javascript

    README 

    · Slides 

    Taught by Galen Wong

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018

Directed by Dustin Newman

  • Getting Started with JavaScript

    javascript

    README 

    Taught by Dustin Newman

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • New JavaScript Features and Syntax (ES6+)

    javascript
    es6

    README 

    · Slides 

    Taught by Timothy Gu

  • HTML Templating

    javascript
    handlebars

    README 

    · Slides 

    Taught by Jorge Fuentes

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

  • React

    reactjs

    README 

    · Slides 

    Taught by Kevin Qian

Fall 2017

  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file +

Workshop Archive

Filtered by tag: javascript
Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Winter 2022

Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Galen Wong

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Optimization & Profiling

    javascript

    README 

    · Slides 

    Taught by Galen Wong and Kristie Lim

  • Session 3: Asynchronous JavaScript

    javascript
    async

    README 

    · Slides 

    Taught by Timothy Gu and Jamie Liu

  • Session 4: WebRTC

    javascript
    webrtc

    README 

    · Slides 

    Taught by Jamie Liu and Galen Wong

  • Session 5: WebAssembly

    javascript
    webassembly

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Gu

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

  • Session 7: TypeScript

    javascript
    typescript

    README 

    · Slides 

    · Recording 

    Taught by Omer Demirkan

Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo


Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs


Directed by Galen Wong and Timothy Gu

  • Session 1: Function and this

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 2: Asynchronous JavaScript

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 3: A Gentle Introduction to React Hooks

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4: Optimizing Frontend and React Apps

    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5: Multi-threading in JavaScript: Worker Threads

    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6: Introduction to Testing with JavaScript

    javascript

    README 

    · Slides 

    Taught by Galen Wong

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018

Directed by Dustin Newman

  • Getting Started with JavaScript

    javascript

    README 

    Taught by Dustin Newman

  • Intro to JavaScript

    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • New JavaScript Features and Syntax (ES6+)

    javascript
    es6

    README 

    · Slides 

    Taught by Timothy Gu

  • HTML Templating

    javascript
    handlebars

    README 

    · Slides 

    Taught by Jorge Fuentes

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

  • React

    reactjs

    README 

    · Slides 

    Taught by Kevin Qian

Fall 2017

  • Session 1: Intro to Web Development

    html
    css

    README 

    · Slides 

  • Hack Session 1: Build a Personal Website

    html
    css
    javascript
  • Session 2: Grids & JavaScript

    css
    javascript

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Hack Session 2: Build an Interactive Photo Gallery

    html
    css
    javascript

    README 

    · Slides 

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

  • Hack Session 4: Final Project - BruinPlay

    final project

    README 

    · Slides 

\ No newline at end of file diff --git a/archive/tags/jest/index.html b/archive/tags/jest/index.html index 7763e4994..090aaa3a4 100644 --- a/archive/tags/jest/index.html +++ b/archive/tags/jest/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: jest
Spring 2021

Directed by Galen Wong

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

\ No newline at end of file +

Workshop Archive

Filtered by tag: jest
Spring 2021

Directed by Galen Wong

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

\ No newline at end of file diff --git a/archive/tags/js/index.html b/archive/tags/js/index.html index 089e6c14e..e1464c6f3 100644 --- a/archive/tags/js/index.html +++ b/archive/tags/js/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: js
Winter 2023

Directed by Maggie Li and Katelyn Yu

\ No newline at end of file +

Workshop Archive

Filtered by tag: js
Winter 2023

Directed by Maggie Li and Katelyn Yu

\ No newline at end of file diff --git a/archive/tags/json/index.html b/archive/tags/json/index.html index 57b47e142..eb1cb8185 100644 --- a/archive/tags/json/index.html +++ b/archive/tags/json/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: json
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Asha Kar

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

\ No newline at end of file +

Workshop Archive

Filtered by tag: json
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Nareh Agazaryan

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall


Directed by Christina Tong and Einar Balan

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Asha Kar

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

\ No newline at end of file diff --git a/archive/tags/jsx/index.html b/archive/tags/jsx/index.html index 482b6e1ee..c5c0e7b0c 100644 --- a/archive/tags/jsx/index.html +++ b/archive/tags/jsx/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: jsx
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2021

Directed by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan


Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: jsx
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2021

Directed by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan


Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/kotlin/index.html b/archive/tags/kotlin/index.html index 7a9917170..a9c78bf2b 100644 --- a/archive/tags/kotlin/index.html +++ b/archive/tags/kotlin/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: kotlin
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

\ No newline at end of file +

Workshop Archive

Filtered by tag: kotlin
Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

\ No newline at end of file diff --git a/archive/tags/latex/index.html b/archive/tags/latex/index.html index bfb21ad92..f47a106fd 100644 --- a/archive/tags/latex/index.html +++ b/archive/tags/latex/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: latex
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: latex
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file diff --git a/archive/tags/local-storage/index.html b/archive/tags/local-storage/index.html index 2bf08d4c1..1cb78d145 100644 --- a/archive/tags/local-storage/index.html +++ b/archive/tags/local-storage/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: local storage
Winter 2021

Directed by Eugene Lo

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

\ No newline at end of file +

Workshop Archive

Filtered by tag: local storage
Winter 2021

Directed by Eugene Lo

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

\ No newline at end of file diff --git a/archive/tags/machine-learning/index.html b/archive/tags/machine-learning/index.html index 53c05a106..177032c75 100644 --- a/archive/tags/machine-learning/index.html +++ b/archive/tags/machine-learning/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: machine learning
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

Winter 2021

Directed by Asha Kar

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: machine learning
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

Winter 2021

Directed by Asha Kar

  • Intro to Deep Learning

    machine learning
    deep learning
    artificial intelligence

    Slides 

    · Recording 

    Taught by John Dang (ACM AI) and Justin Yi (ACM AI)

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/markdown/index.html b/archive/tags/markdown/index.html index b2a7a58c5..55b984f02 100644 --- a/archive/tags/markdown/index.html +++ b/archive/tags/markdown/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: markdown
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: markdown
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file diff --git a/archive/tags/mern/index.html b/archive/tags/mern/index.html index 8688d425f..88718fd39 100644 --- a/archive/tags/mern/index.html +++ b/archive/tags/mern/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: mern
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

\ No newline at end of file +

Workshop Archive

Filtered by tag: mern
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

\ No newline at end of file diff --git a/archive/tags/minecraft/index.html b/archive/tags/minecraft/index.html index 4e8ed73cb..318718890 100644 --- a/archive/tags/minecraft/index.html +++ b/archive/tags/minecraft/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: minecraft
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: minecraft
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/mobile/index.html b/archive/tags/mobile/index.html index 9f09a69e8..0d20f0750 100644 --- a/archive/tags/mobile/index.html +++ b/archive/tags/mobile/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: mobile
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Spring 2017

\ No newline at end of file +

Workshop Archive

Filtered by tag: mobile
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 1: Basics of Kotlin

    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Sahen Rai

  • Session 2: Dive into Android Studio

    android studio

    README 

    · Slides 

    Taught by Sahen Rai, Miles Wu, and Timothy Rediehs

  • Session 3: Basic Views

    android
    kotlin

    README 

    · Slides 

    Taught by Jody Lin and Eugene Lo

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

  • Session 5: Dependencies

    android
    kotlin
    dependencies

    README 

    · Slides 

    Taught by Sahen Rai

  • Session 6: Internet and APIs

    android
    kotlin
    api

    README 

    · Slides 

    Taught by Timothy Rediehs and Jamie Liu

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Spring 2017

\ No newline at end of file diff --git a/archive/tags/modules/index.html b/archive/tags/modules/index.html index fb6770094..23329f0ff 100644 --- a/archive/tags/modules/index.html +++ b/archive/tags/modules/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: modules
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

\ No newline at end of file +

Workshop Archive

Filtered by tag: modules
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

\ No newline at end of file diff --git a/archive/tags/mongodb/index.html b/archive/tags/mongodb/index.html index 4a4f6c687..59f3faa24 100644 --- a/archive/tags/mongodb/index.html +++ b/archive/tags/mongodb/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: mongodb
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Winter 2021

Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: mongodb
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Winter 2021

Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/music/index.html b/archive/tags/music/index.html index e898fe12f..a5b7fa822 100644 --- a/archive/tags/music/index.html +++ b/archive/tags/music/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: music
Fall 2021

Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

\ No newline at end of file +

Workshop Archive

Filtered by tag: music
Fall 2021

Directed by Christina Tong

  • Blockchain

    blockchain

    Recording 

    Taught by Jason Huan

  • Web Accessibility

    accessibility

    Recording 

    Taught by Omer Demirkan

  • Music Technology

    music

    Recording 

    Taught by Ben Hankin

\ No newline at end of file diff --git a/archive/tags/mysql/index.html b/archive/tags/mysql/index.html index ea85d67e9..7b627fbb7 100644 --- a/archive/tags/mysql/index.html +++ b/archive/tags/mysql/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: mysql
Fall 2017

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

\ No newline at end of file +

Workshop Archive

Filtered by tag: mysql
Fall 2017

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

\ No newline at end of file diff --git a/archive/tags/navigation/index.html b/archive/tags/navigation/index.html index 3e4e6ef02..864b69b89 100644 --- a/archive/tags/navigation/index.html +++ b/archive/tags/navigation/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: navigation
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2022

Directed by Thomas McGall

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Winter 2022

Directed by Nareh Agazaryan

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

Winter 2021

Directed by Eugene Lo

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: navigation
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2022

Directed by Thomas McGall

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Winter 2022

Directed by Nareh Agazaryan

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

Winter 2021

Directed by Eugene Lo

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

Winter 2020

Directed by Jody Lin and Sahen Rai

  • Session 4: Navigation

    android
    kotlin
    navigation

    README 

    · Slides 

    Taught by Galen Wong and Alex Xia

\ No newline at end of file diff --git a/archive/tags/nodejs/index.html b/archive/tags/nodejs/index.html index 2881b9964..9aa9e857d 100644 --- a/archive/tags/nodejs/index.html +++ b/archive/tags/nodejs/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: nodejs
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018

Directed by Dustin Newman

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

\ No newline at end of file +

Workshop Archive

Filtered by tag: nodejs
Winter 2023

Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Winter 2021

Directed by Asha Kar

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018

Directed by Dustin Newman

  • Node.js & Express

    nodejs
    express

    README 

    · Slides 

    Taught by Gregor Martynus

Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

  • Hack Session 3: Node.js and Templating

    nodejs
    backend
    handlebars

    README 

    · Slides 

    Taught by Yvonne Chen and Nathan Smith

\ No newline at end of file diff --git a/archive/tags/nosql/index.html b/archive/tags/nosql/index.html index 5c05f0348..9271afbf5 100644 --- a/archive/tags/nosql/index.html +++ b/archive/tags/nosql/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: nosql
Winter 2021

Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: nosql
Winter 2021

Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/npm/index.html b/archive/tags/npm/index.html index b7025a626..17ce60c0d 100644 --- a/archive/tags/npm/index.html +++ b/archive/tags/npm/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: npm
Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

\ No newline at end of file +

Workshop Archive

Filtered by tag: npm
Fall 2017

  • Session 3: Node.js

    nodejs
    backend
    npm
    handlebars

    README 

    · Slides 

    Taught by Kevin Tan and Shannon Phu

\ No newline at end of file diff --git a/archive/tags/open-source/index.html b/archive/tags/open-source/index.html index 2d9ee9fa9..81f144f3e 100644 --- a/archive/tags/open-source/index.html +++ b/archive/tags/open-source/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: open source
Spring 2020

Directed by Asha Kar and Eugene Lo

Spring 2018

Directed by Dustin Newman

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

\ No newline at end of file +

Workshop Archive

Filtered by tag: open source
Spring 2020

Directed by Asha Kar and Eugene Lo

Spring 2018

Directed by Dustin Newman

  • Open Source + Git

    open source
    git

    README 

    · Slides 

    Taught by Nathan Smith

\ No newline at end of file diff --git a/archive/tags/passion/index.html b/archive/tags/passion/index.html index 6d5fb4992..f86ba4cfc 100644 --- a/archive/tags/passion/index.html +++ b/archive/tags/passion/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: passion
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file +

Workshop Archive

Filtered by tag: passion
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file diff --git a/archive/tags/postman/index.html b/archive/tags/postman/index.html index e3d60c56f..c2c227f9c 100644 --- a/archive/tags/postman/index.html +++ b/archive/tags/postman/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: postman
Winter 2021

Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: postman
Winter 2021

Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/product-management/index.html b/archive/tags/product-management/index.html index f91c7ab01..b14a4ddf1 100644 --- a/archive/tags/product-management/index.html +++ b/archive/tags/product-management/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: product management
Spring 2020

Directed by Asha Kar and Eugene Lo

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file +

Workshop Archive

Filtered by tag: product management
Spring 2020

Directed by Asha Kar and Eugene Lo

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file diff --git a/archive/tags/promise/index.html b/archive/tags/promise/index.html index de58e7505..60dd66ca2 100644 --- a/archive/tags/promise/index.html +++ b/archive/tags/promise/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: promise
Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file +

Workshop Archive

Filtered by tag: promise
Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file diff --git a/archive/tags/props/index.html b/archive/tags/props/index.html index 19140dccd..d1819bfe3 100644 --- a/archive/tags/props/index.html +++ b/archive/tags/props/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: props
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang


Directed by James Wu and Nathan Zhang

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

Fall 2022

Directed by Thomas McGall

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

Winter 2021

Directed by Eugene Lo

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin


Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: props
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang


Directed by James Wu and Nathan Zhang

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

Fall 2022

Directed by Thomas McGall

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

Winter 2021

Directed by Eugene Lo

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin


Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/protocol/index.html b/archive/tags/protocol/index.html index 02cd9318b..8f782dba0 100644 --- a/archive/tags/protocol/index.html +++ b/archive/tags/protocol/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: protocol
Winter 2022

Directed by Nareh Agazaryan

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

\ No newline at end of file +

Workshop Archive

Filtered by tag: protocol
Winter 2022

Directed by Nareh Agazaryan

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

\ No newline at end of file diff --git a/archive/tags/pygame/index.html b/archive/tags/pygame/index.html index b743bc695..b6c3b2500 100644 --- a/archive/tags/pygame/index.html +++ b/archive/tags/pygame/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: pygame
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 4: PyGame

    python
    pygame

    README 

    · Slides 

    Taught by Jody Lin

\ No newline at end of file +

Workshop Archive

Filtered by tag: pygame
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 4: PyGame

    python
    pygame

    README 

    · Slides 

    Taught by Jody Lin

\ No newline at end of file diff --git a/archive/tags/python/index.html b/archive/tags/python/index.html index 9825a0dea..273364c6d 100644 --- a/archive/tags/python/index.html +++ b/archive/tags/python/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: python
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 1: Intro to Python

    python

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Einar Balan

  • Session 2: Data Structures in Python

    python
    data structures

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Nareh Agazaryan

  • Session 3: Classes and Inheritance

    python
    classes

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Alex Xia

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 1: Basics of Python

    python

    README 

    · Slides 

    Taught by Jody Lin

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

  • Session 4: PyGame

    python
    pygame

    README 

    · Slides 

    Taught by Jody Lin

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file +

Workshop Archive

Filtered by tag: python
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 1: Intro to Python

    python

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Einar Balan

  • Session 2: Data Structures in Python

    python
    data structures

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Nareh Agazaryan

  • Session 3: Classes and Inheritance

    python
    classes

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Alex Xia

  • Session 4: File I/O and Automation

    python
    modules
    automation

    README 

    · Slides 

    · Recording 

    Taught by Jody Lin and Eric Yang

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

  • Session 6: Web Development with Django

    django
    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Eric Yang

  • Session 7: Web Development Part 2

    django
    database

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs and Jody Lin

  • Session 8: Standard Library and Packages

    machine learning
    computer vision
    python

    README 

    · Slides 

    · Recording 

    Taught by Jakob Reinwald and Chandra Suresh

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 1: Basics of Python

    python

    README 

    · Slides 

    Taught by Jody Lin

  • Session 2: Functions and Data Structures

    python
    functions
    data structures

    README 

    · Slides 

    Taught by Rajeshwari Jadhav

  • Session 3: Class/Objects, Modules, and File Handling

    python
    classes
    modules

    README 

    · Slides 

    Taught by Furn Techalertumpai

  • Session 4: PyGame

    python
    pygame

    README 

    · Slides 

    Taught by Jody Lin

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 6: Web Dev Part 1

    django
    html
    css

    README 

    · Slides 

    Taught by Connie Chen

  • Session 7: Web Dev Part 2

    django
    javascript
    api
    json

    README 

    · Slides 

    Taught by Galen Wong

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file diff --git a/archive/tags/quantum-computing/index.html b/archive/tags/quantum-computing/index.html index 27740d1ec..a8cda1435 100644 --- a/archive/tags/quantum-computing/index.html +++ b/archive/tags/quantum-computing/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: quantum computing
Winter 2020

Directed by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: quantum computing
Winter 2020

Directed by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/react-native/index.html b/archive/tags/react-native/index.html index 9cdefeb79..83169ccd6 100644 --- a/archive/tags/react-native/index.html +++ b/archive/tags/react-native/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: react native
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: react native
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Winter 2021

Directed by Eugene Lo

  • Session 1: Intro to React Native and JS

    javascript
    expo
    react native

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 2: Intro to JSX and Basic Components

    jsx
    components

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Nareh Agazaryan

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 4: Intro to React Navigation

    navigation

    README 

    · Slides 

    · Recording 

    Taught by Christina Tong and Kristie Lim

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

  • Session 6: React Navigation with Data

    navigation
    local storage
    async storage

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim and Eugene Lo

  • Session 7: Firebase, Firestore, and Authentication

    firebase
    firestore
    authentication

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Alex Xia

\ No newline at end of file diff --git a/archive/tags/reactjs/index.html b/archive/tags/reactjs/index.html index 46a0f2ef1..04b114b16 100644 --- a/archive/tags/reactjs/index.html +++ b/archive/tags/reactjs/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: reactjs
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang


Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Galen Wong

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018

Directed by Dustin Newman

\ No newline at end of file +

Workshop Archive

Filtered by tag: reactjs
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang


Directed by James Wu and Nathan Zhang

  • Session 1: Intro to Fullstack

    fullstack

    README 

    · Slides 

    Taught by James Wu and Nathan Zhang

  • Session 2: Databases and Asynchronous Programming

    database
    mongodb
    async

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Nathan Zhang

  • Session 3: Servers and Web APIs

    backend
    nodejs
    express
    api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Satyen Subramaniam

  • Session 4: Backend Integration

    frontend
    reactjs
    axios

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 5: CSS and Components

    frontend
    reactjs
    css
    components
    props

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Shiyu Ye

  • Session 6: Navigation

    frontend
    reactjs
    navigation

    README 

    · Slides 

    · Recording 

    Taught by Jenna Wang and Nathan Zhang

Fall 2022

Directed by Thomas McGall

  • Session 1: Intro to React/HTML

    reactjs
    html

    README 

    · Slides 

    Taught by Thomas McGall

  • Session 2: Intro to CSS/Layout

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

  • Session 3: Components and Props

    components
    props
    reactjs

    README 

    · Slides 

    Taught by Jakob Reinwald

  • Session 4: JavaScript and Navigation

    navigation
    javascript
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 1: Intro to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Nareh Agazaryan

  • Session 2: Intro to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: Intro to React

    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and Eric Yang

  • Session 4: Props and Layout

    props
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

  • Session 6: Asynchronous Programming and Web API's

    async
    await
    json
    api
    promise

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan

  • Session 7: React Lifecyle

    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu

Spring 2021

Directed by Galen Wong

  • Session 6: Advanced React Hooks & Intro to Testing

    javascript
    reactjs
    jest

    README 

    · Slides 

    Taught by Tristan Que and Galen Wong

Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 1: Introduction to HTML/CSS

    html
    css

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 2: Introduction to JavaScript

    javascript

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu and Jamie Liu

  • Session 3: Webpage Interaction with the DOM

    html
    css
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong

  • Session 4: Advanced CSS

    css
    flexbox

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo

  • Session 5: Asynchronous Programming and Web APIs

    javascript
    api
    async

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

  • Session 7: Introduction to React.js

    reactjs
    javascript

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Jody Lin

  • Session 8: Node.js and Servers

    nodejs
    javascript
    express

    README 

    · Slides 

    · Recording 

    Taught by Jamie Liu and Timothy Gu

Fall 2019

Directed by Timothy Gu and Timothy Rediehs

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 3 Backend: What’s an API?

    api
    javascript
    nodejs

    README 

    · Slides 

    Taught by Jody Lin

  • Session 3 Frontend: JavaScript and the DOM

    javascript
    html

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: Introduction to Express.js

    express
    nodejs

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Timothy Rediehs

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 6 Backend: Introduction to Database

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 6 Frontend: More on React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Shirly Fang

  • Session 7: Full Stack: Bringing It Together

    fullstack
    reactjs
    nodejs

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Rediehs

Fall 2018

Directed by Kristie Lim and Prateek Singh

  • Session 1: Introduction to Frontend Development

    html
    css
    javascript

    README 

    · Slides 

    Taught by Kristie Lim and Prateek Singh

  • Session 2: Introduction to Backend Development

    javascript
    nodejs

    README 

    · Slides 

    Taught by Timothy Gu and Galen Wong

  • Session 3 Frontend: JavaScript and the DOM

    html
    css
    javascript

    README 

    · Slides 

    Taught by Dustin Newman

  • Session 3 Backend: What is an API?

    api
    javascript
    nodejs
    express

    README 

    · Slides 

    Taught by Galen Wong

  • Session 4 Frontend: CSS Layout

    css
    flexbox

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 4 Backend: More on Express

    api
    nodejs
    express

    README 

    · Slides 

    Taught by Timothy Gu

  • Session 5 Frontend: Introduction to React

    reactjs
    javascript

    README 

    · Slides 

    Taught by Galen Wong

  • Session 5 Backend: Asynchronous Actions

    nodejs
    javascript
    async

    README 

    · Slides 

    Taught by Kristie Lim

  • Session 6 Frontend: Dynamic Content

    reactjs
    api

    README 

    · Slides 

    Taught by Prateek Singh

  • Session 6 Backend: Databases

    database
    firebase
    javascript

    README 

    · Slides 

    Taught by Prateek Singh

Spring 2018

Directed by Dustin Newman

\ No newline at end of file diff --git a/archive/tags/regex/index.html b/archive/tags/regex/index.html index f3fffdf4a..841036d3b 100644 --- a/archive/tags/regex/index.html +++ b/archive/tags/regex/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: regex
Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: regex
Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file diff --git a/archive/tags/regression/index.html b/archive/tags/regression/index.html index fbdf9a9ca..0051db132 100644 --- a/archive/tags/regression/index.html +++ b/archive/tags/regression/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: regression
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: regression
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/research/index.html b/archive/tags/research/index.html index f74e96c4f..843c975a5 100644 --- a/archive/tags/research/index.html +++ b/archive/tags/research/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: research
Spring 2020

Directed by Asha Kar and Eugene Lo

  • Research

    research

    Recording 

    Taught by John Dang

\ No newline at end of file +

Workshop Archive

Filtered by tag: research
Spring 2020

Directed by Asha Kar and Eugene Lo

  • Research

    research

    Recording 

    Taught by John Dang

\ No newline at end of file diff --git a/archive/tags/s3/index.html b/archive/tags/s3/index.html index 697d32ef8..0ca5b462c 100644 --- a/archive/tags/s3/index.html +++ b/archive/tags/s3/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: s3
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: s3
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 1: Intro to Cloud

    cloud computing
    aws
    s3

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Katelyn Yu

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

  • Session 4: DevOps + Cloud

    docker
    elastic beanstalk
    devops
    aws

    README 

    · Slides 

    · Recording 

    Taught by Satyen Subramaniam and Nathan Zhang

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

  • Session 6: Not Data Science. Minecraft

    minecraft
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/sagemaker/index.html b/archive/tags/sagemaker/index.html index 58d39dc84..4956335dc 100644 --- a/archive/tags/sagemaker/index.html +++ b/archive/tags/sagemaker/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: sagemaker
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: sagemaker
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/screenreader/index.html b/archive/tags/screenreader/index.html index 22befb605..440e33f45 100644 --- a/archive/tags/screenreader/index.html +++ b/archive/tags/screenreader/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: screenreader
Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

\ No newline at end of file +

Workshop Archive

Filtered by tag: screenreader
Fall 2020

Directed by Miles Wu and Jamie Liu

  • Session 6: Responsive Design and Accessibility

    css
    screenreader
    design
    accessibility

    README 

    · Slides 

    · Recording 

    Taught by Kristie Lim

\ No newline at end of file diff --git a/archive/tags/scripting/index.html b/archive/tags/scripting/index.html index 0c178df7e..c66ba4254 100644 --- a/archive/tags/scripting/index.html +++ b/archive/tags/scripting/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: scripting
Spring 2020

Directed by Timothy Rediehs and Alex Xia

  • Session 3: Shell Scripting

    shell
    scripting
    bash

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Kristie Lim

\ No newline at end of file +

Workshop Archive

Filtered by tag: scripting
Spring 2020

Directed by Timothy Rediehs and Alex Xia

  • Session 3: Shell Scripting

    shell
    scripting
    bash

    README 

    · Slides 

    · Recording 

    Taught by Eugene Lo and Kristie Lim

\ No newline at end of file diff --git a/archive/tags/selenium/index.html b/archive/tags/selenium/index.html index 961d1a8d2..05374e199 100644 --- a/archive/tags/selenium/index.html +++ b/archive/tags/selenium/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: selenium
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file +

Workshop Archive

Filtered by tag: selenium
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file diff --git a/archive/tags/serverless-computing/index.html b/archive/tags/serverless-computing/index.html index 3b7b1bc7e..6d7d02971 100644 --- a/archive/tags/serverless-computing/index.html +++ b/archive/tags/serverless-computing/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: serverless computing
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: serverless computing
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 3: Serverless Computing

    serverless computing
    crud api

    README 

    · Slides 

    · Recording 

    Taught by Einar Balan and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/shell/index.html b/archive/tags/shell/index.html index 866fa04d3..09155e477 100644 --- a/archive/tags/shell/index.html +++ b/archive/tags/shell/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: shell
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: shell
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file diff --git a/archive/tags/sklearn/index.html b/archive/tags/sklearn/index.html index aee10a636..e6fedfe02 100644 --- a/archive/tags/sklearn/index.html +++ b/archive/tags/sklearn/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: sklearn
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: sklearn
Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 5: Data Mining and Modeling

    data mining
    ai
    machine learning
    colab
    regression
    sklearn

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/sql/index.html b/archive/tags/sql/index.html index 79e37df9b..f472490fa 100644 --- a/archive/tags/sql/index.html +++ b/archive/tags/sql/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: sql
Winter 2021

Directed by Asha Kar

Fall 2017

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

\ No newline at end of file +

Workshop Archive

Filtered by tag: sql
Winter 2021

Directed by Asha Kar

Fall 2017

  • Session 4: Relational Databases

    database
    mysql
    sql

    README 

    · Slides 

    Taught by Shannon Phu

\ No newline at end of file diff --git a/archive/tags/state/index.html b/archive/tags/state/index.html index 908ecddb8..48e71a2ca 100644 --- a/archive/tags/state/index.html +++ b/archive/tags/state/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: state
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Fall 2022

Directed by Thomas McGall

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Nareh Agazaryan

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo


Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

Winter 2021

Directed by Eugene Lo

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin


Directed by Asha Kar

\ No newline at end of file +

Workshop Archive

Filtered by tag: state
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Fall 2022

Directed by Thomas McGall

  • Session 5: Handling State and Events

    state
    hooks
    event handling
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 6: React Lifecycle

    reactjs
    hooks
    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by James Wu and Katelyn Yu

Winter 2022

Directed by Nareh Agazaryan

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo


Directed by Christina Tong and Einar Balan

  • Intro to Web Development: React.js

    jsx
    components
    props
    state
    reactjs

    README 

    · Slides 

    · Recording 

    Taught by Maggie Li

  • Intro to React Native

    jsx
    components
    state
    react native

    README 

    · Slides 

    · Recording 

    Taught by James Wu

Fall 2021

Directed by Eric Yang and Nareh Agazaryan

  • Session 5: Event Handling and State

    state
    event handling

    README 

    · Slides 

    · Recording 

    Taught by Miles Wu

Winter 2021

Directed by Eugene Lo

  • Session 3: Controllable and User Interactive Components

    functional components
    props
    state

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia and Jody Lin


Directed by Asha Kar

\ No newline at end of file diff --git a/archive/tags/supervised-learning/index.html b/archive/tags/supervised-learning/index.html index 9b9f1f3cf..a10f42f06 100644 --- a/archive/tags/supervised-learning/index.html +++ b/archive/tags/supervised-learning/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: supervised learning
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: supervised learning
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/svelte/index.html b/archive/tags/svelte/index.html index 216392ca6..d69be583a 100644 --- a/archive/tags/svelte/index.html +++ b/archive/tags/svelte/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: svelte
Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

\ No newline at end of file +

Workshop Archive

Filtered by tag: svelte
Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

\ No newline at end of file diff --git a/archive/tags/swift/index.html b/archive/tags/swift/index.html index b7b9948b2..55d8ea6c5 100644 --- a/archive/tags/swift/index.html +++ b/archive/tags/swift/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: swift
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Spring 2017

\ No newline at end of file +

Workshop Archive

Filtered by tag: swift
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

  • Session 4: Advanced Views

    navigation
    protocol

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan and James Wu

  • Session 5: State and Bindings

    json
    http
    api
    firebase

    README 

    · Slides 

    · Recording 

    Taught by Eric Yang and Thomas McGall

  • Session 6: Hack Sprint Mini-Talk: App Store

    app store
    deployment

    Recording 

    Taught by Eugene Lo

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

Spring 2017

\ No newline at end of file diff --git a/archive/tags/swiftUI/index.html b/archive/tags/swiftUI/index.html index 254af3e2a..3d10c7db5 100644 --- a/archive/tags/swiftUI/index.html +++ b/archive/tags/swiftUI/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: swiftUI
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: swiftUI
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

\ No newline at end of file diff --git a/archive/tags/tech/index.html b/archive/tags/tech/index.html index 1419f1d8e..8e8261111 100644 --- a/archive/tags/tech/index.html +++ b/archive/tags/tech/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: tech
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file +

Workshop Archive

Filtered by tag: tech
Spring 2020

Directed by Asha Kar and Eugene Lo

  • EdTech

    edtech

    Recording 

    Taught by Matthew Wang

  • Open Source

    open source

    Slides 

    · Recording 

    Taught by Timothy Gu

  • CubeSats

    cubesats
    bruinspace

    Recording 

    Taught by Karthik Pullela

  • Research

    research

    Recording 

    Taught by John Dang

  • Design Thinking

    design

    Recording 

    Taught by Hirday Gupta

  • Product Management

    product management

    Recording 

    Taught by Rucha Patki

\ No newline at end of file diff --git a/archive/tags/typescript/index.html b/archive/tags/typescript/index.html index cc9b4519b..55c91b25a 100644 --- a/archive/tags/typescript/index.html +++ b/archive/tags/typescript/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: typescript
Spring 2021

Directed by Galen Wong

\ No newline at end of file +

Workshop Archive

Filtered by tag: typescript
Spring 2021

Directed by Galen Wong

\ No newline at end of file diff --git a/archive/tags/ui/index.html b/archive/tags/ui/index.html index 555417c95..db3bfb73d 100644 --- a/archive/tags/ui/index.html +++ b/archive/tags/ui/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: ui
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Caitlyn Chen and Sara Kuchimpos

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Sara Kuchimpos and Caitlyn Chen

Winter 2021

Directed by Asha Kar

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

\ No newline at end of file +

Workshop Archive

Filtered by tag: ui
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Caitlyn Chen and Sara Kuchimpos

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Sara Kuchimpos and Caitlyn Chen

Winter 2021

Directed by Asha Kar

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

\ No newline at end of file diff --git a/archive/tags/uikit/index.html b/archive/tags/uikit/index.html index 6f33fec86..9d7974ce1 100644 --- a/archive/tags/uikit/index.html +++ b/archive/tags/uikit/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: uikit
Winter 2019

Directed by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: uikit
Winter 2019

Directed by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/unity/index.html b/archive/tags/unity/index.html index 8127b5db3..bed60f256 100644 --- a/archive/tags/unity/index.html +++ b/archive/tags/unity/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: unity
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Game Development

    unity

    Slides 

    · Recording 

    Taught by Peter Sutarjo

Winter 2021

Directed by Asha Kar

  • Intro to Unity

    unity

    Recording 

    Taught by Jaret Ishii (ACM Studio)

\ No newline at end of file +

Workshop Archive

Filtered by tag: unity
Winter 2023

Directed by Maggie Li and Katelyn Yu

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to Game Development

    unity

    Slides 

    · Recording 

    Taught by Peter Sutarjo

Winter 2021

Directed by Asha Kar

  • Intro to Unity

    unity

    Recording 

    Taught by Jaret Ishii (ACM Studio)

\ No newline at end of file diff --git a/archive/tags/unsupervised-learning/index.html b/archive/tags/unsupervised-learning/index.html index 89ee4d3ae..8275a7723 100644 --- a/archive/tags/unsupervised-learning/index.html +++ b/archive/tags/unsupervised-learning/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: unsupervised learning
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

\ No newline at end of file +

Workshop Archive

Filtered by tag: unsupervised learning
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 5: Machine Learning

    machine learning
    supervised learning
    unsupervised learning
    sagemaker
    aws

    README 

    · Slides 

    · Recording 

    Taught by Brooke Jiang and Andy Lewis

\ No newline at end of file diff --git a/archive/tags/useEffect/index.html b/archive/tags/useEffect/index.html index 1d24e49b2..61dd2ca48 100644 --- a/archive/tags/useEffect/index.html +++ b/archive/tags/useEffect/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: useEffect
Fall 2021

Directed by Eric Yang and Nareh Agazaryan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file +

Workshop Archive

Filtered by tag: useEffect
Fall 2021

Directed by Eric Yang and Nareh Agazaryan

Winter 2021

Directed by Eugene Lo

  • Session 5: Asynchronous Programming and useEffect

    async
    await
    promise
    fetch
    useEffect

    README 

    · Slides 

    · Recording 

    Taught by Galen Wong and Einar Balan

\ No newline at end of file diff --git a/archive/tags/ux/index.html b/archive/tags/ux/index.html index c6e691814..779d4ab6f 100644 --- a/archive/tags/ux/index.html +++ b/archive/tags/ux/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: ux
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Caitlyn Chen and Sara Kuchimpos

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Sara Kuchimpos and Caitlyn Chen

Winter 2021

Directed by Asha Kar

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

\ No newline at end of file +

Workshop Archive

Filtered by tag: ux
Winter 2023

Directed by Maggie Li and Katelyn Yu

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Caitlyn Chen and Sara Kuchimpos

Winter 2022

Directed by Christina Tong and Einar Balan

  • Intro to UI/UX Design

    ui
    ux
    design

    Slides 

    · Recording 

    Taught by Sara Kuchimpos and Caitlyn Chen

Winter 2021

Directed by Asha Kar

  • Intro to UI/UX

    ui
    ux
    design

    Recording 

    Taught by Jennifer Lin (ACM Design) and Chinmaya Vempati (ACM Design)

\ No newline at end of file diff --git a/archive/tags/views/index.html b/archive/tags/views/index.html index 3a48955eb..c6b6092ad 100644 --- a/archive/tags/views/index.html +++ b/archive/tags/views/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: views
Winter 2022

Directed by Nareh Agazaryan

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

Winter 2019

Directed by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: views
Winter 2022

Directed by Nareh Agazaryan

  • Session 3: State and Bindings

    views
    state

    README 

    · Slides 

    · Recording 

    Taught by Katelyn Yu and Eugene Lo

Winter 2019

Directed by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/archive/tags/vim/index.html b/archive/tags/vim/index.html index 57e0550e0..2df2d089f 100644 --- a/archive/tags/vim/index.html +++ b/archive/tags/vim/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: vim
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: vim
Spring 2023

Directed by Abigail Tran and Shiyu Ye

  • Session 1: Shell

    shell
    bash

    Slides 

    Taught by Jakob Reinwald and Shiyu Ye

  • Session 2: Git and GitHub

    git
    github

    Slides 

    Taught by Christina Tong and Abigail Tran

  • Session 3: Vim

    vim

    Slides 

    Taught by Jenna Wang and James Wu

  • Session 4: Markdown and LaTeX

    markdown
    latex

    Slides 

    Taught by Maggie Li and Shiyu Ye

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file diff --git a/archive/tags/vm-computing/index.html b/archive/tags/vm-computing/index.html index 4c3c9addb..dfe75de7b 100644 --- a/archive/tags/vm-computing/index.html +++ b/archive/tags/vm-computing/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: vm computing
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

\ No newline at end of file +

Workshop Archive

Filtered by tag: vm computing
Spring 2023

Directed by Andy Lewis and Satyen Subramaniam

  • Session 2: VM Computing

    vm computing
    aws
    ec2

    README 

    · Slides 

    · Recording 

    Taught by Jonathan Si and Satyen Subramaniam

\ No newline at end of file diff --git a/archive/tags/vscode/index.html b/archive/tags/vscode/index.html index 1f2eb5244..bbe448d43 100644 --- a/archive/tags/vscode/index.html +++ b/archive/tags/vscode/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: vscode
Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file +

Workshop Archive

Filtered by tag: vscode
Spring 2022

Directed by Chandra Suresh and Nathan Zhang

  • Session 1: Git, VS Code, and Shell

    git
    vscode
    shell
    bash

    README 

    · Slides 

    Taught by Jakob Reinwald, Chandra Suresh, and Anakin Trotter

  • Session 2: Svelte

    svelte

    README 

    · Slides 

    Taught by Nareh Agazaryan, Jakob Reinwald, Anakin Trotter, and Nathan Zhang

  • Session 3: Firebase

    firebase
    javascript

    README 

    · Slides 

    Taught by Jakob Reinwald and Anakin Trotter

Spring 2020

Directed by Timothy Rediehs and Alex Xia

\ No newline at end of file diff --git a/archive/tags/web-scraping/index.html b/archive/tags/web-scraping/index.html index ccd165fde..40d4189a5 100644 --- a/archive/tags/web-scraping/index.html +++ b/archive/tags/web-scraping/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: web scraping
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file +

Workshop Archive

Filtered by tag: web scraping
Spring 2021

Directed by Nareh Agazaryan and Einar Balan

  • Session 5: Web Scraping

    python
    web scraping
    selenium

    README 

    · Slides 

    · Recording 

    Taught by Timothy Rediehs

Spring 2019

Directed by Jody Lin and Rajeshwari Jadhav

  • Session 8: Web Scraping

    beautifulsoup
    selenium
    web scraping

    README 

    · Slides 

    Taught by Timothy Rediehs

\ No newline at end of file diff --git a/archive/tags/webassembly/index.html b/archive/tags/webassembly/index.html index d908a7ef0..a492e2484 100644 --- a/archive/tags/webassembly/index.html +++ b/archive/tags/webassembly/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: webassembly
Spring 2021

Directed by Galen Wong

  • Session 5: WebAssembly

    javascript
    webassembly

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Gu

\ No newline at end of file +

Workshop Archive

Filtered by tag: webassembly
Spring 2021

Directed by Galen Wong

  • Session 5: WebAssembly

    javascript
    webassembly

    README 

    · Slides 

    Taught by Kristie Lim and Timothy Gu

\ No newline at end of file diff --git a/archive/tags/webrtc/index.html b/archive/tags/webrtc/index.html index a4505e6f7..4e839eca1 100644 --- a/archive/tags/webrtc/index.html +++ b/archive/tags/webrtc/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: webrtc
Spring 2021

Directed by Galen Wong

  • Session 4: WebRTC

    javascript
    webrtc

    README 

    · Slides 

    Taught by Jamie Liu and Galen Wong

\ No newline at end of file +

Workshop Archive

Filtered by tag: webrtc
Spring 2021

Directed by Galen Wong

  • Session 4: WebRTC

    javascript
    webrtc

    README 

    · Slides 

    Taught by Jamie Liu and Galen Wong

\ No newline at end of file diff --git a/archive/tags/xcode/index.html b/archive/tags/xcode/index.html index 65f5a2a4a..4a33263ca 100644 --- a/archive/tags/xcode/index.html +++ b/archive/tags/xcode/index.html @@ -48,4 +48,4 @@ } } }) -

Workshop Archive

Filtered by tag: xcode
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file +

Workshop Archive

Filtered by tag: xcode
Winter 2022

Directed by Nareh Agazaryan

  • Session 1: Introduction to Swift

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Nareh Agazaryan

  • Session 2: Swift Fundamentals

    swift
    xcode
    swiftUI

    README 

    · Slides 

    · Recording 

    Taught by Alex Xia

Winter 2019

Directed by Kevin Tan

  • Session 1: Intro to iOS Development

    ios
    swift
    xcode

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 2: Intro to View Hierarchy

    ios
    views

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 3: Protocols, Delegates, and UIKit

    ios
    uikit

    README 

    · Slides 

    Taught by Kevin Tan

  • Session 4: CocoaPods and Firebase

    ios
    cocoapods
    firebase

    README 

    · Slides 

    Taught by Kevin Tan

\ No newline at end of file diff --git a/blog/index.html b/blog/index.html index fde7f35be..ac39ba459 100644 --- a/blog/index.html +++ b/blog/index.html @@ -48,10 +48,10 @@ } } }) -

Blog Posts

Page 1 of 1
\ No newline at end of file +Time: 6-8pm Teachers Kristie Lim Prateek Singh Resources Slides Session…

Page 1 of 1
\ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index 440a4c518..dd6bc7dc0 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"polyfill":["/polyfill-be533f60f5ee6427c8fd.js"],"app":["/app-ee81dc7c85a8936cd7d9.js"],"component---src-components-archive-page-archive-page-template-js":["/component---src-components-archive-page-archive-page-template-js-990363316e8b6453d78e.js"],"component---src-components-archive-page-tag-page-template-js":["/component---src-components-archive-page-tag-page-template-js-208b66ece16b94c2b77a.js"],"component---src-components-blog-page-blog-page-template-js":["/component---src-components-blog-page-blog-page-template-js-a7f46e096d66f2b4568c.js"],"component---src-components-post-post-template-js":["/component---src-components-post-post-template-js-1e4cd9472b5c526b3901.js"],"component---src-pages-404-js":["/component---src-pages-404-js-09633c62b79dae1ec0aa.js"],"component---src-pages-about-js":["/component---src-pages-about-js-b0fa1224e581148d6e1b.js"],"component---src-pages-events-js":["/component---src-pages-events-js-66f9341d92d7515aac07.js"],"component---src-pages-index-js":["/component---src-pages-index-js-c0a89fb77a0fba629888.js"]} \ No newline at end of file +{"polyfill":["/polyfill-be533f60f5ee6427c8fd.js"],"app":["/app-ee81dc7c85a8936cd7d9.js"],"component---src-components-archive-page-archive-page-template-js":["/component---src-components-archive-page-archive-page-template-js-990363316e8b6453d78e.js"],"component---src-components-archive-page-tag-page-template-js":["/component---src-components-archive-page-tag-page-template-js-208b66ece16b94c2b77a.js"],"component---src-components-blog-page-blog-page-template-js":["/component---src-components-blog-page-blog-page-template-js-a7f46e096d66f2b4568c.js"],"component---src-components-post-post-template-js":["/component---src-components-post-post-template-js-1e4cd9472b5c526b3901.js"],"component---src-pages-404-js":["/component---src-pages-404-js-09633c62b79dae1ec0aa.js"],"component---src-pages-about-js":["/component---src-pages-about-js-b0fa1224e581148d6e1b.js"],"component---src-pages-events-js":["/component---src-pages-events-js-66f9341d92d7515aac07.js"],"component---src-pages-index-js":["/component---src-pages-index-js-2854e1544b1f257b833f.js"]} \ No newline at end of file diff --git a/component---src-pages-index-js-c0a89fb77a0fba629888.js b/component---src-pages-index-js-2854e1544b1f257b833f.js similarity index 99% rename from component---src-pages-index-js-c0a89fb77a0fba629888.js rename to component---src-pages-index-js-2854e1544b1f257b833f.js index e8dfb40c9..2a50e66b8 100644 --- a/component---src-pages-index-js-c0a89fb77a0fba629888.js +++ b/component---src-pages-index-js-2854e1544b1f257b833f.js @@ -1,3 +1,3 @@ -/*! For license information please see component---src-pages-index-js-c0a89fb77a0fba629888.js.LICENSE.txt */ -(self.webpackChunkhack_uclaacm_com=self.webpackChunkhack_uclaacm_com||[]).push([[678],{5106:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},7946:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={black:"#000",white:"#fff"};t.default=n},8650:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},2881:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},5613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},620:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},7552:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},2421:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"};t.default=n},6742:function(e,t,n){"use strict";var r=n(4038),i=n(1951),o=n(7294),a=n(5505),s=n(4621),c=n(7055),l=o.forwardRef((function(e,t){var n=e.children,s=e.classes,l=e.className,u=e.focusVisibleClassName,d=(0,i.Z)(e,["children","classes","className","focusVisibleClassName"]);return o.createElement(c.Z,(0,r.Z)({className:(0,a.Z)(s.root,l),focusVisibleClassName:(0,a.Z)(u,s.focusVisible),ref:t},d),n,o.createElement("span",{className:s.focusHighlight}))}));t.Z=(0,s.Z)((function(e){return{root:{display:"block",textAlign:"inherit",width:"100%","&:hover $focusHighlight":{opacity:e.palette.action.hoverOpacity},"&$focusVisible $focusHighlight":{opacity:.12}},focusVisible:{},focusHighlight:{overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:e.transitions.create("opacity",{duration:e.transitions.duration.short})}}}),{name:"MuiCardActionArea"})(l)},6095:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hexToRgb=o,t.rgbToHex=function(e){if(0===e.indexOf("#"))return e;var t=s(e).values;return"#".concat(t.map((function(e){return 1===(t=e.toString(16)).length?"0".concat(t):t;var t})).join(""))},t.hslToRgb=a,t.decomposeColor=s,t.recomposeColor=c,t.getContrastRatio=function(e,t){var n=l(e),r=l(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.getLuminance=l,t.emphasize=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return l(e)>.5?d(e,t):f(e,t)},t.fade=function(e,t){0;return u(e,t)},t.alpha=u,t.darken=d,t.lighten=f;var r=n(466);function i(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){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map((function(e){return e+e}))),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((function(e,t){return t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3})).join(", "),")"):""}function a(e){var t=(e=s(e)).values,n=t[0],r=t[1]/100,i=t[2]/100,o=r*Math.min(i,1-i),a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return i-o*Math.max(Math.min(t-3,9-t,1),-1)},l="rgb",u=[Math.round(255*a(0)),Math.round(255*a(8)),Math.round(255*a(4))];return"hsla"===e.type&&(l+="a",u.push(t[3])),c({type:l,values:u})}function s(e){if(e.type)return e;if("#"===e.charAt(0))return s(o(e));var t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla"].indexOf(n))throw new Error((0,r.formatMuiErrorMessage)(3,e));var i=e.substring(t+1,e.length-1).split(",");return{type:n,values:i=i.map((function(e){return parseFloat(e)}))}}function c(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 l(e){var t="hsl"===(e=s(e)).type?s(a(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=s(e),t=i(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),e.values[3]=t,c(e)}function d(e,t){if(e=s(e),t=i(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 c(e)}function f(e,t){if(e=s(e),t=i(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 c(e)}},3017:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,r=e.unit,s=void 0===r?"px":r,c=e.step,l=void 0===c?5:c,u=(0,o.default)(e,["values","unit","step"]);function d(e){var t="number"==typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(s,")")}function f(e,t){var r=a.indexOf(t);return r===a.length-1?d(e):"@media (min-width:".concat("number"==typeof n[e]?n[e]:e).concat(s,") and ")+"(max-width:".concat((-1!==r&&"number"==typeof n[a[r+1]]?n[a[r+1]]:t)-l/100).concat(s,")")}return(0,i.default)({keys:a,values:n,up:d,down:function(e){var t=a.indexOf(e)+1,r=n[a[t]];return t===a.length?d("xs"):"@media (max-width:".concat(("number"==typeof r&&t>0?r:e)-l/100).concat(s,")")},between:f,only:function(e){return f(e,e)},width:function(e){return n[e]}},u)},t.keys=void 0;var i=r(n(4362)),o=r(n(3891)),a=["xs","sm","md","lg","xl"];t.keys=a},8752:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r;return(0,o.default)({gutters:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return console.warn(["Material-UI: theme.mixins.gutters() is deprecated.","You can use the source of the mixin directly:","\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n "].join("\n")),(0,o.default)({paddingLeft:t(2),paddingRight:t(2)},n,(0,i.default)({},e.up("sm"),(0,o.default)({paddingLeft:t(3),paddingRight:t(3)},n[e.up("sm")])))},toolbar:(r={minHeight:56},(0,i.default)(r,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),(0,i.default)(r,e.up("sm"),{minHeight:64}),r)},n)};var i=r(n(4176)),o=r(n(4362))},3596:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.primary,n=void 0===t?{light:l.default[300],main:l.default[500],dark:l.default[700]}:t,r=e.secondary,b=void 0===r?{light:u.default.A200,main:u.default.A400,dark:u.default.A700}:r,w=e.error,S=void 0===w?{light:d.default[300],main:d.default[500],dark:d.default[700]}:w,O=e.warning,k=void 0===O?{light:f.default[300],main:f.default[500],dark:f.default[700]}:O,x=e.info,E=void 0===x?{light:p.default[300],main:p.default[500],dark:p.default[700]}:x,_=e.success,j=void 0===_?{light:h.default[300],main:h.default[500],dark:h.default[700]}:_,T=e.type,M=void 0===T?"light":T,P=e.contrastThreshold,C=void 0===P?3:P,L=e.tonalOffset,z=void 0===L?.2:L,R=(0,o.default)(e,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function A(e){return(0,v.getContrastRatio)(e,m.text.primary)>=C?m.text.primary:g.text.primary}var W=function(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;if(!(e=(0,i.default)({},e)).main&&e[t]&&(e.main=e[t]),!e.main)throw new Error((0,a.formatMuiErrorMessage)(4,t));if("string"!=typeof e.main)throw new Error(_formatMuiErrorMessage(5,JSON.stringify(e.main)));return y(e,"light",n,z),y(e,"dark",r,z),e.contrastText||(e.contrastText=A(e.main)),e},Z={dark:m,light:g};0;return(0,a.deepmerge)((0,i.default)({common:s.default,type:M,primary:W(n),secondary:W(b,"A400","A200","A700"),error:W(S),warning:W(k),info:W(E),success:W(j),grey:c.default,contrastThreshold:C,getContrastText:A,augmentColor:W,tonalOffset:z},Z[M]),R)},t.dark=t.light=void 0;var i=r(n(4362)),o=r(n(3891)),a=n(466),s=r(n(7946)),c=r(n(2881)),l=r(n(5613)),u=r(n(7552)),d=r(n(2421)),f=r(n(620)),p=r(n(5106)),h=r(n(8650)),v=n(6095),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:s.default.white,default:c.default[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,activatedOpacity:.12}};t.light=g;var m={text:{primary:s.default.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:c.default[800],default:"#303030"},action:{active:s.default.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,activatedOpacity:.24}};function y(e,t,n,r){var i=r.light||r,o=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,v.lighten)(e.main,i):"dark"===t&&(e.dark=(0,v.darken)(e.main,o)))}t.dark=m},2034:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;if(e.mui)return e;var t=(0,r.createUnarySpacing)({spacing:e}),n=function(){for(var e=arguments.length,n=new Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,r=e.mixins,v=void 0===r?{}:r,g=e.palette,m=void 0===g?{}:g,y=e.spacing,b=e.typography,w=void 0===b?{}:b,S=(0,i.default)(e,["breakpoints","mixins","palette","spacing","typography"]),O=(0,c.default)(m),k=(0,a.default)(n),x=(0,f.default)(y),E=(0,o.deepmerge)({breakpoints:k,direction:"ltr",mixins:(0,s.default)(k,x,v),overrides:{},palette:O,props:{},shadows:u.default,typography:(0,l.default)(O,w),spacing:x,shape:d.default,transitions:p.default,zIndex:h.default},S),_=arguments.length,j=new Array(_>1?_-1:0),T=1;T<_;T++)j[T-1]=arguments[T];return E=j.reduce((function(e,t){return(0,o.deepmerge)(e,t)}),E)}var g=v;t.default=g},5587:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n="function"==typeof t?t(e):t,r=n.fontFamily,d=void 0===r?u:r,f=n.fontSize,p=void 0===f?14:f,h=n.fontWeightLight,v=void 0===h?300:h,g=n.fontWeightRegular,m=void 0===g?400:g,y=n.fontWeightMedium,b=void 0===y?500:y,w=n.fontWeightBold,S=void 0===w?700:w,O=n.htmlFontSize,k=void 0===O?16:O,x=n.allVariants,E=n.pxToRem,_=(0,o.default)(n,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]);0;var j=p/14,T=E||function(e){return"".concat(e/k*j,"rem")},M=function(e,t,n,r,o){return(0,i.default)({fontFamily:d,fontWeight:e,fontSize:T(t),lineHeight:n},d===u?{letterSpacing:"".concat(s(r/t),"em")}:{},o,x)},P={h1:M(v,96,1.167,-1.5),h2:M(v,60,1.2,-.5),h3:M(m,48,1.167,0),h4:M(m,34,1.235,.25),h5:M(m,24,1.334,0),h6:M(b,20,1.6,.15),subtitle1:M(m,16,1.75,.15),subtitle2:M(b,14,1.57,.1),body1:M(m,16,1.5,.15),body2:M(m,14,1.43,.15),button:M(b,14,1.75,.4,l),caption:M(m,12,1.66,.4),overline:M(m,12,2.66,1,l)};return(0,a.deepmerge)((0,i.default)({htmlFontSize:k,pxToRem:T,round:c,fontFamily:d,fontSize:p,fontWeightLight:v,fontWeightRegular:m,fontWeightMedium:b,fontWeightBold:S},P),_,{clone:!1})};var i=r(n(4362)),o=r(n(3891)),a=n(466);function s(e){return Math.round(1e5*e)/1e5}function c(e){return s(e)}var l={textTransform:"uppercase"},u='"Roboto", "Helvetica", "Arial", sans-serif'},2347:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=(0,r(n(8179)).default)();t.default=i},4014:function(e,t,n){"use strict";var r=n(8580);t.Z=void 0;var i=r(n(4362)),o=n(669),a=r(n(2347));var s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,o.makeStyles)(e,(0,i.default)({defaultTheme:a.default},t))};t.Z=s},8884:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;function n(){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 r=["none",n(0,2,1,-1,0,1,1,0,0,1,3,0),n(0,3,1,-2,0,2,2,0,0,1,5,0),n(0,3,3,-2,0,3,4,0,0,1,8,0),n(0,2,4,-1,0,4,5,0,0,1,10,0),n(0,3,5,-1,0,5,8,0,0,1,14,0),n(0,3,5,-1,0,6,10,0,0,1,18,0),n(0,4,5,-2,0,7,10,1,0,2,16,1),n(0,5,5,-3,0,8,10,1,0,3,14,2),n(0,5,6,-3,0,9,12,1,0,3,16,2),n(0,6,6,-3,0,10,14,1,0,4,18,3),n(0,6,7,-4,0,11,15,1,0,4,20,3),n(0,7,8,-4,0,12,17,2,0,5,22,4),n(0,7,8,-4,0,13,19,2,0,5,24,4),n(0,7,9,-4,0,14,21,2,0,5,26,4),n(0,8,9,-5,0,15,22,2,0,6,28,5),n(0,8,10,-5,0,16,24,2,0,6,30,5),n(0,8,11,-5,0,17,26,2,0,6,32,5),n(0,9,11,-5,0,18,28,2,0,7,34,6),n(0,9,12,-6,0,19,29,2,0,7,36,6),n(0,10,13,-6,0,20,31,3,0,8,38,7),n(0,10,13,-6,0,21,33,3,0,8,40,7),n(0,10,14,-6,0,22,35,3,0,8,42,7),n(0,11,14,-7,0,23,36,3,0,9,44,8),n(0,11,15,-7,0,24,38,3,0,9,46,8)];t.default=r},1144:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={borderRadius:4};t.default=n},4843:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.duration=t.easing=void 0;var i=r(n(3891)),o={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"};t.easing=o;var a={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function s(e){return"".concat(Math.round(e),"ms")}t.duration=a;var c={easing:o,duration:a,create:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.duration,r=void 0===n?a.standard:n,c=t.easing,l=void 0===c?o.easeInOut:c,u=t.delay,d=void 0===u?0:u;(0,i.default)(t,["duration","easing","delay"]);return(Array.isArray(e)?e:[e]).map((function(e){return"".concat(e," ").concat("string"==typeof r?r:s(r)," ").concat(l," ").concat("string"==typeof d?d:s(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))}};t.default=c},1887:function(e,t,n){"use strict";var r=n(8580);t.Z=function(){0;return(0,i.useTheme)()||o.default};var i=n(669),o=(r(n(7294)),r(n(2347)))},1346:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};t.default=n},5175:function(e,t,n){"use strict";var r=n(8580),i=n(1022);t.Z=void 0;var o=i(n(7294)),a=(0,r(n(8786)).default)(o.createElement("path",{d:"M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z"}),"ArrowForwardIos");t.Z=a},685:function(e,t,n){"use strict";var r=n(8580),i=n(1022);t.Z=void 0;var o=i(n(7294)),a=(0,r(n(8786)).default)(o.createElement(o.Fragment,null,o.createElement("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4V4c0-1.1-.9-2-2-2zm0 15.17L18.83 16H4V4h16v13.17z"}),o.createElement("path",{d:"M4 4v12h14.83L20 17.17V4z",opacity:".3"})),"ModeCommentTwoTone");t.Z=a},1812:function(e,t,n){"use strict";n.r(t),n.d(t,{borders:function(){return r.ZP},border:function(){return r.Cg},borderBottom:function(){return r.h$},borderColor:function(){return r.tv},borderLeft:function(){return r.sc},borderRadius:function(){return r.E0},borderRight:function(){return r.vQ},borderTop:function(){return r.j1},breakpoints:function(){return i.Z},compose:function(){return o.Z},styleFunctionSx:function(){return a.Z},css:function(){return a.i},display:function(){return s.ZP},flexbox:function(){return c.ZP},alignContent:function(){return c.Kv},alignItems:function(){return c.cq},alignSelf:function(){return c.uk},flex:function(){return c.fU},flexBasis:function(){return c.P_},flexDirection:function(){return c.Me},flexGrow:function(){return c.H7},flexShrink:function(){return c.i4},flexWrap:function(){return c.WO},justifyContent:function(){return c.Kl},justifyItems:function(){return c.eY},justifySelf:function(){return c.zo},order:function(){return c.vm},grid:function(){return l.ZP},gridArea:function(){return l.fD},gridAutoColumns:function(){return l.aN},gridAutoFlow:function(){return l.B},gridAutoRows:function(){return l.FW},gridColumn:function(){return l.t4},gridColumnGap:function(){return l.W3},gridGap:function(){return l.Cc},gridRow:function(){return l.oI},gridRowGap:function(){return l.Ub},gridTemplateAreas:function(){return l.zI},gridTemplateColumns:function(){return l.K$},gridTemplateRows:function(){return l.RG},palette:function(){return u.ZP},bgcolor:function(){return u.n9},color:function(){return u.$_},positions:function(){return d.ZP},bottom:function(){return d.I},left:function(){return d.t$},position:function(){return d.FK},right:function(){return d.F2},top:function(){return d.we},zIndex:function(){return d.W5},shadows:function(){return f.Z},sizing:function(){return p.ZP},boxSizing:function(){return p.ix},height:function(){return p.Cb},maxHeight:function(){return p.kC},maxWidth:function(){return p.kk},minHeight:function(){return p.jw},minWidth:function(){return p.ih},sizeHeight:function(){return p.Vs},sizeWidth:function(){return p.lO},width:function(){return p.bf},spacing:function(){return h.Z},createUnarySpacing:function(){return h.h},style:function(){return v.Z},typography:function(){return g.ZP},fontFamily:function(){return g.I8},fontSize:function(){return g.JB},fontStyle:function(){return g.p_},fontWeight:function(){return g.Ue},letterSpacing:function(){return g.rX},lineHeight:function(){return g.Nv},textAlign:function(){return g.yd}});var r=n(1158),i=n(3592),o=n(428),a=n(9030),s=n(5638),c=n(7762),l=n(8027),u=n(3178),d=n(1146),f=n(6563),p=n(2018),h=n(5408),v=n(2298),g=n(6674)},466:function(e,t,n){"use strict";function r(e,t){return function(){return null}}n.r(t),n.d(t,{HTMLElementType:function(){return b},chainPropTypes:function(){return r},deepmerge:function(){return i.Z},elementAcceptingRef:function(){return c},elementTypeAcceptingRef:function(){return l},exactProp:function(){return u},formatMuiErrorMessage:function(){return d.Z},getDisplayName:function(){return y},ponyfillGlobal:function(){return w},refType:function(){return S}});var i=n(7643),o=n(5697),a=n.n(o);var s=(a().element,function(){return null});s.isRequired=(a().element.isRequired,function(){return null});var c=s;var l=(o.elementType,function(){return null});n(6552),n(4038);function u(e){return e}var d=n(2192),f=n(1449),p=n(2051),h=/^\s*function(?:\s|\s*\/\*.*\*\/\s*)+([^(\s/]*)\s*/;function v(e){var t="".concat(e).match(h);return t&&t[1]||""}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e.displayName||e.name||v(e)||t}function m(e,t,n){var r=g(t);return e.displayName||(""!==r?"".concat(n,"(").concat(r,")"):n)}function y(e){if(null!=e){if("string"==typeof e)return e;if("function"==typeof e)return g(e,"Component");if("object"===(0,f.Z)(e))switch(e.$$typeof){case p.ForwardRef:return m(e,e.render,"ForwardRef");case p.Memo:return m(e,e.type,"memo");default:return}}}function b(e,t,n,r,i){return null}var w="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),S=a().oneOfType([a().func,a().object])},3299:function(e,t){"use strict";var n=60103,r=60106,i=60107,o=60108,a=60114,s=60109,c=60110,l=60112,u=60113,d=60120,f=60115,p=60116,h=60121,v=60122,g=60117,m=60129,y=60131;if("function"==typeof Symbol&&Symbol.for){var b=Symbol.for;n=b("react.element"),r=b("react.portal"),i=b("react.fragment"),o=b("react.strict_mode"),a=b("react.profiler"),s=b("react.provider"),c=b("react.context"),l=b("react.forward_ref"),u=b("react.suspense"),d=b("react.suspense_list"),f=b("react.memo"),p=b("react.lazy"),h=b("react.block"),v=b("react.server.block"),g=b("react.fundamental"),m=b("react.debug_trace_mode"),y=b("react.legacy_hidden")}function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case i:case a:case o:case u:case d:return e;default:switch(e=e&&e.$$typeof){case c:case l:case p:case f:case s:return e;default:return t}}case r:return t}}}var S=l,O=i,k=p,x=f,E=r,_=a,j=o,T=u;t.ForwardRef=S,t.Memo=x},2051:function(e,t,n){"use strict";e.exports=n(3299)},817:function(e,t,n){var r=n(3289),i=n(287).each;function o(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}o.prototype={constuctor:o,addHandler:function(e){var t=new r(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;i(t,(function(n,r){if(n.equals(e))return n.destroy(),!t.splice(r,1)}))},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){i(this.handlers,(function(e){e.destroy()})),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";i(this.handlers,(function(t){t[e]()}))}},e.exports=o},7870:function(e,t,n){var r=n(817),i=n(287),o=i.each,a=i.isFunction,s=i.isArray;function c(){if(!window.matchMedia)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!window.matchMedia("only all").matches}c.prototype={constructor:c,register:function(e,t,n){var i=this.queries,c=n&&this.browserIsIncapable;return i[e]||(i[e]=new r(e,c)),a(t)&&(t={match:t}),s(t)||(t=[t]),o(t,(function(t){a(t)&&(t={match:t}),i[e].addHandler(t)})),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},e.exports=c},3289:function(e){function t(e){this.options=e,!e.deferSetup&&this.setup()}t.prototype={constructor:t,setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},e.exports=t},287:function(e){e.exports={isFunction:function(e){return"function"==typeof e},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},each:function(e,t){for(var n=0,r=e.length;n=t||n<0||d&&e-l>=o}function S(){var e=h();if(w(e))return O(e);s=setTimeout(S,function(e){var n=t-(e-c);return d?p(n,o-(e-l)):n}(e))}function O(e){return s=void 0,m&&r?y(e):(r=i=void 0,a)}function k(){var e=h(),n=w(e);if(r=arguments,i=this,c=e,n){if(void 0===s)return b(c);if(d)return s=setTimeout(S,t),y(c)}return void 0===s&&(s=setTimeout(S,t)),a}return t=g(t)||0,v(n)&&(u=!!n.leading,o=(d="maxWait"in n)?f(g(n.maxWait)||0,t):o,m="trailing"in n?!!n.trailing:m),k.cancel=function(){void 0!==s&&clearTimeout(s),l=0,r=c=i=s=void 0},k.flush=function(){return void 0===s?a:O(h())},k}},2693:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NextArrow=t.PrevArrow=void 0;var r=a(n(7294)),i=a(n(3720)),o=n(8783);function a(e){return e&&e.__esModule?e:{default:e}}function s(e){return s="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},s(e)}function c(){return c=Object.assign||function(e){for(var t=1;t=O&&h<=w:h===O}),x={message:"dots",index:y,slidesToScroll:d,currentSlide:h},E=this.clickHandler.bind(this,x);m=m.concat(r.default.createElement("li",{key:y,className:k},r.default.cloneElement(this.props.customPaging(y),{onClick:E})))}return r.default.cloneElement(this.props.appendDots(m),function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t0&&(t.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),t.props.onLazyLoad&&t.props.onLazyLoad(e))}var n=m({listRef:t.list,trackRef:t.track},t.props);t.updateState(n,!0,(function(){t.adaptHeight(),t.props.autoplay&&t.autoPlay("update")})),"progressive"===t.props.lazyLoad&&(t.lazyLoadTimer=setInterval(t.progressiveLazyLoad,1e3)),t.ro=new d.default((function(){t.state.animating?(t.onWindowResized(!1),t.callbackTimers.push(setTimeout((function(){return t.onWindowResized()}),t.props.speed))):t.onWindowResized()})),t.ro.observe(t.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),(function(e){e.onfocus=t.props.pauseOnFocus?t.onSlideFocus:null,e.onblur=t.props.pauseOnFocus?t.onSlideBlur:null})),window.addEventListener?window.addEventListener("resize",t.onWindowResized):window.attachEvent("onresize",t.onWindowResized)})),x(O(t),"componentWillUnmount",(function(){t.animationEndCallback&&clearTimeout(t.animationEndCallback),t.lazyLoadTimer&&clearInterval(t.lazyLoadTimer),t.callbackTimers.length&&(t.callbackTimers.forEach((function(e){return clearTimeout(e)})),t.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",t.onWindowResized):window.detachEvent("onresize",t.onWindowResized),t.autoplayTimer&&clearInterval(t.autoplayTimer),t.ro.disconnect()})),x(O(t),"componentDidUpdate",(function(e){if(t.checkImagesLoad(),t.props.onReInit&&t.props.onReInit(),t.props.lazyLoad){var n=(0,s.getOnDemandLazySlides)(m(m({},t.props),t.state));n.length>0&&(t.setState((function(e){return{lazyLoadedList:e.lazyLoadedList.concat(n)}})),t.props.onLazyLoad&&t.props.onLazyLoad(n))}t.adaptHeight();var i=m(m({listRef:t.list,trackRef:t.track},t.props),t.state),o=t.didPropsChange(e);o&&t.updateState(i,o,(function(){t.state.currentSlide>=r.default.Children.count(t.props.children)&&t.changeSlide({message:"index",index:r.default.Children.count(t.props.children)-t.props.slidesToShow,currentSlide:t.state.currentSlide}),t.props.autoplay?t.autoPlay("update"):t.pause("paused")}))})),x(O(t),"onWindowResized",(function(e){t.debouncedResize&&t.debouncedResize.cancel(),t.debouncedResize=(0,o.default)((function(){return t.resizeWindow(e)}),50),t.debouncedResize()})),x(O(t),"resizeWindow",(function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=Boolean(t.track&&t.track.node);if(n){var r=m(m({listRef:t.list,trackRef:t.track},t.props),t.state);t.updateState(r,e,(function(){t.props.autoplay?t.autoPlay("update"):t.pause("paused")})),t.setState({animating:!1}),clearTimeout(t.animationEndCallback),delete t.animationEndCallback}})),x(O(t),"updateState",(function(e,n,i){var o=(0,s.initializedState)(e);e=m(m(m({},e),o),{},{slideIndex:o.currentSlide});var a=(0,s.getTrackLeft)(e);e=m(m({},e),{},{left:a});var c=(0,s.getTrackCSS)(e);(n||r.default.Children.count(t.props.children)!==r.default.Children.count(e.children))&&(o.trackStyle=c),t.setState(o,i)})),x(O(t),"ssrInit",(function(){if(t.props.variableWidth){var e=0,n=0,i=[],o=(0,s.getPreClones)(m(m(m({},t.props),t.state),{},{slideCount:t.props.children.length})),a=(0,s.getPostClones)(m(m(m({},t.props),t.state),{},{slideCount:t.props.children.length}));t.props.children.forEach((function(t){i.push(t.props.style.width),e+=t.props.style.width}));for(var c=0;c=n&&t.onWindowResized()};if(e.onclick){var o=e.onclick;e.onclick=function(){o(),e.parentNode.focus()}}else e.onclick=function(){return e.parentNode.focus()};e.onload||(t.props.lazyLoad?e.onload=function(){t.adaptHeight(),t.callbackTimers.push(setTimeout(t.onWindowResized,t.props.speed))}:(e.onload=i,e.onerror=function(){i(),t.props.onLazyLoadError&&t.props.onLazyLoadError()}))}))})),x(O(t),"progressiveLazyLoad",(function(){for(var e=[],n=m(m({},t.props),t.state),r=t.state.currentSlide;r=-(0,s.getPreClones)(n);i--)if(t.state.lazyLoadedList.indexOf(i)<0){e.push(i);break}e.length>0?(t.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),t.props.onLazyLoad&&t.props.onLazyLoad(e)):t.lazyLoadTimer&&(clearInterval(t.lazyLoadTimer),delete t.lazyLoadTimer)})),x(O(t),"slideHandler",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.props,i=r.asNavFor,o=r.beforeChange,a=r.onLazyLoad,c=r.speed,l=r.afterChange,u=t.state.currentSlide,d=(0,s.slideHandler)(m(m(m({index:e},t.props),t.state),{},{trackRef:t.track,useCSS:t.props.useCSS&&!n})),f=d.state,p=d.nextState;if(f){o&&o(u,f.currentSlide);var h=f.lazyLoadedList.filter((function(e){return t.state.lazyLoadedList.indexOf(e)<0}));a&&h.length>0&&a(h),!t.props.waitForAnimate&&t.animationEndCallback&&(clearTimeout(t.animationEndCallback),l&&l(u),delete t.animationEndCallback),t.setState(f,(function(){i&&t.asNavForIndex!==e&&(t.asNavForIndex=e,i.innerSlider.slideHandler(e)),p&&(t.animationEndCallback=setTimeout((function(){var e=p.animating,n=v(p,["animating"]);t.setState(n,(function(){t.callbackTimers.push(setTimeout((function(){return t.setState({animating:e})}),10)),l&&l(f.currentSlide),delete t.animationEndCallback}))}),c))}))}})),x(O(t),"changeSlide",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=m(m({},t.props),t.state),i=(0,s.changeSlide)(r,e);if((0===i||i)&&(!0===n?t.slideHandler(i,n):t.slideHandler(i),t.props.autoplay&&t.autoPlay("update"),t.props.focusOnSelect)){var o=t.list.querySelectorAll(".slick-current");o[0]&&o[0].focus()}})),x(O(t),"clickHandler",(function(e){!1===t.clickable&&(e.stopPropagation(),e.preventDefault()),t.clickable=!0})),x(O(t),"keyHandler",(function(e){var n=(0,s.keyHandler)(e,t.props.accessibility,t.props.rtl);""!==n&&t.changeSlide({message:n})})),x(O(t),"selectHandler",(function(e){t.changeSlide(e)})),x(O(t),"disableBodyScroll",(function(){window.ontouchmove=function(e){(e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1}})),x(O(t),"enableBodyScroll",(function(){window.ontouchmove=null})),x(O(t),"swipeStart",(function(e){t.props.verticalSwiping&&t.disableBodyScroll();var n=(0,s.swipeStart)(e,t.props.swipe,t.props.draggable);""!==n&&t.setState(n)})),x(O(t),"swipeMove",(function(e){var n=(0,s.swipeMove)(e,m(m(m({},t.props),t.state),{},{trackRef:t.track,listRef:t.list,slideIndex:t.state.currentSlide}));n&&(n.swiping&&(t.clickable=!1),t.setState(n))})),x(O(t),"swipeEnd",(function(e){var n=(0,s.swipeEnd)(e,m(m(m({},t.props),t.state),{},{trackRef:t.track,listRef:t.list,slideIndex:t.state.currentSlide}));if(n){var r=n.triggerSlideHandler;delete n.triggerSlideHandler,t.setState(n),void 0!==r&&(t.slideHandler(r),t.props.verticalSwiping&&t.enableBodyScroll())}})),x(O(t),"touchEnd",(function(e){t.swipeEnd(e),t.clickable=!0})),x(O(t),"slickPrev",(function(){t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"previous"})}),0))})),x(O(t),"slickNext",(function(){t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"next"})}),0))})),x(O(t),"slickGoTo",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e=Number(e),isNaN(e))return"";t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"index",index:e,currentSlide:t.state.currentSlide},n)}),0))})),x(O(t),"play",(function(){var e;if(t.props.rtl)e=t.state.currentSlide-t.props.slidesToScroll;else{if(!(0,s.canGoNext)(m(m({},t.props),t.state)))return!1;e=t.state.currentSlide+t.props.slidesToScroll}t.slideHandler(e)})),x(O(t),"autoPlay",(function(e){t.autoplayTimer&&clearInterval(t.autoplayTimer);var n=t.state.autoplaying;if("update"===e){if("hovered"===n||"focused"===n||"paused"===n)return}else if("leave"===e){if("paused"===n||"focused"===n)return}else if("blur"===e&&("paused"===n||"hovered"===n))return;t.autoplayTimer=setInterval(t.play,t.props.autoplaySpeed+50),t.setState({autoplaying:"playing"})})),x(O(t),"pause",(function(e){t.autoplayTimer&&(clearInterval(t.autoplayTimer),t.autoplayTimer=null);var n=t.state.autoplaying;"paused"===e?t.setState({autoplaying:"paused"}):"focused"===e?"hovered"!==n&&"playing"!==n||t.setState({autoplaying:"focused"}):"playing"===n&&t.setState({autoplaying:"hovered"})})),x(O(t),"onDotsOver",(function(){return t.props.autoplay&&t.pause("hovered")})),x(O(t),"onDotsLeave",(function(){return t.props.autoplay&&"hovered"===t.state.autoplaying&&t.autoPlay("leave")})),x(O(t),"onTrackOver",(function(){return t.props.autoplay&&t.pause("hovered")})),x(O(t),"onTrackLeave",(function(){return t.props.autoplay&&"hovered"===t.state.autoplaying&&t.autoPlay("leave")})),x(O(t),"onSlideFocus",(function(){return t.props.autoplay&&t.pause("focused")})),x(O(t),"onSlideBlur",(function(){return t.props.autoplay&&"focused"===t.state.autoplaying&&t.autoPlay("blur")})),x(O(t),"render",(function(){var e,n,i,o=(0,a.default)("slick-slider",t.props.className,{"slick-vertical":t.props.vertical,"slick-initialized":!0}),d=m(m({},t.props),t.state),f=(0,s.extractObject)(d,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),p=t.props.pauseOnHover;if(f=m(m({},f),{},{onMouseEnter:p?t.onTrackOver:null,onMouseLeave:p?t.onTrackLeave:null,onMouseOver:p?t.onTrackOver:null,focusOnSelect:t.props.focusOnSelect&&t.clickable?t.selectHandler:null}),!0===t.props.dots&&t.state.slideCount>=t.props.slidesToShow){var v=(0,s.extractObject)(d,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","customPaging","infinite","appendDots"]),g=t.props.pauseOnDotsHover;v=m(m({},v),{},{clickHandler:t.changeSlide,onMouseEnter:g?t.onDotsLeave:null,onMouseOver:g?t.onDotsOver:null,onMouseLeave:g?t.onDotsLeave:null}),e=r.default.createElement(l.Dots,v)}var y=(0,s.extractObject)(d,["infinite","centerMode","currentSlide","slideCount","slidesToShow","prevArrow","nextArrow"]);y.clickHandler=t.changeSlide,t.props.arrows&&(n=r.default.createElement(u.PrevArrow,y),i=r.default.createElement(u.NextArrow,y));var b=null;t.props.vertical&&(b={height:t.state.listHeight});var w=null;!1===t.props.vertical?!0===t.props.centerMode&&(w={padding:"0px "+t.props.centerPadding}):!0===t.props.centerMode&&(w={padding:t.props.centerPadding+" 0px"});var S=m(m({},b),w),O=t.props.touchMove,k={className:"slick-list",style:S,onClick:t.clickHandler,onMouseDown:O?t.swipeStart:null,onMouseMove:t.state.dragging&&O?t.swipeMove:null,onMouseUp:O?t.swipeEnd:null,onMouseLeave:t.state.dragging&&O?t.swipeEnd:null,onTouchStart:O?t.swipeStart:null,onTouchMove:t.state.dragging&&O?t.swipeMove:null,onTouchEnd:O?t.touchEnd:null,onTouchCancel:t.state.dragging&&O?t.swipeEnd:null,onKeyDown:t.props.accessibility?t.keyHandler:null},x={className:o,dir:"ltr",style:t.props.style};return t.props.unslick&&(k={className:"slick-list"},x={className:o}),r.default.createElement("div",x,t.props.unslick?"":n,r.default.createElement("div",h({ref:t.listRefHandler},k),r.default.createElement(c.Track,h({ref:t.trackRefHandler},f),t.props.children)),t.props.unslick?"":i,t.props.unslick?"":e)})),t.list=null,t.track=null,t.state=m(m({},i.default),{},{currentSlide:t.props.initialSlide,slideCount:r.default.Children.count(t.props.children)}),t.callbackTimers=[],t.clickable=!0,t.debouncedResize=null;var n=t.ssrInit();return t.state=m(m({},t.state),n),t}return t=S,(n=[{key:"didPropsChange",value:function(e){for(var t=!1,n=0,i=Object.keys(this.props);n1&&void 0!==arguments[1]&&arguments[1];return t.innerSlider.slickGoTo(e,n)})),b(m(t),"slickPause",(function(){return t.innerSlider.pause("paused")})),b(m(t),"slickPlay",(function(){return t.innerSlider.autoPlay("play")})),t.state={breakpoint:null},t._responsiveMediaHandlers=[],t}return t=d,(n=[{key:"media",value:function(e,t){w.register(e,t),this._responsiveMediaHandlers.push({query:e,handler:t})}},{key:"componentDidMount",value:function(){var e=this;if(this.props.responsive){var t=this.props.responsive.map((function(e){return e.breakpoint}));t.sort((function(e,t){return e-t})),t.forEach((function(n,r){var i;i=0===r?(0,o.default)({minWidth:0,maxWidth:n}):(0,o.default)({minWidth:t[r-1]+1,maxWidth:n}),(0,s.canUseDOM)()&&e.media(i,(function(){e.setState({breakpoint:n})}))}));var n=(0,o.default)({minWidth:t.slice(-1)[0]});(0,s.canUseDOM)()&&this.media(n,(function(){e.setState({breakpoint:null})}))}}},{key:"componentWillUnmount",value:function(){this._responsiveMediaHandlers.forEach((function(e){w.unregister(e.query,e.handler)}))}},{key:"render",value:function(){var e,t,n=this;(e=this.state.breakpoint?"unslick"===(t=this.props.responsive.filter((function(e){return e.breakpoint===n.state.breakpoint})))[0].settings?"unslick":f(f(f({},a.default),this.props),t[0].settings):f(f({},a.default),this.props)).centerMode&&(e.slidesToScroll,e.slidesToScroll=1),e.fade&&(e.slidesToShow,e.slidesToScroll,e.slidesToShow=1,e.slidesToScroll=1);var o=r.default.Children.toArray(this.props.children);o=o.filter((function(e){return"string"==typeof e?!!e.trim():!!e})),e.variableWidth&&(e.rows>1||e.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),e.variableWidth=!1);for(var s=[],c=null,l=0;l=o.length));v+=1)h.push(r.default.cloneElement(o[v],{key:100*l+10*p+v,tabIndex:-1,style:{width:"".concat(100/e.slidesPerRow,"%"),display:"inline-block"}}));d.push(r.default.createElement("div",{key:10*l+p},h))}e.variableWidth?s.push(r.default.createElement("div",{key:l,style:{width:c}},d)):s.push(r.default.createElement("div",{key:l},d))}if("unslick"===e){var g="regular slider "+(this.props.className||"");return r.default.createElement("div",{className:g},o)}return s.length<=e.slidesToShow&&(e.unslick=!0),r.default.createElement(i.InnerSlider,u({style:this.props.style,ref:this.innerSliderRefHandler},e),s)}}])&&p(t.prototype,n),c&&p(t,c),d}(r.default.Component);t.default=S},2282:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Track=void 0;var r=a(n(7294)),i=a(n(3720)),o=n(8783);function a(e){return e&&e.__esModule?e:{default:e}}function s(e){return s="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},s(e)}function c(){return c=Object.assign||function(e){for(var t=1;t=e.slideCount,e.centerMode?(i=Math.floor(e.slidesToShow/2),n=(o-e.currentSlide)%e.slideCount==0,o>e.currentSlide-i-1&&o<=e.currentSlide+i&&(t=!0)):t=e.currentSlide<=o&&o=e.slideCount?e.targetSlide-e.slideCount:e.targetSlide)}},w=function(e,t){return e.key||t},S=function(e){var t,n=[],a=[],s=[],c=r.default.Children.count(e.children),l=(0,o.lazyStartIndex)(e),u=(0,o.lazyEndIndex)(e);return r.default.Children.forEach(e.children,(function(d,f){var p,h={message:"children",index:f,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};p=!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(f)>=0?d:r.default.createElement("div",null);var v=function(e){var t={};return void 0!==e.variableWidth&&!1!==e.variableWidth||(t.width=e.slideWidth),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight):t.left=-e.index*parseInt(e.slideWidth),t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t}(m(m({},e),{},{index:f})),g=p.props.className||"",y=b(m(m({},e),{},{index:f}));if(n.push(r.default.cloneElement(p,{key:"original"+w(p,f),"data-index":f,className:(0,i.default)(y,g),tabIndex:"-1","aria-hidden":!y["slick-active"],style:m(m({outline:"none"},p.props.style||{}),v),onClick:function(t){p.props&&p.props.onClick&&p.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}})),e.infinite&&!1===e.fade){var S=c-f;S<=(0,o.getPreClones)(e)&&c!==e.slidesToShow&&((t=-S)>=l&&(p=d),y=b(m(m({},e),{},{index:t})),a.push(r.default.cloneElement(p,{key:"precloned"+w(p,t),"data-index":t,tabIndex:"-1",className:(0,i.default)(y,g),"aria-hidden":!y["slick-active"],style:m(m({},p.props.style||{}),v),onClick:function(t){p.props&&p.props.onClick&&p.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}}))),c!==e.slidesToShow&&((t=c+f)0?1:0):0};t.lazySlidesOnLeft=p;var h=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow};t.lazySlidesOnRight=h;var v=function(e){return e&&e.offsetWidth||0};t.getWidth=v;var g=function(e){return e&&e.offsetHeight||0};t.getHeight=g;var m=function(e){var t,n,r,i,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t=e.startX-e.curX,n=e.startY-e.curY,r=Math.atan2(n,t),(i=Math.round(180*r/Math.PI))<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":!0===o?i>=35&&i<=135?"up":"down":"vertical"};t.getSwipeDirection=m;var y=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t};t.canGoNext=y;t.extractObject=function(e,t){var n={};return t.forEach((function(t){return n[t]=e[t]})),n};t.initializedState=function(e){var t,n=i.default.Children.count(e.children),r=e.listRef,o=Math.ceil(v(r)),s=e.trackRef&&e.trackRef.node,c=Math.ceil(v(s));if(e.vertical)t=o;else{var l=e.centerMode&&2*parseInt(e.centerPadding);"string"==typeof e.centerPadding&&"%"===e.centerPadding.slice(-1)&&(l*=o/100),t=Math.ceil((o-l)/e.slidesToShow)}var d=r&&g(r.querySelector('[data-index="0"]')),f=d*e.slidesToShow,p=void 0===e.currentSlide?e.initialSlide:e.currentSlide;e.rtl&&void 0===e.currentSlide&&(p=n-1-e.initialSlide);var h=e.lazyLoadedList||[],m=u(a(a({},e),{},{currentSlide:p,lazyLoadedList:h})),y={slideCount:n,slideWidth:t,listWidth:o,trackWidth:c,currentSlide:p,slideHeight:d,listHeight:f,lazyLoadedList:h=h.concat(m)};return null===e.autoplaying&&e.autoplay&&(y.autoplaying="playing"),y};t.slideHandler=function(e){var t=e.waitForAnimate,n=e.animating,r=e.fade,i=e.infinite,o=e.index,s=e.slideCount,l=e.lazyLoad,d=e.currentSlide,f=e.centerMode,p=e.slidesToScroll,h=e.slidesToShow,v=e.useCSS,g=e.lazyLoadedList;if(t&&n)return{};var m,b,w,S=o,O={},_={},j=i?o:c(o,0,s-1);if(r){if(!i&&(o<0||o>=s))return{};o<0?S=o+s:o>=s&&(S=o-s),l&&g.indexOf(S)<0&&(g=g.concat(S)),O={animating:!0,currentSlide:S,lazyLoadedList:g,targetSlide:S},_={animating:!1,targetSlide:S}}else m=S,S<0?(m=S+s,i?s%p!=0&&(m=s-s%p):m=0):!y(e)&&S>d?S=m=d:f&&S>=s?(S=i?s:s-1,m=i?0:s-1):S>=s&&(m=S-s,i?s%p!=0&&(m=0):m=s-h),!i&&S+h>=s&&(m=s-h),b=E(a(a({},e),{},{slideIndex:S})),w=E(a(a({},e),{},{slideIndex:m})),i||(b===w&&(S=m),b=w),l&&(g=g.concat(u(a(a({},e),{},{currentSlide:S})))),v?(O={animating:!0,currentSlide:m,trackStyle:x(a(a({},e),{},{left:b})),lazyLoadedList:g,targetSlide:j},_={animating:!1,currentSlide:m,trackStyle:k(a(a({},e),{},{left:w})),swipeLeft:null,targetSlide:j}):O={currentSlide:m,trackStyle:k(a(a({},e),{},{left:w})),lazyLoadedList:g,targetSlide:j};return{state:O,nextState:_}};t.changeSlide=function(e,t){var n,r,i,o,s=e.slidesToScroll,c=e.slidesToShow,l=e.slideCount,u=e.currentSlide,d=e.targetSlide,f=e.lazyLoad,p=e.infinite;if(n=l%s!=0?0:(l-u)%s,"previous"===t.message)o=u-(i=0===n?s:c-n),f&&!p&&(o=-1===(r=u-i)?l-1:r),p||(o=d-s);else if("next"===t.message)o=u+(i=0===n?s:n),f&&!p&&(o=(u+s)%l+n),p||(o=d+s);else if("dots"===t.message)o=t.index*t.slidesToScroll;else if("children"===t.message){if(o=t.index,p){var h=M(a(a({},e),{},{targetSlide:o}));o>t.currentSlide&&"left"===h?o-=l:o10)return{scrolling:!0};s&&(S.swipeLength=P);var C=(c?-1:1)*(S.curX>S.startX?1:-1);s&&(C=S.curY>S.startY?1:-1);var L=Math.ceil(g/b),z=m(t.touchObject,s),R=S.swipeLength;return w||(0===u&&("right"===z||"down"===z)||u+1>=L&&("left"===z||"up"===z)||!y(t)&&("left"===z||"up"===z))&&(R=S.swipeLength*d,!1===f&&p&&(p(z),T.edgeDragged=!0)),!h&&O&&(O(z),T.swiped=!0),j=i?M+R*(x/_)*C:c?M-R*C:M+R*C,s&&(j=M+R*C),T=a(a({},T),{},{touchObject:S,swipeLeft:j,trackStyle:k(a(a({},t),{},{left:j}))}),Math.abs(S.curX-S.startX)<.8*Math.abs(S.curY-S.startY)?T:(S.swipeLength>10&&(T.swiping=!0,l(e)),T)}};t.swipeEnd=function(e,t){var n=t.dragging,r=t.swipe,i=t.touchObject,o=t.listWidth,s=t.touchThreshold,c=t.verticalSwiping,u=t.listHeight,d=t.swipeToSlide,f=t.scrolling,p=t.onSwipe,h=t.targetSlide,v=t.currentSlide,g=t.infinite;if(!n)return r&&l(e),{};var y=c?u/s:o/s,b=m(i,c),O={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(f)return O;if(!i.swipeLength)return O;if(i.swipeLength>y){var k,_;l(e),p&&p(b);var j=g?v:h;switch(b){case"left":case"up":_=j+S(t),k=d?w(t,_):_,O.currentDirection=0;break;case"right":case"down":_=j-S(t),k=d?w(t,_):_,O.currentDirection=1;break;default:k=j}O.triggerSlideHandler=k}else{var T=E(t);O.trackStyle=x(a(a({},t),{},{left:T}))}return O};var b=function(e){for(var t=e.infinite?2*e.slideCount:e.slideCount,n=e.infinite?-1*e.slidesToShow:0,r=e.infinite?-1*e.slidesToShow:0,i=[];nn[n.length-1])t=n[n.length-1];else for(var i in n){if(t-1*e.swipeLeft)return n=r,!1}else if(r.offsetLeft-t+v(r)/2>-1*e.swipeLeft)return n=r,!1;return!0})),!n)return 0;var o=!0===e.rtl?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-o)||1}return e.slidesToScroll};t.getSlideCount=S;var O=function(e,t){return t.reduce((function(t,n){return t&&e.hasOwnProperty(n)}),!0)?null:console.error("Keys Missing:",e)};t.checkSpecKeys=O;var k=function(e){var t,n;O(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var r=e.slideCount+2*e.slidesToShow;e.vertical?n=r*e.slideHeight:t=T(e)*e.slideWidth;var i={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",s=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",c=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";i=a(a({},i),{},{WebkitTransform:o,transform:s,msTransform:c})}else e.vertical?i.top=e.left:i.left=e.left;return e.fade&&(i={opacity:1}),t&&(i.width=t),n&&(i.height=n),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?i.marginTop=e.left+"px":i.marginLeft=e.left+"px"),i};t.getTrackCSS=k;var x=function(e){O(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=k(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t};t.getTrackAnimateCSS=x;var E=function(e){if(e.unslick)return 0;O(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t,n,r=e.slideIndex,i=e.trackRef,o=e.infinite,a=e.centerMode,s=e.slideCount,c=e.slidesToShow,l=e.slidesToScroll,u=e.slideWidth,d=e.listWidth,f=e.variableWidth,p=e.slideHeight,h=e.fade,v=e.vertical;if(h||1===e.slideCount)return 0;var g=0;if(o?(g=-_(e),s%l!=0&&r+l>s&&(g=-(r>s?c-(r-s):s%l)),a&&(g+=parseInt(c/2))):(s%l!=0&&r+l>s&&(g=c-s%l),a&&(g=parseInt(c/2))),t=v?r*p*-1+g*p:r*u*-1+g*u,!0===f){var m,y=i&&i.node;if(m=r+_(e),t=(n=y&&y.childNodes[m])?-1*n.offsetLeft:0,!0===a){m=o?r+_(e):r,n=y&&y.children[m],t=0;for(var b=0;be.currentSlide?e.targetSlide>e.currentSlide+P(e)?"left":"right":e.targetSlide0&&(o+=1),r&&t%2==0&&(o+=1),o}return r?0:t-1};t.slidesOnRight=P;var C=function(e){var t=e.slidesToShow,n=e.centerMode,r=e.rtl,i=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(i)>0&&(o+=1),r||t%2!=0||(o+=1),o}return r?t-1:0};t.slidesOnLeft=C;t.canUseDOM=function(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}},3720:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t0},e.prototype.connect_=function(){i&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),c?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){i&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;s.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),u=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),O="undefined"!=typeof WeakMap?new WeakMap:new r,k=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=l.getInstance(),r=new S(t,n,this);O.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){k.prototype[e]=function(){var t;return(t=O.get(this))[e].apply(t,arguments)}}));var x=void 0!==o.ResizeObserver?o.ResizeObserver:k;t.default=x},7833:function(e){e.exports=function(e){return e.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()})).toLowerCase()}},3194:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return se}});var r=n(7294),i=n(5794),o=n(453),a=n(3332),s=n(1293),c=n(4621),l=n(685),u=n(5175),d=n(9696),f=n(4234),p=n(838),h=n(5420),v=n(6742),g=n(7644),m=n(5444);var y=(0,c.Z)((function(e){var t;return{container:{backgroundColor:"#FFFFFF",padding:e.spacing(3),justifyContent:"center"},card:{width:"100%",borderRadius:"20px",borderColor:"rgba(201, 96, 255, 0.3)",boxShadow:"0 1px 20px rgba(201, 96, 255, 0.6)",background:"linear-gradient(90deg, #CA32FF, #FF5F96, #CA32FF, #FF5F96)",position:"relative",animation:"$swipe 3s linear infinite"},"@keyframes swipe":{"0%":{backgroundSize:"300%",backgroundPosition:"100% 0"},"100%":{backgroundSize:"300%",backgroundPosition:"0 0"}},content:{textAlign:"center",color:"white",paddingTop:e.spacing(2.5),"&:last-child":{paddingBottom:e.spacing(2.5)}},forwardArrow:{fontSize:e.typography.fontSize,marginLeft:e.spacing(2),marginTop:e.spacing(.5),fontWeight:700},grid:{direction:"row",justifyContent:"center",alignItems:"center"},item:(t={},t[e.breakpoints.down("xs")]={width:"75%"},t),text:{fontWeight:700}}}))((function(e){var t=e.classes,n=(0,m.useStaticQuery)("1767819709").allMarkdownRemark.nodes[0].fields.slug;return r.createElement(p.Z,{container:!0,className:t.container},r.createElement(h.Z,{className:t.card,variant:"outlined"},r.createElement(v.Z,null,r.createElement(f.Z,{to:n},r.createElement(g.Z,{className:t.content},r.createElement(p.Z,{container:!0,className:t.grid},r.createElement(p.Z,{item:!0,className:t.item},r.createElement(o.Z,{variant:"body1",className:t.text},"Want to learn more about our internship program? Check out this blog post!")),r.createElement(p.Z,{item:!0,justifyContent:"center"},r.createElement(u.Z,{className:t.forwardArrow}))))))))})),b=n(3868);var w=n.p+"static/rightbanner-6b7316feac0926c26187df4f67a8cf83.svg",S=n(4059);function O(e){var t=e.classes;return r.createElement("img",{className:t.leftBanner,src:b.Z})}function k(e){var t=e.classes;return r.createElement("img",{className:t.rightBanner,src:w})}function x(e){var t=e.classes;return r.createElement("img",{className:t.wordmark,src:S.Z})}var E=(0,c.Z)((function(e){var t,n,r,i;return{container:{backgroundColor:"#FADDFF"},content:(t={display:"flex",position:"relative",alignItems:"center",margin:"auto",overflow:"unset"},t[e.breakpoints.down("xs")]={maxWidth:"370px"},t),leftBanner:(n={width:310},n[e.breakpoints.down("sm")]={width:240},n[e.breakpoints.down("xs")]={width:180},n),wordmark:(r={width:310,overflow:"auto"},r[e.breakpoints.down("sm")]={width:240},r[e.breakpoints.down("xs")]={width:180,display:"block"},r),rightBanner:(i={width:310},i[e.breakpoints.down("sm")]={width:240},i[e.breakpoints.down("xs")]={width:180,display:"none"},i)}}))((function(e){var t=e.classes;return r.createElement("div",{className:t.container},r.createElement(s.Z,{maxWidth:"md"},r.createElement("div",{className:t.content},r.createElement(O,{classes:t}),r.createElement(x,{classes:t}),r.createElement(k,{classes:t}))))})),_=n(5750),j=n(6125),T=function(e){function t(){return e.apply(this,arguments)||this}return(0,_.Z)(t,e),t.prototype.render=function(){var e=this.props.classes;return r.createElement("div",{className:e.content},r.createElement(j.S,{src:"../../images/acm-hack-logo.svg",width:350,height:350,className:e.logo,placeholder:"none",quality:100,alt:"Hack Logo",__imageData:n(2492)}),r.createElement("div",{className:e.description},r.createElement(o.Z,{variant:"h4",classes:{root:e.title}},"What is Hack?"),r.createElement(o.Z,{variant:"body1"},"We are a student-run organization whose mission is to\nempower the community by providing the means to build amazing things and explore\nwhat is possible through code. We teach quarterly workshops and host events for\nstudents to expand their knowledge and apply their creativity to projects. Our\nevents are for coders of all skills levels, so whether you've been to 10 hackathons\n or you just learned \"Hello World,\" we're happy to have you.")))},t}(r.Component),M=(0,c.Z)((function(e){var t;return{container:{backgroundColor:"#ffffff",padding:e.spacing(2,0)},content:{display:"flex",justifyContent:"space-between",flexDirection:"row-reverse",alignItems:"center"},description:{textAlign:"justify",flexBasis:"80%",flexGrow:1},title:{fontFamily:e.typography.fontFamily,fontWeight:"bold",margin:e.spacing(2,0)},logo:(t={flexBasis:"15%",marginLeft:e.spacing(8)},t[e.breakpoints.down("xs")]={display:"none"},t)}}))(T);var P=(0,c.Z)((function(e){return{card:{height:"100%"},link:{height:"inherit"},cardActionArea:{height:"inherit"},title:{color:"#000000",fontFamily:["Poppins","sans-serif"],fontSize:1.3*e.typography.fontSize,lineHeight:1.2,fontWeight:600},subtitle:{color:"#000000",fontFamily:["Poppins","sans-serif"],fontSize:.9*e.typography.fontSize,lineHeight:1.3},excerpt:{fontSize:.9*e.typography.fontSize,color:"#0000008A"},info:{fontSize:.9*e.typography.fontSize,color:"#0000008A",padding:e.spacing(1,0,0)}}}))((function(e){var t=e.post,n=e.classes,i=t.frontmatter,a=t.fields;return r.createElement(h.Z,{className:n.card},r.createElement(f.Z,{to:a.slug,className:n.link},r.createElement(v.Z,{className:n.cardActionArea},r.createElement(g.Z,null,r.createElement(o.Z,{className:n.title},i.title),r.createElement(o.Z,{className:n.subtitle},i.subtitle),r.createElement(o.Z,{className:n.excerpt},t.excerpt),r.createElement(o.Z,{className:n.info},i.date," | ",t.timeToRead," min read")))))}));var C=(0,c.Z)({listItem:{overflowWrap:"break-word"}})((function(e){var t=e.classes,n=(0,m.useStaticQuery)("2196203009");return r.createElement(p.Z,{container:!0,spacing:2},n.allMarkdownRemark.nodes.map((function(e){return r.createElement(p.Z,{item:!0,sm:12,md:6,key:e.id,className:t.listItem},r.createElement(P,{post:e}))})))})),L=n(1749),z=n(3065);var R=(0,c.Z)((function(e){return{container:{marginLeft:e.spacing(-2),marginRight:e.spacing(-2),overflowX:"auto","-webkit-overflow-scrolling":"touch"},item:{position:"relative",width:"260px",height:"420px",margin:e.spacing(2),flex:"0 0 auto"}}}))((function(e){var t=e.classes,n=e.events.map((function(e){return r.createElement(p.Z,{item:!0,key:e.id,className:t.item},r.createElement(z.Z,e))}));return r.createElement("div",{className:t.container},r.createElement(p.Z,{container:!0,wrap:"nowrap",justifyContent:"space-between",classes:{root:t.gridList}},n))}));var A=function(){var e=(0,m.useStaticQuery)("4124548493").upcomingEvents.nodes;return 0===e.length?r.createElement(L.Z,null):r.createElement(R,{events:e})},W=n(4884);var Z=(0,c.Z)((function(e){var t;return{carouselImage:(t={height:"400px",position:"center",display:"block",marginRight:"auto",marginLeft:"auto",borderRadius:2*e.shape.borderRadius},t[e.breakpoints.down("xs")]={height:"300px"},t),carouselContainer:{position:"center"}}}))((function(e){var t=e.classes,n={dots:!0,infinite:!0,speed:800,slidesToShow:1,slidesToScroll:1,className:"slides"},i=(0,m.useStaticQuery)("597543710").carouselPhotos.nodes.map((function(e){return r.createElement(j.G,{image:Object.assign({},e.childImageSharp.gatsbyImageData),className:t.carouselImage,key:e.id})}));return r.createElement(W.Z,n,i)})),H=n(920),D=n(7719);var I=n.p+"static/pigeon-be8b99d597787fda8646b6c256d3bfb9.svg";var N=function(e){return r.createElement("div",e,r.createElement("img",{alt:"",src:I}))},F=(0,H.Z)((function(e){return{banner:{padding:e.spacing(5,0)},description:{marginBottom:e.spacing(2)},pigeonContainer:{position:"relative"},pigeon:{position:"absolute",top:"50%",left:"50%",transform:"translate(-40%, -50%)",width:"100%"},joinButton:{marginBottom:e.spacing(5)}}}));var q=function(){var e=F();return r.createElement("div",{className:e.banner},r.createElement(o.Z,{variant:"h5",paragraph:!0,classes:{root:e.description}},"Stay Connected"),r.createElement(p.Z,{container:!0},r.createElement(p.Z,{item:!0,xs:6},r.createElement(o.Z,{classes:{root:e.description}},"Join the ACM Hack Discord to get live announcements about upcoming events"),r.createElement(D.Z,{link:"https://discord.gg/3GSPECbCnE",text:"Join The ACM Hack Discord"})),r.createElement(p.Z,{item:!0,xs:6,classes:{root:e.pigeonContainer}},r.createElement(N,{className:e.pigeon}))))},B=n(1887),Y=n(9391),G=n(4850),X=n(2376),$=n(5371),U=n(7171),V=n(4014),K=n(4878),Q=n(4430),J=(0,c.Z)((function(e){return{root:{backgroundColor:e.palette.grey[50],boxShadow:"none",borderColor:e.palette.grey[400],borderTopWidth:2,borderTopStyle:"solid","&:last-child":{borderBottomWidth:2,borderBottomStyle:"solid"},"&::before":{display:"none"},"&$expanded":{margin:0}},expanded:{}}}))(X.Z),ee=(0,c.Z)((function(e){var t;return{root:(t={minHeight:"auto","&$expanded":{minHeight:"auto"}},t[e.breakpoints.down("xs")]={paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},t),content:{margin:"12px 0","&$expanded":{margin:"12px 0"}},expanded:{}}}))($.Z),te=(0,c.Z)((function(e){var t;return{root:(t={paddingBottom:e.spacing(6)},t[e.breakpoints.down("xs")]={paddingBottom:e.spacing(4),paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},t)}}))(U.Z),ne=(0,V.Z)((function(e){return{question:{fontWeight:e.typography.fontWeightMedium,color:e.palette.secondary.main,fontFamily:e.typography.fontFamily}}}));function re(e){var t=e.index,n=e.question,i=e.answer,a=(0,r.useState)(!1),s=a[0],c=a[1],l=ne(),u="faqPanel"+t,d=(0,B.Z)();return r.createElement(J,{key:u,square:!0,expanded:s,onChange:function(){return c((function(e){return!e}))}},r.createElement(ee,{expandIcon:s?r.createElement(Q.Z,null):r.createElement(K.Z,null),"aria-controls":u+"-content",id:u+"-header"},r.createElement(o.Z,{variant:"body1",className:l.question},n)),r.createElement(te,null,r.createElement(o.Z,{variant:"body1",style:{maxWidth:.8*d.breakpoints.values.md}},i)))}var ie=function(){var e=[{question:"Where do I find the ACM YouTube channel?",answer:r.createElement(r.Fragment,null,"We post all recordings of our workshops on the ACM YouTube channel, which can be found ",r.createElement(G.Z,{href:"https://www.youtube.com/c/ACMUCLA/videos"},"here"),"!")},{question:"How do I participate?",answer:r.createElement(r.Fragment,null,"We recommend attending some of our events or asking us questions in the ",r.createElement(G.Z,{href:"https://discord.gg/3GSPECbCnE"},"ACM Hack Discord"),". Check out the events page for more information about the events we're holding this quarter. Everyone is welcome!")},{question:"Your past workshops seem interesting, how can I learn more?",answer:r.createElement(r.Fragment,null,"Check out the ",r.createElement(G.Z,{href:"/archive"},"archive")," page, where we keep a record of all of our past workshops!")},{question:"How do I join your team?",answer:r.createElement(r.Fragment,null,"We start recruitment for internship positions every fall, following the ACM general meeting (which you should attend)! After a quarter of shadowing officers, interns may have the opportunity to become full-time officers. All of our current officers started as interns and we highly encourage you to look out for applications in the fall!")},{question:"I have some other questions.",answer:r.createElement(r.Fragment,null,"Send us an email at ",r.createElement(G.Z,{href:"mailto:hack@uclaacm.com"},"hack@uclaacm.com")," or message us through the ",r.createElement(G.Z,{href:"https://discord.gg/3GSPECbCnE"},"ACM Hack Discord"),"!")}],t=(0,B.Z)();return r.createElement(Y.Z,{component:"section",paddingY:{xs:4,md:5},bgcolor:"background.grey"},r.createElement(s.Z,{maxWidth:"md"},r.createElement(Y.Z,{component:"hgroup",paddingBottom:{xs:4,md:8}},r.createElement(o.Z,{variant:"h4",component:"h2",style:{fontWeight:t.typography.fontWeightBold}},"FAQ"),r.createElement(o.Z,{variant:"h6",component:"h3",style:{color:t.palette.grey[600]}},"Frequently Asked Questions")),e.map((function(e,t){return r.createElement(re,Object.assign({key:t,index:t},e))}))))};var oe=(0,c.Z)((function(e){return{heading:{margin:e.spacing(4,0,0,0),fontFamily:e.typography.fontFamily,fontWeight:"bold",display:"flex",alignItems:"center"},headingIcon:{marginRight:e.spacing(1),fontSize:"inherit"},forwardArrow:{marginLeft:e.spacing(1),fontSize:.75*e.typography.fontSize},viewAllBtn:{margin:e.spacing(2,0)},whiteContainer:{padding:e.spacing(2,0),overflow:"hidden",backgroundColor:"#ffffff"},transparentContainer:{padding:e.spacing(2,0),overflow:"hidden"}}}))((function(e){var t=e.classes,n=function(e){var n=e.Icon,i=e.children;return r.createElement(o.Z,{variant:"h4",classes:{root:t.heading}},r.createElement(n,{color:"primary",classes:{root:t.headingIcon}}),i)},i=function(e){var n=e.to,i=e.children;return r.createElement(f.Z,{to:n},r.createElement(a.Z,{variant:"outlined",classes:{root:t.viewAllBtn}},i,r.createElement(u.Z,{classes:{root:t.forwardArrow}})))},c=function(e){return r.createElement("section",{className:t.whiteContainer},r.createElement(s.Z,Object.assign({maxWidth:"md"},e)))},p=function(e){return r.createElement("section",{className:t.transparentContainer},r.createElement(s.Z,Object.assign({maxWidth:"md"},e)))};return r.createElement(r.Fragment,null,r.createElement(E,null),r.createElement(c,null,r.createElement(y,null),r.createElement(M,null),r.createElement(q,null)),r.createElement(p,null,r.createElement(n,{Icon:d.Z},"Events"),r.createElement(i,{to:"/events#upcoming"},"View all events"),r.createElement(A,null)),r.createElement(c,null,r.createElement(n,{Icon:l.Z},"Blog posts"),r.createElement(i,{to:"/blog"},"View all blog posts"),r.createElement(C,null)),r.createElement(p,null,r.createElement(ie,null)),r.createElement(c,null,r.createElement(Z,null)))})),ae=n(2248);var se=function(){return r.createElement(i.Z,null,r.createElement(ae.Z,{title:"Home"}),r.createElement(oe,null))}},4176:function(e){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},3891:function(e,t,n){var r=n(3246);e.exports=function(e,t){if(null==e)return{};var n,i,o=r(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o},e.exports.default=e.exports,e.exports.__esModule=!0},2492:function(e){"use strict";e.exports=JSON.parse('{"layout":"constrained","images":{"fallback":{"src":"/static/db30fdb987ecfe4303c671f6c37009f9/d6820/acm-hack-logo.svg","srcSet":"/static/db30fdb987ecfe4303c671f6c37009f9/bf99a/acm-hack-logo.svg 88w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/18c75/acm-hack-logo.svg 175w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/d6820/acm-hack-logo.svg 350w","sizes":"(min-width: 350px) 350px, 100vw"},"sources":[{"srcSet":"/static/db30fdb987ecfe4303c671f6c37009f9/57fca/acm-hack-logo.webp 88w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/9c346/acm-hack-logo.webp 175w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/df9ef/acm-hack-logo.webp 350w","type":"image/webp","sizes":"(min-width: 350px) 350px, 100vw"}]},"width":350,"height":350}')}}]); -//# sourceMappingURL=component---src-pages-index-js-c0a89fb77a0fba629888.js.map \ No newline at end of file +/*! For license information please see component---src-pages-index-js-2854e1544b1f257b833f.js.LICENSE.txt */ +(self.webpackChunkhack_uclaacm_com=self.webpackChunkhack_uclaacm_com||[]).push([[678],{5106:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},7946:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={black:"#000",white:"#fff"};t.default=n},8650:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},2881:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},5613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},620:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},7552:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={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"};t.default=n},2421:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"};t.default=n},6742:function(e,t,n){"use strict";var r=n(4038),i=n(1951),o=n(7294),a=n(5505),s=n(4621),c=n(7055),l=o.forwardRef((function(e,t){var n=e.children,s=e.classes,l=e.className,u=e.focusVisibleClassName,d=(0,i.Z)(e,["children","classes","className","focusVisibleClassName"]);return o.createElement(c.Z,(0,r.Z)({className:(0,a.Z)(s.root,l),focusVisibleClassName:(0,a.Z)(u,s.focusVisible),ref:t},d),n,o.createElement("span",{className:s.focusHighlight}))}));t.Z=(0,s.Z)((function(e){return{root:{display:"block",textAlign:"inherit",width:"100%","&:hover $focusHighlight":{opacity:e.palette.action.hoverOpacity},"&$focusVisible $focusHighlight":{opacity:.12}},focusVisible:{},focusHighlight:{overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:e.transitions.create("opacity",{duration:e.transitions.duration.short})}}}),{name:"MuiCardActionArea"})(l)},6095:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hexToRgb=o,t.rgbToHex=function(e){if(0===e.indexOf("#"))return e;var t=s(e).values;return"#".concat(t.map((function(e){return 1===(t=e.toString(16)).length?"0".concat(t):t;var t})).join(""))},t.hslToRgb=a,t.decomposeColor=s,t.recomposeColor=c,t.getContrastRatio=function(e,t){var n=l(e),r=l(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.getLuminance=l,t.emphasize=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return l(e)>.5?d(e,t):f(e,t)},t.fade=function(e,t){0;return u(e,t)},t.alpha=u,t.darken=d,t.lighten=f;var r=n(466);function i(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){e=e.substr(1);var t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g"),n=e.match(t);return n&&1===n[0].length&&(n=n.map((function(e){return e+e}))),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((function(e,t){return t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3})).join(", "),")"):""}function a(e){var t=(e=s(e)).values,n=t[0],r=t[1]/100,i=t[2]/100,o=r*Math.min(i,1-i),a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return i-o*Math.max(Math.min(t-3,9-t,1),-1)},l="rgb",u=[Math.round(255*a(0)),Math.round(255*a(8)),Math.round(255*a(4))];return"hsla"===e.type&&(l+="a",u.push(t[3])),c({type:l,values:u})}function s(e){if(e.type)return e;if("#"===e.charAt(0))return s(o(e));var t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla"].indexOf(n))throw new Error((0,r.formatMuiErrorMessage)(3,e));var i=e.substring(t+1,e.length-1).split(",");return{type:n,values:i=i.map((function(e){return parseFloat(e)}))}}function c(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 l(e){var t="hsl"===(e=s(e)).type?s(a(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=s(e),t=i(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),e.values[3]=t,c(e)}function d(e,t){if(e=s(e),t=i(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 c(e)}function f(e,t){if(e=s(e),t=i(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 c(e)}},3017:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.values,n=void 0===t?{xs:0,sm:600,md:960,lg:1280,xl:1920}:t,r=e.unit,s=void 0===r?"px":r,c=e.step,l=void 0===c?5:c,u=(0,o.default)(e,["values","unit","step"]);function d(e){var t="number"==typeof n[e]?n[e]:e;return"@media (min-width:".concat(t).concat(s,")")}function f(e,t){var r=a.indexOf(t);return r===a.length-1?d(e):"@media (min-width:".concat("number"==typeof n[e]?n[e]:e).concat(s,") and ")+"(max-width:".concat((-1!==r&&"number"==typeof n[a[r+1]]?n[a[r+1]]:t)-l/100).concat(s,")")}return(0,i.default)({keys:a,values:n,up:d,down:function(e){var t=a.indexOf(e)+1,r=n[a[t]];return t===a.length?d("xs"):"@media (max-width:".concat(("number"==typeof r&&t>0?r:e)-l/100).concat(s,")")},between:f,only:function(e){return f(e,e)},width:function(e){return n[e]}},u)},t.keys=void 0;var i=r(n(4362)),o=r(n(3891)),a=["xs","sm","md","lg","xl"];t.keys=a},8752:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n){var r;return(0,o.default)({gutters:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return console.warn(["Material-UI: theme.mixins.gutters() is deprecated.","You can use the source of the mixin directly:","\n paddingLeft: theme.spacing(2),\n paddingRight: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n "].join("\n")),(0,o.default)({paddingLeft:t(2),paddingRight:t(2)},n,(0,i.default)({},e.up("sm"),(0,o.default)({paddingLeft:t(3),paddingRight:t(3)},n[e.up("sm")])))},toolbar:(r={minHeight:56},(0,i.default)(r,"".concat(e.up("xs")," and (orientation: landscape)"),{minHeight:48}),(0,i.default)(r,e.up("sm"),{minHeight:64}),r)},n)};var i=r(n(4176)),o=r(n(4362))},3596:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.primary,n=void 0===t?{light:l.default[300],main:l.default[500],dark:l.default[700]}:t,r=e.secondary,b=void 0===r?{light:u.default.A200,main:u.default.A400,dark:u.default.A700}:r,w=e.error,S=void 0===w?{light:d.default[300],main:d.default[500],dark:d.default[700]}:w,O=e.warning,k=void 0===O?{light:f.default[300],main:f.default[500],dark:f.default[700]}:O,x=e.info,E=void 0===x?{light:p.default[300],main:p.default[500],dark:p.default[700]}:x,_=e.success,j=void 0===_?{light:h.default[300],main:h.default[500],dark:h.default[700]}:_,T=e.type,M=void 0===T?"light":T,P=e.contrastThreshold,C=void 0===P?3:P,L=e.tonalOffset,z=void 0===L?.2:L,R=(0,o.default)(e,["primary","secondary","error","warning","info","success","type","contrastThreshold","tonalOffset"]);function A(e){return(0,v.getContrastRatio)(e,m.text.primary)>=C?m.text.primary:g.text.primary}var W=function(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;if(!(e=(0,i.default)({},e)).main&&e[t]&&(e.main=e[t]),!e.main)throw new Error((0,a.formatMuiErrorMessage)(4,t));if("string"!=typeof e.main)throw new Error(_formatMuiErrorMessage(5,JSON.stringify(e.main)));return y(e,"light",n,z),y(e,"dark",r,z),e.contrastText||(e.contrastText=A(e.main)),e},Z={dark:m,light:g};0;return(0,a.deepmerge)((0,i.default)({common:s.default,type:M,primary:W(n),secondary:W(b,"A400","A200","A700"),error:W(S),warning:W(k),info:W(E),success:W(j),grey:c.default,contrastThreshold:C,getContrastText:A,augmentColor:W,tonalOffset:z},Z[M]),R)},t.dark=t.light=void 0;var i=r(n(4362)),o=r(n(3891)),a=n(466),s=r(n(7946)),c=r(n(2881)),l=r(n(5613)),u=r(n(7552)),d=r(n(2421)),f=r(n(620)),p=r(n(5106)),h=r(n(8650)),v=n(6095),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:s.default.white,default:c.default[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,activatedOpacity:.12}};t.light=g;var m={text:{primary:s.default.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:c.default[800],default:"#303030"},action:{active:s.default.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,activatedOpacity:.24}};function y(e,t,n,r){var i=r.light||r,o=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,v.lighten)(e.main,i):"dark"===t&&(e.dark=(0,v.darken)(e.main,o)))}t.dark=m},2034:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:8;if(e.mui)return e;var t=(0,r.createUnarySpacing)({spacing:e}),n=function(){for(var e=arguments.length,n=new Array(e),r=0;r0&&void 0!==arguments[0]?arguments[0]:{},t=e.breakpoints,n=void 0===t?{}:t,r=e.mixins,v=void 0===r?{}:r,g=e.palette,m=void 0===g?{}:g,y=e.spacing,b=e.typography,w=void 0===b?{}:b,S=(0,i.default)(e,["breakpoints","mixins","palette","spacing","typography"]),O=(0,c.default)(m),k=(0,a.default)(n),x=(0,f.default)(y),E=(0,o.deepmerge)({breakpoints:k,direction:"ltr",mixins:(0,s.default)(k,x,v),overrides:{},palette:O,props:{},shadows:u.default,typography:(0,l.default)(O,w),spacing:x,shape:d.default,transitions:p.default,zIndex:h.default},S),_=arguments.length,j=new Array(_>1?_-1:0),T=1;T<_;T++)j[T-1]=arguments[T];return E=j.reduce((function(e,t){return(0,o.deepmerge)(e,t)}),E)}var g=v;t.default=g},5587:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n="function"==typeof t?t(e):t,r=n.fontFamily,d=void 0===r?u:r,f=n.fontSize,p=void 0===f?14:f,h=n.fontWeightLight,v=void 0===h?300:h,g=n.fontWeightRegular,m=void 0===g?400:g,y=n.fontWeightMedium,b=void 0===y?500:y,w=n.fontWeightBold,S=void 0===w?700:w,O=n.htmlFontSize,k=void 0===O?16:O,x=n.allVariants,E=n.pxToRem,_=(0,o.default)(n,["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"]);0;var j=p/14,T=E||function(e){return"".concat(e/k*j,"rem")},M=function(e,t,n,r,o){return(0,i.default)({fontFamily:d,fontWeight:e,fontSize:T(t),lineHeight:n},d===u?{letterSpacing:"".concat(s(r/t),"em")}:{},o,x)},P={h1:M(v,96,1.167,-1.5),h2:M(v,60,1.2,-.5),h3:M(m,48,1.167,0),h4:M(m,34,1.235,.25),h5:M(m,24,1.334,0),h6:M(b,20,1.6,.15),subtitle1:M(m,16,1.75,.15),subtitle2:M(b,14,1.57,.1),body1:M(m,16,1.5,.15),body2:M(m,14,1.43,.15),button:M(b,14,1.75,.4,l),caption:M(m,12,1.66,.4),overline:M(m,12,2.66,1,l)};return(0,a.deepmerge)((0,i.default)({htmlFontSize:k,pxToRem:T,round:c,fontFamily:d,fontSize:p,fontWeightLight:v,fontWeightRegular:m,fontWeightMedium:b,fontWeightBold:S},P),_,{clone:!1})};var i=r(n(4362)),o=r(n(3891)),a=n(466);function s(e){return Math.round(1e5*e)/1e5}function c(e){return s(e)}var l={textTransform:"uppercase"},u='"Roboto", "Helvetica", "Arial", sans-serif'},2347:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=(0,r(n(8179)).default)();t.default=i},4014:function(e,t,n){"use strict";var r=n(8580);t.Z=void 0;var i=r(n(4362)),o=n(669),a=r(n(2347));var s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,o.makeStyles)(e,(0,i.default)({defaultTheme:a.default},t))};t.Z=s},8884:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;function n(){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 r=["none",n(0,2,1,-1,0,1,1,0,0,1,3,0),n(0,3,1,-2,0,2,2,0,0,1,5,0),n(0,3,3,-2,0,3,4,0,0,1,8,0),n(0,2,4,-1,0,4,5,0,0,1,10,0),n(0,3,5,-1,0,5,8,0,0,1,14,0),n(0,3,5,-1,0,6,10,0,0,1,18,0),n(0,4,5,-2,0,7,10,1,0,2,16,1),n(0,5,5,-3,0,8,10,1,0,3,14,2),n(0,5,6,-3,0,9,12,1,0,3,16,2),n(0,6,6,-3,0,10,14,1,0,4,18,3),n(0,6,7,-4,0,11,15,1,0,4,20,3),n(0,7,8,-4,0,12,17,2,0,5,22,4),n(0,7,8,-4,0,13,19,2,0,5,24,4),n(0,7,9,-4,0,14,21,2,0,5,26,4),n(0,8,9,-5,0,15,22,2,0,6,28,5),n(0,8,10,-5,0,16,24,2,0,6,30,5),n(0,8,11,-5,0,17,26,2,0,6,32,5),n(0,9,11,-5,0,18,28,2,0,7,34,6),n(0,9,12,-6,0,19,29,2,0,7,36,6),n(0,10,13,-6,0,20,31,3,0,8,38,7),n(0,10,13,-6,0,21,33,3,0,8,40,7),n(0,10,14,-6,0,22,35,3,0,8,42,7),n(0,11,14,-7,0,23,36,3,0,9,44,8),n(0,11,15,-7,0,24,38,3,0,9,46,8)];t.default=r},1144:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={borderRadius:4};t.default=n},4843:function(e,t,n){"use strict";var r=n(8580);Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.duration=t.easing=void 0;var i=r(n(3891)),o={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"};t.easing=o;var a={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function s(e){return"".concat(Math.round(e),"ms")}t.duration=a;var c={easing:o,duration:a,create:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.duration,r=void 0===n?a.standard:n,c=t.easing,l=void 0===c?o.easeInOut:c,u=t.delay,d=void 0===u?0:u;(0,i.default)(t,["duration","easing","delay"]);return(Array.isArray(e)?e:[e]).map((function(e){return"".concat(e," ").concat("string"==typeof r?r:s(r)," ").concat(l," ").concat("string"==typeof d?d:s(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))}};t.default=c},1887:function(e,t,n){"use strict";var r=n(8580);t.Z=function(){0;return(0,i.useTheme)()||o.default};var i=n(669),o=(r(n(7294)),r(n(2347)))},1346:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={mobileStepper:1e3,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500};t.default=n},5175:function(e,t,n){"use strict";var r=n(8580),i=n(1022);t.Z=void 0;var o=i(n(7294)),a=(0,r(n(8786)).default)(o.createElement("path",{d:"M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z"}),"ArrowForwardIos");t.Z=a},685:function(e,t,n){"use strict";var r=n(8580),i=n(1022);t.Z=void 0;var o=i(n(7294)),a=(0,r(n(8786)).default)(o.createElement(o.Fragment,null,o.createElement("path",{d:"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4V4c0-1.1-.9-2-2-2zm0 15.17L18.83 16H4V4h16v13.17z"}),o.createElement("path",{d:"M4 4v12h14.83L20 17.17V4z",opacity:".3"})),"ModeCommentTwoTone");t.Z=a},1812:function(e,t,n){"use strict";n.r(t),n.d(t,{borders:function(){return r.ZP},border:function(){return r.Cg},borderBottom:function(){return r.h$},borderColor:function(){return r.tv},borderLeft:function(){return r.sc},borderRadius:function(){return r.E0},borderRight:function(){return r.vQ},borderTop:function(){return r.j1},breakpoints:function(){return i.Z},compose:function(){return o.Z},styleFunctionSx:function(){return a.Z},css:function(){return a.i},display:function(){return s.ZP},flexbox:function(){return c.ZP},alignContent:function(){return c.Kv},alignItems:function(){return c.cq},alignSelf:function(){return c.uk},flex:function(){return c.fU},flexBasis:function(){return c.P_},flexDirection:function(){return c.Me},flexGrow:function(){return c.H7},flexShrink:function(){return c.i4},flexWrap:function(){return c.WO},justifyContent:function(){return c.Kl},justifyItems:function(){return c.eY},justifySelf:function(){return c.zo},order:function(){return c.vm},grid:function(){return l.ZP},gridArea:function(){return l.fD},gridAutoColumns:function(){return l.aN},gridAutoFlow:function(){return l.B},gridAutoRows:function(){return l.FW},gridColumn:function(){return l.t4},gridColumnGap:function(){return l.W3},gridGap:function(){return l.Cc},gridRow:function(){return l.oI},gridRowGap:function(){return l.Ub},gridTemplateAreas:function(){return l.zI},gridTemplateColumns:function(){return l.K$},gridTemplateRows:function(){return l.RG},palette:function(){return u.ZP},bgcolor:function(){return u.n9},color:function(){return u.$_},positions:function(){return d.ZP},bottom:function(){return d.I},left:function(){return d.t$},position:function(){return d.FK},right:function(){return d.F2},top:function(){return d.we},zIndex:function(){return d.W5},shadows:function(){return f.Z},sizing:function(){return p.ZP},boxSizing:function(){return p.ix},height:function(){return p.Cb},maxHeight:function(){return p.kC},maxWidth:function(){return p.kk},minHeight:function(){return p.jw},minWidth:function(){return p.ih},sizeHeight:function(){return p.Vs},sizeWidth:function(){return p.lO},width:function(){return p.bf},spacing:function(){return h.Z},createUnarySpacing:function(){return h.h},style:function(){return v.Z},typography:function(){return g.ZP},fontFamily:function(){return g.I8},fontSize:function(){return g.JB},fontStyle:function(){return g.p_},fontWeight:function(){return g.Ue},letterSpacing:function(){return g.rX},lineHeight:function(){return g.Nv},textAlign:function(){return g.yd}});var r=n(1158),i=n(3592),o=n(428),a=n(9030),s=n(5638),c=n(7762),l=n(8027),u=n(3178),d=n(1146),f=n(6563),p=n(2018),h=n(5408),v=n(2298),g=n(6674)},466:function(e,t,n){"use strict";function r(e,t){return function(){return null}}n.r(t),n.d(t,{HTMLElementType:function(){return b},chainPropTypes:function(){return r},deepmerge:function(){return i.Z},elementAcceptingRef:function(){return c},elementTypeAcceptingRef:function(){return l},exactProp:function(){return u},formatMuiErrorMessage:function(){return d.Z},getDisplayName:function(){return y},ponyfillGlobal:function(){return w},refType:function(){return S}});var i=n(7643),o=n(5697),a=n.n(o);var s=(a().element,function(){return null});s.isRequired=(a().element.isRequired,function(){return null});var c=s;var l=(o.elementType,function(){return null});n(6552),n(4038);function u(e){return e}var d=n(2192),f=n(1449),p=n(2051),h=/^\s*function(?:\s|\s*\/\*.*\*\/\s*)+([^(\s/]*)\s*/;function v(e){var t="".concat(e).match(h);return t&&t[1]||""}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e.displayName||e.name||v(e)||t}function m(e,t,n){var r=g(t);return e.displayName||(""!==r?"".concat(n,"(").concat(r,")"):n)}function y(e){if(null!=e){if("string"==typeof e)return e;if("function"==typeof e)return g(e,"Component");if("object"===(0,f.Z)(e))switch(e.$$typeof){case p.ForwardRef:return m(e,e.render,"ForwardRef");case p.Memo:return m(e,e.type,"memo");default:return}}}function b(e,t,n,r,i){return null}var w="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),S=a().oneOfType([a().func,a().object])},3299:function(e,t){"use strict";var n=60103,r=60106,i=60107,o=60108,a=60114,s=60109,c=60110,l=60112,u=60113,d=60120,f=60115,p=60116,h=60121,v=60122,g=60117,m=60129,y=60131;if("function"==typeof Symbol&&Symbol.for){var b=Symbol.for;n=b("react.element"),r=b("react.portal"),i=b("react.fragment"),o=b("react.strict_mode"),a=b("react.profiler"),s=b("react.provider"),c=b("react.context"),l=b("react.forward_ref"),u=b("react.suspense"),d=b("react.suspense_list"),f=b("react.memo"),p=b("react.lazy"),h=b("react.block"),v=b("react.server.block"),g=b("react.fundamental"),m=b("react.debug_trace_mode"),y=b("react.legacy_hidden")}function w(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case i:case a:case o:case u:case d:return e;default:switch(e=e&&e.$$typeof){case c:case l:case p:case f:case s:return e;default:return t}}case r:return t}}}var S=l,O=i,k=p,x=f,E=r,_=a,j=o,T=u;t.ForwardRef=S,t.Memo=x},2051:function(e,t,n){"use strict";e.exports=n(3299)},817:function(e,t,n){var r=n(3289),i=n(287).each;function o(e,t){this.query=e,this.isUnconditional=t,this.handlers=[],this.mql=window.matchMedia(e);var n=this;this.listener=function(e){n.mql=e.currentTarget||e,n.assess()},this.mql.addListener(this.listener)}o.prototype={constuctor:o,addHandler:function(e){var t=new r(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var t=this.handlers;i(t,(function(n,r){if(n.equals(e))return n.destroy(),!t.splice(r,1)}))},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){i(this.handlers,(function(e){e.destroy()})),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";i(this.handlers,(function(t){t[e]()}))}},e.exports=o},7870:function(e,t,n){var r=n(817),i=n(287),o=i.each,a=i.isFunction,s=i.isArray;function c(){if(!window.matchMedia)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!window.matchMedia("only all").matches}c.prototype={constructor:c,register:function(e,t,n){var i=this.queries,c=n&&this.browserIsIncapable;return i[e]||(i[e]=new r(e,c)),a(t)&&(t={match:t}),s(t)||(t=[t]),o(t,(function(t){a(t)&&(t={match:t}),i[e].addHandler(t)})),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},e.exports=c},3289:function(e){function t(e){this.options=e,!e.deferSetup&&this.setup()}t.prototype={constructor:t,setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},e.exports=t},287:function(e){e.exports={isFunction:function(e){return"function"==typeof e},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},each:function(e,t){for(var n=0,r=e.length;n=t||n<0||d&&e-l>=o}function S(){var e=h();if(w(e))return O(e);s=setTimeout(S,function(e){var n=t-(e-c);return d?p(n,o-(e-l)):n}(e))}function O(e){return s=void 0,m&&r?y(e):(r=i=void 0,a)}function k(){var e=h(),n=w(e);if(r=arguments,i=this,c=e,n){if(void 0===s)return b(c);if(d)return s=setTimeout(S,t),y(c)}return void 0===s&&(s=setTimeout(S,t)),a}return t=g(t)||0,v(n)&&(u=!!n.leading,o=(d="maxWait"in n)?f(g(n.maxWait)||0,t):o,m="trailing"in n?!!n.trailing:m),k.cancel=function(){void 0!==s&&clearTimeout(s),l=0,r=c=i=s=void 0},k.flush=function(){return void 0===s?a:O(h())},k}},2693:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NextArrow=t.PrevArrow=void 0;var r=a(n(7294)),i=a(n(3720)),o=n(8783);function a(e){return e&&e.__esModule?e:{default:e}}function s(e){return s="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},s(e)}function c(){return c=Object.assign||function(e){for(var t=1;t=O&&h<=w:h===O}),x={message:"dots",index:y,slidesToScroll:d,currentSlide:h},E=this.clickHandler.bind(this,x);m=m.concat(r.default.createElement("li",{key:y,className:k},r.default.cloneElement(this.props.customPaging(y),{onClick:E})))}return r.default.cloneElement(this.props.appendDots(m),function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function m(e){for(var t=1;t0&&(t.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),t.props.onLazyLoad&&t.props.onLazyLoad(e))}var n=m({listRef:t.list,trackRef:t.track},t.props);t.updateState(n,!0,(function(){t.adaptHeight(),t.props.autoplay&&t.autoPlay("update")})),"progressive"===t.props.lazyLoad&&(t.lazyLoadTimer=setInterval(t.progressiveLazyLoad,1e3)),t.ro=new d.default((function(){t.state.animating?(t.onWindowResized(!1),t.callbackTimers.push(setTimeout((function(){return t.onWindowResized()}),t.props.speed))):t.onWindowResized()})),t.ro.observe(t.list),document.querySelectorAll&&Array.prototype.forEach.call(document.querySelectorAll(".slick-slide"),(function(e){e.onfocus=t.props.pauseOnFocus?t.onSlideFocus:null,e.onblur=t.props.pauseOnFocus?t.onSlideBlur:null})),window.addEventListener?window.addEventListener("resize",t.onWindowResized):window.attachEvent("onresize",t.onWindowResized)})),x(O(t),"componentWillUnmount",(function(){t.animationEndCallback&&clearTimeout(t.animationEndCallback),t.lazyLoadTimer&&clearInterval(t.lazyLoadTimer),t.callbackTimers.length&&(t.callbackTimers.forEach((function(e){return clearTimeout(e)})),t.callbackTimers=[]),window.addEventListener?window.removeEventListener("resize",t.onWindowResized):window.detachEvent("onresize",t.onWindowResized),t.autoplayTimer&&clearInterval(t.autoplayTimer),t.ro.disconnect()})),x(O(t),"componentDidUpdate",(function(e){if(t.checkImagesLoad(),t.props.onReInit&&t.props.onReInit(),t.props.lazyLoad){var n=(0,s.getOnDemandLazySlides)(m(m({},t.props),t.state));n.length>0&&(t.setState((function(e){return{lazyLoadedList:e.lazyLoadedList.concat(n)}})),t.props.onLazyLoad&&t.props.onLazyLoad(n))}t.adaptHeight();var i=m(m({listRef:t.list,trackRef:t.track},t.props),t.state),o=t.didPropsChange(e);o&&t.updateState(i,o,(function(){t.state.currentSlide>=r.default.Children.count(t.props.children)&&t.changeSlide({message:"index",index:r.default.Children.count(t.props.children)-t.props.slidesToShow,currentSlide:t.state.currentSlide}),t.props.autoplay?t.autoPlay("update"):t.pause("paused")}))})),x(O(t),"onWindowResized",(function(e){t.debouncedResize&&t.debouncedResize.cancel(),t.debouncedResize=(0,o.default)((function(){return t.resizeWindow(e)}),50),t.debouncedResize()})),x(O(t),"resizeWindow",(function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],n=Boolean(t.track&&t.track.node);if(n){var r=m(m({listRef:t.list,trackRef:t.track},t.props),t.state);t.updateState(r,e,(function(){t.props.autoplay?t.autoPlay("update"):t.pause("paused")})),t.setState({animating:!1}),clearTimeout(t.animationEndCallback),delete t.animationEndCallback}})),x(O(t),"updateState",(function(e,n,i){var o=(0,s.initializedState)(e);e=m(m(m({},e),o),{},{slideIndex:o.currentSlide});var a=(0,s.getTrackLeft)(e);e=m(m({},e),{},{left:a});var c=(0,s.getTrackCSS)(e);(n||r.default.Children.count(t.props.children)!==r.default.Children.count(e.children))&&(o.trackStyle=c),t.setState(o,i)})),x(O(t),"ssrInit",(function(){if(t.props.variableWidth){var e=0,n=0,i=[],o=(0,s.getPreClones)(m(m(m({},t.props),t.state),{},{slideCount:t.props.children.length})),a=(0,s.getPostClones)(m(m(m({},t.props),t.state),{},{slideCount:t.props.children.length}));t.props.children.forEach((function(t){i.push(t.props.style.width),e+=t.props.style.width}));for(var c=0;c=n&&t.onWindowResized()};if(e.onclick){var o=e.onclick;e.onclick=function(){o(),e.parentNode.focus()}}else e.onclick=function(){return e.parentNode.focus()};e.onload||(t.props.lazyLoad?e.onload=function(){t.adaptHeight(),t.callbackTimers.push(setTimeout(t.onWindowResized,t.props.speed))}:(e.onload=i,e.onerror=function(){i(),t.props.onLazyLoadError&&t.props.onLazyLoadError()}))}))})),x(O(t),"progressiveLazyLoad",(function(){for(var e=[],n=m(m({},t.props),t.state),r=t.state.currentSlide;r=-(0,s.getPreClones)(n);i--)if(t.state.lazyLoadedList.indexOf(i)<0){e.push(i);break}e.length>0?(t.setState((function(t){return{lazyLoadedList:t.lazyLoadedList.concat(e)}})),t.props.onLazyLoad&&t.props.onLazyLoad(e)):t.lazyLoadTimer&&(clearInterval(t.lazyLoadTimer),delete t.lazyLoadTimer)})),x(O(t),"slideHandler",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=t.props,i=r.asNavFor,o=r.beforeChange,a=r.onLazyLoad,c=r.speed,l=r.afterChange,u=t.state.currentSlide,d=(0,s.slideHandler)(m(m(m({index:e},t.props),t.state),{},{trackRef:t.track,useCSS:t.props.useCSS&&!n})),f=d.state,p=d.nextState;if(f){o&&o(u,f.currentSlide);var h=f.lazyLoadedList.filter((function(e){return t.state.lazyLoadedList.indexOf(e)<0}));a&&h.length>0&&a(h),!t.props.waitForAnimate&&t.animationEndCallback&&(clearTimeout(t.animationEndCallback),l&&l(u),delete t.animationEndCallback),t.setState(f,(function(){i&&t.asNavForIndex!==e&&(t.asNavForIndex=e,i.innerSlider.slideHandler(e)),p&&(t.animationEndCallback=setTimeout((function(){var e=p.animating,n=v(p,["animating"]);t.setState(n,(function(){t.callbackTimers.push(setTimeout((function(){return t.setState({animating:e})}),10)),l&&l(f.currentSlide),delete t.animationEndCallback}))}),c))}))}})),x(O(t),"changeSlide",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=m(m({},t.props),t.state),i=(0,s.changeSlide)(r,e);if((0===i||i)&&(!0===n?t.slideHandler(i,n):t.slideHandler(i),t.props.autoplay&&t.autoPlay("update"),t.props.focusOnSelect)){var o=t.list.querySelectorAll(".slick-current");o[0]&&o[0].focus()}})),x(O(t),"clickHandler",(function(e){!1===t.clickable&&(e.stopPropagation(),e.preventDefault()),t.clickable=!0})),x(O(t),"keyHandler",(function(e){var n=(0,s.keyHandler)(e,t.props.accessibility,t.props.rtl);""!==n&&t.changeSlide({message:n})})),x(O(t),"selectHandler",(function(e){t.changeSlide(e)})),x(O(t),"disableBodyScroll",(function(){window.ontouchmove=function(e){(e=e||window.event).preventDefault&&e.preventDefault(),e.returnValue=!1}})),x(O(t),"enableBodyScroll",(function(){window.ontouchmove=null})),x(O(t),"swipeStart",(function(e){t.props.verticalSwiping&&t.disableBodyScroll();var n=(0,s.swipeStart)(e,t.props.swipe,t.props.draggable);""!==n&&t.setState(n)})),x(O(t),"swipeMove",(function(e){var n=(0,s.swipeMove)(e,m(m(m({},t.props),t.state),{},{trackRef:t.track,listRef:t.list,slideIndex:t.state.currentSlide}));n&&(n.swiping&&(t.clickable=!1),t.setState(n))})),x(O(t),"swipeEnd",(function(e){var n=(0,s.swipeEnd)(e,m(m(m({},t.props),t.state),{},{trackRef:t.track,listRef:t.list,slideIndex:t.state.currentSlide}));if(n){var r=n.triggerSlideHandler;delete n.triggerSlideHandler,t.setState(n),void 0!==r&&(t.slideHandler(r),t.props.verticalSwiping&&t.enableBodyScroll())}})),x(O(t),"touchEnd",(function(e){t.swipeEnd(e),t.clickable=!0})),x(O(t),"slickPrev",(function(){t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"previous"})}),0))})),x(O(t),"slickNext",(function(){t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"next"})}),0))})),x(O(t),"slickGoTo",(function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e=Number(e),isNaN(e))return"";t.callbackTimers.push(setTimeout((function(){return t.changeSlide({message:"index",index:e,currentSlide:t.state.currentSlide},n)}),0))})),x(O(t),"play",(function(){var e;if(t.props.rtl)e=t.state.currentSlide-t.props.slidesToScroll;else{if(!(0,s.canGoNext)(m(m({},t.props),t.state)))return!1;e=t.state.currentSlide+t.props.slidesToScroll}t.slideHandler(e)})),x(O(t),"autoPlay",(function(e){t.autoplayTimer&&clearInterval(t.autoplayTimer);var n=t.state.autoplaying;if("update"===e){if("hovered"===n||"focused"===n||"paused"===n)return}else if("leave"===e){if("paused"===n||"focused"===n)return}else if("blur"===e&&("paused"===n||"hovered"===n))return;t.autoplayTimer=setInterval(t.play,t.props.autoplaySpeed+50),t.setState({autoplaying:"playing"})})),x(O(t),"pause",(function(e){t.autoplayTimer&&(clearInterval(t.autoplayTimer),t.autoplayTimer=null);var n=t.state.autoplaying;"paused"===e?t.setState({autoplaying:"paused"}):"focused"===e?"hovered"!==n&&"playing"!==n||t.setState({autoplaying:"focused"}):"playing"===n&&t.setState({autoplaying:"hovered"})})),x(O(t),"onDotsOver",(function(){return t.props.autoplay&&t.pause("hovered")})),x(O(t),"onDotsLeave",(function(){return t.props.autoplay&&"hovered"===t.state.autoplaying&&t.autoPlay("leave")})),x(O(t),"onTrackOver",(function(){return t.props.autoplay&&t.pause("hovered")})),x(O(t),"onTrackLeave",(function(){return t.props.autoplay&&"hovered"===t.state.autoplaying&&t.autoPlay("leave")})),x(O(t),"onSlideFocus",(function(){return t.props.autoplay&&t.pause("focused")})),x(O(t),"onSlideBlur",(function(){return t.props.autoplay&&"focused"===t.state.autoplaying&&t.autoPlay("blur")})),x(O(t),"render",(function(){var e,n,i,o=(0,a.default)("slick-slider",t.props.className,{"slick-vertical":t.props.vertical,"slick-initialized":!0}),d=m(m({},t.props),t.state),f=(0,s.extractObject)(d,["fade","cssEase","speed","infinite","centerMode","focusOnSelect","currentSlide","lazyLoad","lazyLoadedList","rtl","slideWidth","slideHeight","listHeight","vertical","slidesToShow","slidesToScroll","slideCount","trackStyle","variableWidth","unslick","centerPadding","targetSlide","useCSS"]),p=t.props.pauseOnHover;if(f=m(m({},f),{},{onMouseEnter:p?t.onTrackOver:null,onMouseLeave:p?t.onTrackLeave:null,onMouseOver:p?t.onTrackOver:null,focusOnSelect:t.props.focusOnSelect&&t.clickable?t.selectHandler:null}),!0===t.props.dots&&t.state.slideCount>=t.props.slidesToShow){var v=(0,s.extractObject)(d,["dotsClass","slideCount","slidesToShow","currentSlide","slidesToScroll","clickHandler","children","customPaging","infinite","appendDots"]),g=t.props.pauseOnDotsHover;v=m(m({},v),{},{clickHandler:t.changeSlide,onMouseEnter:g?t.onDotsLeave:null,onMouseOver:g?t.onDotsOver:null,onMouseLeave:g?t.onDotsLeave:null}),e=r.default.createElement(l.Dots,v)}var y=(0,s.extractObject)(d,["infinite","centerMode","currentSlide","slideCount","slidesToShow","prevArrow","nextArrow"]);y.clickHandler=t.changeSlide,t.props.arrows&&(n=r.default.createElement(u.PrevArrow,y),i=r.default.createElement(u.NextArrow,y));var b=null;t.props.vertical&&(b={height:t.state.listHeight});var w=null;!1===t.props.vertical?!0===t.props.centerMode&&(w={padding:"0px "+t.props.centerPadding}):!0===t.props.centerMode&&(w={padding:t.props.centerPadding+" 0px"});var S=m(m({},b),w),O=t.props.touchMove,k={className:"slick-list",style:S,onClick:t.clickHandler,onMouseDown:O?t.swipeStart:null,onMouseMove:t.state.dragging&&O?t.swipeMove:null,onMouseUp:O?t.swipeEnd:null,onMouseLeave:t.state.dragging&&O?t.swipeEnd:null,onTouchStart:O?t.swipeStart:null,onTouchMove:t.state.dragging&&O?t.swipeMove:null,onTouchEnd:O?t.touchEnd:null,onTouchCancel:t.state.dragging&&O?t.swipeEnd:null,onKeyDown:t.props.accessibility?t.keyHandler:null},x={className:o,dir:"ltr",style:t.props.style};return t.props.unslick&&(k={className:"slick-list"},x={className:o}),r.default.createElement("div",x,t.props.unslick?"":n,r.default.createElement("div",h({ref:t.listRefHandler},k),r.default.createElement(c.Track,h({ref:t.trackRefHandler},f),t.props.children)),t.props.unslick?"":i,t.props.unslick?"":e)})),t.list=null,t.track=null,t.state=m(m({},i.default),{},{currentSlide:t.props.initialSlide,slideCount:r.default.Children.count(t.props.children)}),t.callbackTimers=[],t.clickable=!0,t.debouncedResize=null;var n=t.ssrInit();return t.state=m(m({},t.state),n),t}return t=S,(n=[{key:"didPropsChange",value:function(e){for(var t=!1,n=0,i=Object.keys(this.props);n1&&void 0!==arguments[1]&&arguments[1];return t.innerSlider.slickGoTo(e,n)})),b(m(t),"slickPause",(function(){return t.innerSlider.pause("paused")})),b(m(t),"slickPlay",(function(){return t.innerSlider.autoPlay("play")})),t.state={breakpoint:null},t._responsiveMediaHandlers=[],t}return t=d,(n=[{key:"media",value:function(e,t){w.register(e,t),this._responsiveMediaHandlers.push({query:e,handler:t})}},{key:"componentDidMount",value:function(){var e=this;if(this.props.responsive){var t=this.props.responsive.map((function(e){return e.breakpoint}));t.sort((function(e,t){return e-t})),t.forEach((function(n,r){var i;i=0===r?(0,o.default)({minWidth:0,maxWidth:n}):(0,o.default)({minWidth:t[r-1]+1,maxWidth:n}),(0,s.canUseDOM)()&&e.media(i,(function(){e.setState({breakpoint:n})}))}));var n=(0,o.default)({minWidth:t.slice(-1)[0]});(0,s.canUseDOM)()&&this.media(n,(function(){e.setState({breakpoint:null})}))}}},{key:"componentWillUnmount",value:function(){this._responsiveMediaHandlers.forEach((function(e){w.unregister(e.query,e.handler)}))}},{key:"render",value:function(){var e,t,n=this;(e=this.state.breakpoint?"unslick"===(t=this.props.responsive.filter((function(e){return e.breakpoint===n.state.breakpoint})))[0].settings?"unslick":f(f(f({},a.default),this.props),t[0].settings):f(f({},a.default),this.props)).centerMode&&(e.slidesToScroll,e.slidesToScroll=1),e.fade&&(e.slidesToShow,e.slidesToScroll,e.slidesToShow=1,e.slidesToScroll=1);var o=r.default.Children.toArray(this.props.children);o=o.filter((function(e){return"string"==typeof e?!!e.trim():!!e})),e.variableWidth&&(e.rows>1||e.slidesPerRow>1)&&(console.warn("variableWidth is not supported in case of rows > 1 or slidesPerRow > 1"),e.variableWidth=!1);for(var s=[],c=null,l=0;l=o.length));v+=1)h.push(r.default.cloneElement(o[v],{key:100*l+10*p+v,tabIndex:-1,style:{width:"".concat(100/e.slidesPerRow,"%"),display:"inline-block"}}));d.push(r.default.createElement("div",{key:10*l+p},h))}e.variableWidth?s.push(r.default.createElement("div",{key:l,style:{width:c}},d)):s.push(r.default.createElement("div",{key:l},d))}if("unslick"===e){var g="regular slider "+(this.props.className||"");return r.default.createElement("div",{className:g},o)}return s.length<=e.slidesToShow&&(e.unslick=!0),r.default.createElement(i.InnerSlider,u({style:this.props.style,ref:this.innerSliderRefHandler},e),s)}}])&&p(t.prototype,n),c&&p(t,c),d}(r.default.Component);t.default=S},2282:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Track=void 0;var r=a(n(7294)),i=a(n(3720)),o=n(8783);function a(e){return e&&e.__esModule?e:{default:e}}function s(e){return s="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},s(e)}function c(){return c=Object.assign||function(e){for(var t=1;t=e.slideCount,e.centerMode?(i=Math.floor(e.slidesToShow/2),n=(o-e.currentSlide)%e.slideCount==0,o>e.currentSlide-i-1&&o<=e.currentSlide+i&&(t=!0)):t=e.currentSlide<=o&&o=e.slideCount?e.targetSlide-e.slideCount:e.targetSlide)}},w=function(e,t){return e.key||t},S=function(e){var t,n=[],a=[],s=[],c=r.default.Children.count(e.children),l=(0,o.lazyStartIndex)(e),u=(0,o.lazyEndIndex)(e);return r.default.Children.forEach(e.children,(function(d,f){var p,h={message:"children",index:f,slidesToScroll:e.slidesToScroll,currentSlide:e.currentSlide};p=!e.lazyLoad||e.lazyLoad&&e.lazyLoadedList.indexOf(f)>=0?d:r.default.createElement("div",null);var v=function(e){var t={};return void 0!==e.variableWidth&&!1!==e.variableWidth||(t.width=e.slideWidth),e.fade&&(t.position="relative",e.vertical?t.top=-e.index*parseInt(e.slideHeight):t.left=-e.index*parseInt(e.slideWidth),t.opacity=e.currentSlide===e.index?1:0,e.useCSS&&(t.transition="opacity "+e.speed+"ms "+e.cssEase+", visibility "+e.speed+"ms "+e.cssEase)),t}(m(m({},e),{},{index:f})),g=p.props.className||"",y=b(m(m({},e),{},{index:f}));if(n.push(r.default.cloneElement(p,{key:"original"+w(p,f),"data-index":f,className:(0,i.default)(y,g),tabIndex:"-1","aria-hidden":!y["slick-active"],style:m(m({outline:"none"},p.props.style||{}),v),onClick:function(t){p.props&&p.props.onClick&&p.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}})),e.infinite&&!1===e.fade){var S=c-f;S<=(0,o.getPreClones)(e)&&c!==e.slidesToShow&&((t=-S)>=l&&(p=d),y=b(m(m({},e),{},{index:t})),a.push(r.default.cloneElement(p,{key:"precloned"+w(p,t),"data-index":t,tabIndex:"-1",className:(0,i.default)(y,g),"aria-hidden":!y["slick-active"],style:m(m({},p.props.style||{}),v),onClick:function(t){p.props&&p.props.onClick&&p.props.onClick(t),e.focusOnSelect&&e.focusOnSelect(h)}}))),c!==e.slidesToShow&&((t=c+f)0?1:0):0};t.lazySlidesOnLeft=p;var h=function(e){return e.centerMode?Math.floor((e.slidesToShow-1)/2)+1+(parseInt(e.centerPadding)>0?1:0):e.slidesToShow};t.lazySlidesOnRight=h;var v=function(e){return e&&e.offsetWidth||0};t.getWidth=v;var g=function(e){return e&&e.offsetHeight||0};t.getHeight=g;var m=function(e){var t,n,r,i,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return t=e.startX-e.curX,n=e.startY-e.curY,r=Math.atan2(n,t),(i=Math.round(180*r/Math.PI))<0&&(i=360-Math.abs(i)),i<=45&&i>=0||i<=360&&i>=315?"left":i>=135&&i<=225?"right":!0===o?i>=35&&i<=135?"up":"down":"vertical"};t.getSwipeDirection=m;var y=function(e){var t=!0;return e.infinite||(e.centerMode&&e.currentSlide>=e.slideCount-1||e.slideCount<=e.slidesToShow||e.currentSlide>=e.slideCount-e.slidesToShow)&&(t=!1),t};t.canGoNext=y;t.extractObject=function(e,t){var n={};return t.forEach((function(t){return n[t]=e[t]})),n};t.initializedState=function(e){var t,n=i.default.Children.count(e.children),r=e.listRef,o=Math.ceil(v(r)),s=e.trackRef&&e.trackRef.node,c=Math.ceil(v(s));if(e.vertical)t=o;else{var l=e.centerMode&&2*parseInt(e.centerPadding);"string"==typeof e.centerPadding&&"%"===e.centerPadding.slice(-1)&&(l*=o/100),t=Math.ceil((o-l)/e.slidesToShow)}var d=r&&g(r.querySelector('[data-index="0"]')),f=d*e.slidesToShow,p=void 0===e.currentSlide?e.initialSlide:e.currentSlide;e.rtl&&void 0===e.currentSlide&&(p=n-1-e.initialSlide);var h=e.lazyLoadedList||[],m=u(a(a({},e),{},{currentSlide:p,lazyLoadedList:h})),y={slideCount:n,slideWidth:t,listWidth:o,trackWidth:c,currentSlide:p,slideHeight:d,listHeight:f,lazyLoadedList:h=h.concat(m)};return null===e.autoplaying&&e.autoplay&&(y.autoplaying="playing"),y};t.slideHandler=function(e){var t=e.waitForAnimate,n=e.animating,r=e.fade,i=e.infinite,o=e.index,s=e.slideCount,l=e.lazyLoad,d=e.currentSlide,f=e.centerMode,p=e.slidesToScroll,h=e.slidesToShow,v=e.useCSS,g=e.lazyLoadedList;if(t&&n)return{};var m,b,w,S=o,O={},_={},j=i?o:c(o,0,s-1);if(r){if(!i&&(o<0||o>=s))return{};o<0?S=o+s:o>=s&&(S=o-s),l&&g.indexOf(S)<0&&(g=g.concat(S)),O={animating:!0,currentSlide:S,lazyLoadedList:g,targetSlide:S},_={animating:!1,targetSlide:S}}else m=S,S<0?(m=S+s,i?s%p!=0&&(m=s-s%p):m=0):!y(e)&&S>d?S=m=d:f&&S>=s?(S=i?s:s-1,m=i?0:s-1):S>=s&&(m=S-s,i?s%p!=0&&(m=0):m=s-h),!i&&S+h>=s&&(m=s-h),b=E(a(a({},e),{},{slideIndex:S})),w=E(a(a({},e),{},{slideIndex:m})),i||(b===w&&(S=m),b=w),l&&(g=g.concat(u(a(a({},e),{},{currentSlide:S})))),v?(O={animating:!0,currentSlide:m,trackStyle:x(a(a({},e),{},{left:b})),lazyLoadedList:g,targetSlide:j},_={animating:!1,currentSlide:m,trackStyle:k(a(a({},e),{},{left:w})),swipeLeft:null,targetSlide:j}):O={currentSlide:m,trackStyle:k(a(a({},e),{},{left:w})),lazyLoadedList:g,targetSlide:j};return{state:O,nextState:_}};t.changeSlide=function(e,t){var n,r,i,o,s=e.slidesToScroll,c=e.slidesToShow,l=e.slideCount,u=e.currentSlide,d=e.targetSlide,f=e.lazyLoad,p=e.infinite;if(n=l%s!=0?0:(l-u)%s,"previous"===t.message)o=u-(i=0===n?s:c-n),f&&!p&&(o=-1===(r=u-i)?l-1:r),p||(o=d-s);else if("next"===t.message)o=u+(i=0===n?s:n),f&&!p&&(o=(u+s)%l+n),p||(o=d+s);else if("dots"===t.message)o=t.index*t.slidesToScroll;else if("children"===t.message){if(o=t.index,p){var h=M(a(a({},e),{},{targetSlide:o}));o>t.currentSlide&&"left"===h?o-=l:o10)return{scrolling:!0};s&&(S.swipeLength=P);var C=(c?-1:1)*(S.curX>S.startX?1:-1);s&&(C=S.curY>S.startY?1:-1);var L=Math.ceil(g/b),z=m(t.touchObject,s),R=S.swipeLength;return w||(0===u&&("right"===z||"down"===z)||u+1>=L&&("left"===z||"up"===z)||!y(t)&&("left"===z||"up"===z))&&(R=S.swipeLength*d,!1===f&&p&&(p(z),T.edgeDragged=!0)),!h&&O&&(O(z),T.swiped=!0),j=i?M+R*(x/_)*C:c?M-R*C:M+R*C,s&&(j=M+R*C),T=a(a({},T),{},{touchObject:S,swipeLeft:j,trackStyle:k(a(a({},t),{},{left:j}))}),Math.abs(S.curX-S.startX)<.8*Math.abs(S.curY-S.startY)?T:(S.swipeLength>10&&(T.swiping=!0,l(e)),T)}};t.swipeEnd=function(e,t){var n=t.dragging,r=t.swipe,i=t.touchObject,o=t.listWidth,s=t.touchThreshold,c=t.verticalSwiping,u=t.listHeight,d=t.swipeToSlide,f=t.scrolling,p=t.onSwipe,h=t.targetSlide,v=t.currentSlide,g=t.infinite;if(!n)return r&&l(e),{};var y=c?u/s:o/s,b=m(i,c),O={dragging:!1,edgeDragged:!1,scrolling:!1,swiping:!1,swiped:!1,swipeLeft:null,touchObject:{}};if(f)return O;if(!i.swipeLength)return O;if(i.swipeLength>y){var k,_;l(e),p&&p(b);var j=g?v:h;switch(b){case"left":case"up":_=j+S(t),k=d?w(t,_):_,O.currentDirection=0;break;case"right":case"down":_=j-S(t),k=d?w(t,_):_,O.currentDirection=1;break;default:k=j}O.triggerSlideHandler=k}else{var T=E(t);O.trackStyle=x(a(a({},t),{},{left:T}))}return O};var b=function(e){for(var t=e.infinite?2*e.slideCount:e.slideCount,n=e.infinite?-1*e.slidesToShow:0,r=e.infinite?-1*e.slidesToShow:0,i=[];nn[n.length-1])t=n[n.length-1];else for(var i in n){if(t-1*e.swipeLeft)return n=r,!1}else if(r.offsetLeft-t+v(r)/2>-1*e.swipeLeft)return n=r,!1;return!0})),!n)return 0;var o=!0===e.rtl?e.slideCount-e.currentSlide:e.currentSlide;return Math.abs(n.dataset.index-o)||1}return e.slidesToScroll};t.getSlideCount=S;var O=function(e,t){return t.reduce((function(t,n){return t&&e.hasOwnProperty(n)}),!0)?null:console.error("Keys Missing:",e)};t.checkSpecKeys=O;var k=function(e){var t,n;O(e,["left","variableWidth","slideCount","slidesToShow","slideWidth"]);var r=e.slideCount+2*e.slidesToShow;e.vertical?n=r*e.slideHeight:t=T(e)*e.slideWidth;var i={opacity:1,transition:"",WebkitTransition:""};if(e.useTransform){var o=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",s=e.vertical?"translate3d(0px, "+e.left+"px, 0px)":"translate3d("+e.left+"px, 0px, 0px)",c=e.vertical?"translateY("+e.left+"px)":"translateX("+e.left+"px)";i=a(a({},i),{},{WebkitTransform:o,transform:s,msTransform:c})}else e.vertical?i.top=e.left:i.left=e.left;return e.fade&&(i={opacity:1}),t&&(i.width=t),n&&(i.height=n),window&&!window.addEventListener&&window.attachEvent&&(e.vertical?i.marginTop=e.left+"px":i.marginLeft=e.left+"px"),i};t.getTrackCSS=k;var x=function(e){O(e,["left","variableWidth","slideCount","slidesToShow","slideWidth","speed","cssEase"]);var t=k(e);return e.useTransform?(t.WebkitTransition="-webkit-transform "+e.speed+"ms "+e.cssEase,t.transition="transform "+e.speed+"ms "+e.cssEase):e.vertical?t.transition="top "+e.speed+"ms "+e.cssEase:t.transition="left "+e.speed+"ms "+e.cssEase,t};t.getTrackAnimateCSS=x;var E=function(e){if(e.unslick)return 0;O(e,["slideIndex","trackRef","infinite","centerMode","slideCount","slidesToShow","slidesToScroll","slideWidth","listWidth","variableWidth","slideHeight"]);var t,n,r=e.slideIndex,i=e.trackRef,o=e.infinite,a=e.centerMode,s=e.slideCount,c=e.slidesToShow,l=e.slidesToScroll,u=e.slideWidth,d=e.listWidth,f=e.variableWidth,p=e.slideHeight,h=e.fade,v=e.vertical;if(h||1===e.slideCount)return 0;var g=0;if(o?(g=-_(e),s%l!=0&&r+l>s&&(g=-(r>s?c-(r-s):s%l)),a&&(g+=parseInt(c/2))):(s%l!=0&&r+l>s&&(g=c-s%l),a&&(g=parseInt(c/2))),t=v?r*p*-1+g*p:r*u*-1+g*u,!0===f){var m,y=i&&i.node;if(m=r+_(e),t=(n=y&&y.childNodes[m])?-1*n.offsetLeft:0,!0===a){m=o?r+_(e):r,n=y&&y.children[m],t=0;for(var b=0;be.currentSlide?e.targetSlide>e.currentSlide+P(e)?"left":"right":e.targetSlide0&&(o+=1),r&&t%2==0&&(o+=1),o}return r?0:t-1};t.slidesOnRight=P;var C=function(e){var t=e.slidesToShow,n=e.centerMode,r=e.rtl,i=e.centerPadding;if(n){var o=(t-1)/2+1;return parseInt(i)>0&&(o+=1),r||t%2!=0||(o+=1),o}return r?t-1:0};t.slidesOnLeft=C;t.canUseDOM=function(){return!("undefined"==typeof window||!window.document||!window.document.createElement)}},3720:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t0},e.prototype.connect_=function(){i&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),c?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){i&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t;s.some((function(e){return!!~n.indexOf(e)}))&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),u=function(e,t){for(var n=0,r=Object.keys(t);n0},e}(),O="undefined"!=typeof WeakMap?new WeakMap:new r,k=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=l.getInstance(),r=new S(t,n,this);O.set(this,r)};["observe","unobserve","disconnect"].forEach((function(e){k.prototype[e]=function(){var t;return(t=O.get(this))[e].apply(t,arguments)}}));var x=void 0!==o.ResizeObserver?o.ResizeObserver:k;t.default=x},7833:function(e){e.exports=function(e){return e.replace(/[A-Z]/g,(function(e){return"-"+e.toLowerCase()})).toLowerCase()}},3194:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return se}});var r=n(7294),i=n(5794),o=n(453),a=n(3332),s=n(1293),c=n(4621),l=n(685),u=n(5175),d=n(9696),f=n(4234),p=n(838),h=n(5420),v=n(6742),g=n(7644),m=n(5444);var y=(0,c.Z)((function(e){var t;return{container:{backgroundColor:"#FFFFFF",padding:e.spacing(3),justifyContent:"center"},card:{width:"100%",borderRadius:"20px",borderColor:"rgba(201, 96, 255, 0.3)",boxShadow:"0 1px 20px rgba(201, 96, 255, 0.6)",background:"linear-gradient(90deg, #CA32FF, #FF5F96, #CA32FF, #FF5F96)",position:"relative",animation:"$swipe 3s linear infinite"},"@keyframes swipe":{"0%":{backgroundSize:"300%",backgroundPosition:"100% 0"},"100%":{backgroundSize:"300%",backgroundPosition:"0 0"}},content:{textAlign:"center",color:"white",paddingTop:e.spacing(2.5),"&:last-child":{paddingBottom:e.spacing(2.5)}},forwardArrow:{fontSize:e.typography.fontSize,marginLeft:e.spacing(2),marginTop:e.spacing(.5),fontWeight:700},grid:{direction:"row",justifyContent:"center",alignItems:"center"},item:(t={},t[e.breakpoints.down("xs")]={width:"75%"},t),text:{fontWeight:700}}}))((function(e){var t=e.classes,n=(0,m.useStaticQuery)("1767819709").allMarkdownRemark.nodes[0].fields.slug;return r.createElement(p.Z,{container:!0,className:t.container},r.createElement(h.Z,{className:t.card,variant:"outlined"},r.createElement(v.Z,null,r.createElement(f.Z,{to:n},r.createElement(g.Z,{className:t.content},r.createElement(p.Z,{container:!0,className:t.grid},r.createElement(p.Z,{item:!0,className:t.item},r.createElement(o.Z,{variant:"body1",className:t.text},"Want to learn more about our internship program? Check out this blog post!")),r.createElement(p.Z,{item:!0,justifyContent:"center"},r.createElement(u.Z,{className:t.forwardArrow}))))))))})),b=n(3868);var w=n.p+"static/rightbanner-6b7316feac0926c26187df4f67a8cf83.svg",S=n(4059);function O(e){var t=e.classes;return r.createElement("img",{className:t.leftBanner,src:b.Z})}function k(e){var t=e.classes;return r.createElement("img",{className:t.rightBanner,src:w})}function x(e){var t=e.classes;return r.createElement("img",{className:t.wordmark,src:S.Z})}var E=(0,c.Z)((function(e){var t,n,r,i;return{container:{backgroundColor:"#FADDFF"},content:(t={display:"flex",position:"relative",alignItems:"center",margin:"auto",overflow:"unset"},t[e.breakpoints.down("xs")]={maxWidth:"370px"},t),leftBanner:(n={width:310},n[e.breakpoints.down("sm")]={width:240},n[e.breakpoints.down("xs")]={width:180},n),wordmark:(r={width:310,overflow:"auto"},r[e.breakpoints.down("sm")]={width:240},r[e.breakpoints.down("xs")]={width:180,display:"block"},r),rightBanner:(i={width:310},i[e.breakpoints.down("sm")]={width:240},i[e.breakpoints.down("xs")]={width:180,display:"none"},i)}}))((function(e){var t=e.classes;return r.createElement("div",{className:t.container},r.createElement(s.Z,{maxWidth:"md"},r.createElement("div",{className:t.content},r.createElement(O,{classes:t}),r.createElement(x,{classes:t}),r.createElement(k,{classes:t}))))})),_=n(5750),j=n(6125),T=function(e){function t(){return e.apply(this,arguments)||this}return(0,_.Z)(t,e),t.prototype.render=function(){var e=this.props.classes;return r.createElement("div",{className:e.content},r.createElement(j.S,{src:"../../images/acm-hack-logo.svg",width:350,height:350,className:e.logo,placeholder:"none",quality:100,alt:"Hack Logo",__imageData:n(2492)}),r.createElement("div",{className:e.description},r.createElement(o.Z,{variant:"h4",classes:{root:e.title}},"What is Hack?"),r.createElement(o.Z,{variant:"body1"},"We are a student-run organization whose mission is to\nempower the community by providing the means to build amazing things and explore\nwhat is possible through code. We teach quarterly workshops and host events for\nstudents to expand their knowledge and apply their creativity to projects. Our\nevents are for coders of all skills levels, so whether you've been to 10 hackathons\n or you just learned \"Hello World,\" we're happy to have you.")))},t}(r.Component),M=(0,c.Z)((function(e){var t;return{container:{backgroundColor:"#ffffff",padding:e.spacing(2,0)},content:{display:"flex",justifyContent:"space-between",flexDirection:"row-reverse",alignItems:"center"},description:{textAlign:"justify",flexBasis:"80%",flexGrow:1},title:{fontFamily:e.typography.fontFamily,fontWeight:"bold",margin:e.spacing(2,0)},logo:(t={flexBasis:"15%",marginLeft:e.spacing(8)},t[e.breakpoints.down("xs")]={display:"none"},t)}}))(T);var P=(0,c.Z)((function(e){return{card:{height:"100%"},link:{height:"inherit"},cardActionArea:{height:"inherit"},title:{color:"#000000",fontFamily:["Poppins","sans-serif"],fontSize:1.3*e.typography.fontSize,lineHeight:1.2,fontWeight:600},subtitle:{color:"#000000",fontFamily:["Poppins","sans-serif"],fontSize:.9*e.typography.fontSize,lineHeight:1.3},excerpt:{fontSize:.9*e.typography.fontSize,color:"#0000008A"},info:{fontSize:.9*e.typography.fontSize,color:"#0000008A",padding:e.spacing(1,0,0)}}}))((function(e){var t=e.post,n=e.classes,i=t.frontmatter,a=t.fields;return r.createElement(h.Z,{className:n.card},r.createElement(f.Z,{to:a.slug,className:n.link},r.createElement(v.Z,{className:n.cardActionArea},r.createElement(g.Z,null,r.createElement(o.Z,{className:n.title},i.title),r.createElement(o.Z,{className:n.subtitle},i.subtitle),r.createElement(o.Z,{className:n.excerpt},t.excerpt),r.createElement(o.Z,{className:n.info},i.date," | ",t.timeToRead," min read")))))}));var C=(0,c.Z)({listItem:{overflowWrap:"break-word"}})((function(e){var t=e.classes,n=(0,m.useStaticQuery)("2196203009");return r.createElement(p.Z,{container:!0,spacing:2},n.allMarkdownRemark.nodes.map((function(e){return r.createElement(p.Z,{item:!0,sm:12,md:6,key:e.id,className:t.listItem},r.createElement(P,{post:e}))})))})),L=n(1749),z=n(3065);var R=(0,c.Z)((function(e){return{container:{marginLeft:e.spacing(-2),marginRight:e.spacing(-2),overflowX:"auto","-webkit-overflow-scrolling":"touch"},item:{position:"relative",width:"260px",height:"420px",margin:e.spacing(2),flex:"0 0 auto"}}}))((function(e){var t=e.classes,n=e.events.map((function(e){return r.createElement(p.Z,{item:!0,key:e.id,className:t.item},r.createElement(z.Z,e))}));return r.createElement("div",{className:t.container},r.createElement(p.Z,{container:!0,wrap:"nowrap",justifyContent:"space-between",classes:{root:t.gridList}},n))}));var A=function(){var e=(0,m.useStaticQuery)("4124548493").upcomingEvents.nodes;return 0===e.length?r.createElement(L.Z,null):r.createElement(R,{events:e})},W=n(4884);var Z=(0,c.Z)((function(e){var t;return{carouselImage:(t={height:"400px",position:"center",display:"block",marginRight:"auto",marginLeft:"auto",borderRadius:2*e.shape.borderRadius},t[e.breakpoints.down("xs")]={height:"300px"},t),carouselContainer:{position:"center"}}}))((function(e){var t=e.classes,n={dots:!0,infinite:!0,speed:800,slidesToShow:1,slidesToScroll:1,className:"slides"},i=(0,m.useStaticQuery)("597543710").carouselPhotos.nodes.map((function(e){return r.createElement(j.G,{image:Object.assign({},e.childImageSharp.gatsbyImageData),className:t.carouselImage,key:e.id})}));return r.createElement(W.Z,n,i)})),H=n(920),D=n(7719);var I=n.p+"static/pigeon-be8b99d597787fda8646b6c256d3bfb9.svg";var N=function(e){return r.createElement("div",e,r.createElement("img",{alt:"",src:I}))},F=(0,H.Z)((function(e){return{banner:{padding:e.spacing(5,0)},description:{marginBottom:e.spacing(2)},pigeonContainer:{position:"relative"},pigeon:{position:"absolute",top:"50%",left:"50%",transform:"translate(-40%, -50%)",width:"100%"},joinButton:{marginBottom:e.spacing(5)}}}));var q=function(){var e=F();return r.createElement("div",{className:e.banner},r.createElement(o.Z,{variant:"h5",paragraph:!0,classes:{root:e.description}},"Stay Connected"),r.createElement(p.Z,{container:!0},r.createElement(p.Z,{item:!0,xs:6},r.createElement(o.Z,{classes:{root:e.description}},"Join the ACM Hack Discord to get live announcements about upcoming events"),r.createElement(D.Z,{link:"https://discord.gg/3GSPECbCnE",text:"Join The ACM Hack Discord"})),r.createElement(p.Z,{item:!0,xs:6,classes:{root:e.pigeonContainer}},r.createElement(N,{className:e.pigeon}))))},B=n(1887),Y=n(9391),G=n(4850),X=n(2376),$=n(5371),U=n(7171),V=n(4014),K=n(4878),Q=n(4430),J=(0,c.Z)((function(e){return{root:{backgroundColor:e.palette.grey[50],boxShadow:"none",borderColor:e.palette.grey[400],borderTopWidth:2,borderTopStyle:"solid","&:last-child":{borderBottomWidth:2,borderBottomStyle:"solid"},"&::before":{display:"none"},"&$expanded":{margin:0}},expanded:{}}}))(X.Z),ee=(0,c.Z)((function(e){var t;return{root:(t={minHeight:"auto","&$expanded":{minHeight:"auto"}},t[e.breakpoints.down("xs")]={paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},t),content:{margin:"12px 0","&$expanded":{margin:"12px 0"}},expanded:{}}}))($.Z),te=(0,c.Z)((function(e){var t;return{root:(t={paddingBottom:e.spacing(6)},t[e.breakpoints.down("xs")]={paddingBottom:e.spacing(4),paddingLeft:e.spacing(1),paddingRight:e.spacing(1)},t)}}))(U.Z),ne=(0,V.Z)((function(e){return{question:{fontWeight:e.typography.fontWeightMedium,color:e.palette.secondary.main,fontFamily:e.typography.fontFamily}}}));function re(e){var t=e.index,n=e.question,i=e.answer,a=(0,r.useState)(!1),s=a[0],c=a[1],l=ne(),u="faqPanel"+t,d=(0,B.Z)();return r.createElement(J,{key:u,square:!0,expanded:s,onChange:function(){return c((function(e){return!e}))}},r.createElement(ee,{expandIcon:s?r.createElement(Q.Z,null):r.createElement(K.Z,null),"aria-controls":u+"-content",id:u+"-header"},r.createElement(o.Z,{variant:"body1",className:l.question},n)),r.createElement(te,null,r.createElement(o.Z,{variant:"body1",style:{maxWidth:.8*d.breakpoints.values.md}},i)))}var ie=function(){var e=[{question:"Where do I find the ACM YouTube channel?",answer:r.createElement(r.Fragment,null,"We post all recordings of our workshops on the ACM YouTube channel, which can be found ",r.createElement(G.Z,{href:"https://www.youtube.com/c/ACMUCLA/videos"},"here"),"!")},{question:"How do I participate?",answer:r.createElement(r.Fragment,null,"We recommend attending some of our events or asking us questions in the ",r.createElement(G.Z,{href:"https://discord.gg/3GSPECbCnE"},"ACM Hack Discord"),". Check out the events page for more information about the events we're holding this quarter. Everyone is welcome!")},{question:"Your past workshops seem interesting, how can I learn more?",answer:r.createElement(r.Fragment,null,"Check out the ",r.createElement(G.Z,{href:"/archive"},"archive")," page, where we keep a record of all of our past workshops!")},{question:"How do I join your team?",answer:r.createElement(r.Fragment,null,"We start recruitment for internship positions every fall, following the ACM general meeting (which you should attend)! After a quarter of shadowing officers, interns may have the opportunity to become full-time officers. All of our current officers started as interns and we highly encourage you to look out for applications in the fall!")},{question:"I have some other questions.",answer:r.createElement(r.Fragment,null,"Send us an email at ",r.createElement(G.Z,{href:"mailto:hack@uclaacm.com"},"hack@uclaacm.com")," or message us through the ",r.createElement(G.Z,{href:"https://discord.gg/3GSPECbCnE"},"ACM Hack Discord"),"!")}],t=(0,B.Z)();return r.createElement(Y.Z,{component:"section",paddingY:{xs:4,md:5},bgcolor:"background.grey"},r.createElement(s.Z,{maxWidth:"md"},r.createElement(Y.Z,{component:"hgroup",paddingBottom:{xs:4,md:8}},r.createElement(o.Z,{variant:"h4",component:"h2",style:{fontWeight:t.typography.fontWeightBold}},"FAQ"),r.createElement(o.Z,{variant:"h6",component:"h3",style:{color:t.palette.grey[600]}},"Frequently Asked Questions")),e.map((function(e,t){return r.createElement(re,Object.assign({key:t,index:t},e))}))))};var oe=(0,c.Z)((function(e){return{heading:{margin:e.spacing(4,0,0,0),fontFamily:e.typography.fontFamily,fontWeight:"bold",display:"flex",alignItems:"center"},headingIcon:{marginRight:e.spacing(1),fontSize:"inherit"},forwardArrow:{marginLeft:e.spacing(1),fontSize:.75*e.typography.fontSize},viewAllBtn:{margin:e.spacing(2,0)},whiteContainer:{padding:e.spacing(2,0),overflow:"hidden",backgroundColor:"#ffffff"},transparentContainer:{padding:e.spacing(2,0),overflow:"hidden"}}}))((function(e){var t=e.classes,n=function(e){var n=e.Icon,i=e.children;return r.createElement(o.Z,{variant:"h4",classes:{root:t.heading}},r.createElement(n,{color:"primary",classes:{root:t.headingIcon}}),i)},i=function(e){var n=e.to,i=e.children;return r.createElement(f.Z,{to:n},r.createElement(a.Z,{variant:"outlined",classes:{root:t.viewAllBtn}},i,r.createElement(u.Z,{classes:{root:t.forwardArrow}})))},c=function(e){return r.createElement("section",{className:t.whiteContainer},r.createElement(s.Z,Object.assign({maxWidth:"md"},e)))},p=function(e){return r.createElement("section",{className:t.transparentContainer},r.createElement(s.Z,Object.assign({maxWidth:"md"},e)))};return r.createElement(r.Fragment,null,r.createElement(E,null),r.createElement(c,null,r.createElement(y,null),r.createElement(M,null),r.createElement(q,null)),r.createElement(c,null,r.createElement(Z,null)),r.createElement(p,null,r.createElement(n,{Icon:d.Z},"Events"),r.createElement(i,{to:"/events#upcoming"},"View all events"),r.createElement(A,null)),r.createElement(c,null,r.createElement(n,{Icon:l.Z},"Blog posts"),r.createElement(i,{to:"/blog"},"View all blog posts"),r.createElement(C,null)),r.createElement(p,null,r.createElement(ie,null)))})),ae=n(2248);var se=function(){return r.createElement(i.Z,null,r.createElement(ae.Z,{title:"Home"}),r.createElement(oe,null))}},4176:function(e){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.default=e.exports,e.exports.__esModule=!0},3891:function(e,t,n){var r=n(3246);e.exports=function(e,t){if(null==e)return{};var n,i,o=r(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o},e.exports.default=e.exports,e.exports.__esModule=!0},2492:function(e){"use strict";e.exports=JSON.parse('{"layout":"constrained","images":{"fallback":{"src":"/static/db30fdb987ecfe4303c671f6c37009f9/d6820/acm-hack-logo.svg","srcSet":"/static/db30fdb987ecfe4303c671f6c37009f9/bf99a/acm-hack-logo.svg 88w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/18c75/acm-hack-logo.svg 175w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/d6820/acm-hack-logo.svg 350w","sizes":"(min-width: 350px) 350px, 100vw"},"sources":[{"srcSet":"/static/db30fdb987ecfe4303c671f6c37009f9/57fca/acm-hack-logo.webp 88w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/9c346/acm-hack-logo.webp 175w,\\n/static/db30fdb987ecfe4303c671f6c37009f9/df9ef/acm-hack-logo.webp 350w","type":"image/webp","sizes":"(min-width: 350px) 350px, 100vw"}]},"width":350,"height":350}')}}]); +//# sourceMappingURL=component---src-pages-index-js-2854e1544b1f257b833f.js.map \ No newline at end of file diff --git a/component---src-pages-index-js-c0a89fb77a0fba629888.js.LICENSE.txt b/component---src-pages-index-js-2854e1544b1f257b833f.js.LICENSE.txt similarity index 100% rename from component---src-pages-index-js-c0a89fb77a0fba629888.js.LICENSE.txt rename to component---src-pages-index-js-2854e1544b1f257b833f.js.LICENSE.txt diff --git a/component---src-pages-index-js-c0a89fb77a0fba629888.js.map b/component---src-pages-index-js-2854e1544b1f257b833f.js.map similarity index 96% rename from component---src-pages-index-js-c0a89fb77a0fba629888.js.map rename to component---src-pages-index-js-2854e1544b1f257b833f.js.map index a818be6b9..ecc991c95 100644 --- a/component---src-pages-index-js-c0a89fb77a0fba629888.js.map +++ b/component---src-pages-index-js-2854e1544b1f257b833f.js.map @@ -1 +1 @@ -{"version":3,"file":"component---src-pages-index-js-c0a89fb77a0fba629888.js","mappings":"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","sources":["webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/blue.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/common.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/green.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/grey.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/indigo.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/orange.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/pink.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/red.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/esm/CardActionArea/CardActionArea.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/colorManipulator.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createBreakpoints.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createMixins.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createPalette.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createSpacing.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createTheme.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createTypography.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/defaultTheme.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/makeStyles.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/shadows.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/shape.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/transitions.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/useTheme.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/zIndex.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/icons/ArrowForwardIos.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/icons/ModeCommentTwoTone.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/chainPropTypes.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/elementAcceptingRef.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/elementTypeAcceptingRef.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/exactProp.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/getDisplayName.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/HTMLElementType.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/ponyfillGlobal.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/refType.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/node_modules/react-is/cjs/react-is.production.min.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/node_modules/react-is/index.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/MediaQuery.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/QueryHandler.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/Util.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/index.js","webpack://hack.uclaacm.com/./node_modules/json2mq/index.js","webpack://hack.uclaacm.com/./node_modules/lodash.debounce/index.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/arrows.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/default-props.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/dots.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/index.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/initial-state.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/inner-slider.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/slider.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/track.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/utils/innerSliderUtils.js","webpack://hack.uclaacm.com/./node_modules/react-slick/node_modules/classnames/index.js","webpack://hack.uclaacm.com/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://hack.uclaacm.com/./node_modules/string-convert/camel2hyphen.js","webpack://hack.uclaacm.com/./src/components/HomePage/Announcement.js","webpack://hack.uclaacm.com/./src/components/HomePage/rightbanner.svg","webpack://hack.uclaacm.com/./src/components/HomePage/Banner.js","webpack://hack.uclaacm.com/./src/components/HomePage/HackDescription.js","webpack://hack.uclaacm.com/./src/components/HomePage/BlogListItem.js","webpack://hack.uclaacm.com/./src/components/HomePage/BlogList.js","webpack://hack.uclaacm.com/./src/components/ScrollableEvents/ScrollableEvents.js","webpack://hack.uclaacm.com/./src/components/HomePage/EventList.js","webpack://hack.uclaacm.com/./src/components/HomePage/Carousel.js","webpack://hack.uclaacm.com/./src/components/HomePage/pigeon.svg","webpack://hack.uclaacm.com/./src/components/HomePage/HackPigeon.js","webpack://hack.uclaacm.com/./src/components/HomePage/StayConnectedBanner.js","webpack://hack.uclaacm.com/./src/components/HomePage/FAQSection.js","webpack://hack.uclaacm.com/./src/components/HomePage/HomePage.js","webpack://hack.uclaacm.com/./src/pages/index.js","webpack://hack.uclaacm.com/./node_modules/gatsby/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://hack.uclaacm.com/./node_modules/gatsby/node_modules/@babel/runtime/helpers/objectWithoutProperties.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nvar _default = blue;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar common = {\n black: '#000',\n white: '#fff'\n};\nvar _default = common;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nvar _default = green;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nvar _default = grey;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nvar _default = indigo;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nvar _default = orange;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nvar _default = pink;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nvar _default = red;\nexports.default = _default;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'block',\n textAlign: 'inherit',\n width: '100%',\n '&:hover $focusHighlight': {\n opacity: theme.palette.action.hoverOpacity\n },\n '&$focusVisible $focusHighlight': {\n opacity: 0.12\n }\n },\n\n /* Pseudo-class applied to the ButtonBase root element if the action area is keyboard focused. */\n focusVisible: {},\n\n /* Styles applied to the overlay that covers the action area when it is keyboard focused. */\n focusHighlight: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit',\n opacity: 0,\n backgroundColor: 'currentcolor',\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.short\n })\n }\n };\n};\nvar CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n focusVisibleClassName = props.focusVisibleClassName,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"focusVisibleClassName\"]);\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(focusVisibleClassName, classes.focusVisible),\n ref: ref\n }, other), children, /*#__PURE__*/React.createElement(\"span\", {\n className: classes.focusHighlight\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiCardActionArea'\n})(CardActionArea);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hexToRgb = hexToRgb;\nexports.rgbToHex = rgbToHex;\nexports.hslToRgb = hslToRgb;\nexports.decomposeColor = decomposeColor;\nexports.recomposeColor = recomposeColor;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.emphasize = emphasize;\nexports.fade = fade;\nexports.alpha = alpha;\nexports.darken = darken;\nexports.lighten = lighten;\n\nvar _utils = require(\"@material-ui/utils\");\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\n\n\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nfunction hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\n\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\n\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : (0, _utils.formatMuiErrorMessage)(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\n\nfunction recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\n\nfunction getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\n\nfunction getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n\nvar warnedOnce = false;\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n *\n * @deprecated\n * Use `import { alpha } from '@material-ui/core/styles'` instead.\n */\n\nfunction fade(color, value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: The `fade` color utility was renamed to `alpha` to better describe its functionality.', '', \"You should use `import { alpha } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return alpha(color, value);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha value is overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0-1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createBreakpoints;\nexports.keys = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\")); // Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\n\n\nvar keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexports.keys = keys;\n\nfunction createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = (0, _objectWithoutProperties2.default)(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n var warnedOnce = false;\n\n function width(key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.warn([\"Material-UI: The `theme.breakpoints.width` utility is deprecated because it's redundant.\", 'Use the `theme.breakpoints.values` instead.'].join('\\n'));\n }\n }\n\n return values[key];\n }\n\n return (0, _extends2.default)({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createMixins;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _extends3 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nfunction createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return (0, _extends3.default)({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn(['Material-UI: theme.mixins.gutters() is deprecated.', 'You can use the source of the mixin directly:', \"\\n paddingLeft: theme.spacing(2),\\n paddingRight: theme.spacing(2),\\n [theme.breakpoints.up('sm')]: {\\n paddingLeft: theme.spacing(3),\\n paddingRight: theme.spacing(3),\\n },\\n \"].join('\\n'));\n return (0, _extends3.default)({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, (0, _defineProperty2.default)({}, breakpoints.up('sm'), (0, _extends3.default)({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, (0, _defineProperty2.default)(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), (0, _defineProperty2.default)(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPalette;\nexports.dark = exports.light = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _utils = require(\"@material-ui/utils\");\n\nvar _common = _interopRequireDefault(require(\"../colors/common\"));\n\nvar _grey = _interopRequireDefault(require(\"../colors/grey\"));\n\nvar _indigo = _interopRequireDefault(require(\"../colors/indigo\"));\n\nvar _pink = _interopRequireDefault(require(\"../colors/pink\"));\n\nvar _red = _interopRequireDefault(require(\"../colors/red\"));\n\nvar _orange = _interopRequireDefault(require(\"../colors/orange\"));\n\nvar _blue = _interopRequireDefault(require(\"../colors/blue\"));\n\nvar _green = _interopRequireDefault(require(\"../colors/green\"));\n\nvar _colorManipulator = require(\"./colorManipulator\");\n\nvar light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: _common.default.white,\n default: _grey.default[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexports.light = light;\nvar dark = {\n text: {\n primary: _common.default.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: _grey.default[800],\n default: '#303030'\n },\n action: {\n active: _common.default.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nexports.dark = dark;\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = (0, _colorManipulator.lighten)(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = (0, _colorManipulator.darken)(intent.main, tonalOffsetDark);\n }\n }\n}\n\nfunction createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: _indigo.default[300],\n main: _indigo.default[500],\n dark: _indigo.default[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: _pink.default.A200,\n main: _pink.default.A400,\n dark: _pink.default.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: _red.default[300],\n main: _red.default[500],\n dark: _red.default[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: _orange.default[300],\n main: _orange.default[500],\n dark: _orange.default[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: _blue.default[300],\n main: _blue.default[500],\n dark: _blue.default[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: _green.default[300],\n main: _green.default[500],\n dark: _green.default[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = (0, _objectWithoutProperties2.default)(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n function getContrastText(background) {\n var contrastText = (0, _colorManipulator.getContrastRatio)(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = (0, _colorManipulator.getContrastRatio)(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = (0, _extends2.default)({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : (0, _utils.formatMuiErrorMessage)(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = (0, _utils.deepmerge)((0, _extends2.default)({\n // A collection of common colors.\n common: _common.default,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: _grey.default,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createSpacing;\n\nvar _system = require(\"@material-ui/system\");\n\nvar warnOnce;\n\nfunction createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8; // Already transformed.\n\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = (0, _system.createUnarySpacing)({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createMuiTheme = createMuiTheme;\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _utils = require(\"@material-ui/utils\");\n\nvar _createBreakpoints = _interopRequireDefault(require(\"./createBreakpoints\"));\n\nvar _createMixins = _interopRequireDefault(require(\"./createMixins\"));\n\nvar _createPalette = _interopRequireDefault(require(\"./createPalette\"));\n\nvar _createTypography = _interopRequireDefault(require(\"./createTypography\"));\n\nvar _shadows = _interopRequireDefault(require(\"./shadows\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _createSpacing = _interopRequireDefault(require(\"./createSpacing\"));\n\nvar _transitions = _interopRequireDefault(require(\"./transitions\"));\n\nvar _zIndex = _interopRequireDefault(require(\"./zIndex\"));\n\nfunction createTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = (0, _objectWithoutProperties2.default)(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n var palette = (0, _createPalette.default)(paletteInput);\n var breakpoints = (0, _createBreakpoints.default)(breakpointsInput);\n var spacing = (0, _createSpacing.default)(spacingInput);\n var muiTheme = (0, _utils.deepmerge)({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: (0, _createMixins.default)(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: _shadows.default,\n typography: (0, _createTypography.default)(palette, typographyInput),\n spacing: spacing,\n shape: _shape.default,\n transitions: _transitions.default,\n zIndex: _zIndex.default\n }, other);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n muiTheme = args.reduce(function (acc, argument) {\n return (0, _utils.deepmerge)(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: (0, _defineProperty2.default)({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://material-ui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nvar warnedOnce = false;\n\nfunction createMuiTheme() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme.apply(void 0, arguments);\n}\n\nvar _default = createTheme;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createTypography;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _utils = require(\"@material-ui/utils\");\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar warnedOnce = false;\n\nfunction roundWithDeprecationWarning(value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['Material-UI: The `theme.typography.round` helper is deprecated.', 'Head to https://material-ui.com/r/migration-v4/#theme for a migration path.'].join('\\n'));\n warnedOnce = true;\n }\n }\n\n return round(value);\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nfunction createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = (0, _objectWithoutProperties2.default)(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return (0, _extends2.default)({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return (0, _utils.deepmerge)((0, _extends2.default)({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: roundWithDeprecationWarning,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\n\nvar defaultTheme = (0, _createTheme.default)();\nvar _default = defaultTheme;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _styles = require(\"@material-ui/styles\");\n\nvar _defaultTheme = _interopRequireDefault(require(\"./defaultTheme\"));\n\nfunction makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return (0, _styles.makeStyles)(stylesOrCreator, (0, _extends2.default)({\n defaultTheme: _defaultTheme.default\n }, options));\n}\n\nvar _default = makeStyles;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nvar _default = shadows;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar shape = {\n borderRadius: 4\n};\nvar _default = shape;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.duration = exports.easing = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\")); // Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\n\n\nvar easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexports.easing = easing;\nvar duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nexports.duration = duration;\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nvar _default = {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = (0, _objectWithoutProperties2.default)(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = useTheme;\n\nvar _styles = require(\"@material-ui/styles\");\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _defaultTheme = _interopRequireDefault(require(\"./defaultTheme\"));\n\nfunction useTheme() {\n var theme = (0, _styles.useTheme)() || _defaultTheme.default;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n _react.default.useDebugValue(theme);\n }\n\n return theme;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0; // We need to centralize the zIndex definitions as they work\n// like global values in the browser.\n\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nvar _default = zIndex;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z\"\n}), 'ArrowForwardIos');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4V4c0-1.1-.9-2-2-2zm0 15.17L18.83 16H4V4h16v13.17z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 4v12h14.83L20 17.17V4z\",\n opacity: \".3\"\n})), 'ModeCommentTwoTone');\n\nexports.default = _default;","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n return function validate() {\n return propType1.apply(void 0, arguments) || propType2.apply(void 0, arguments);\n };\n}","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\n\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n var _elementType$prototyp = elementType.prototype,\n prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp;\n return Boolean(prototype.isReactComponent);\n}\n\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n var element = props[propName];\n var safePropName = propFullName || propName;\n\n if (element == null) {\n return null;\n }\n\n var warningHint;\n var elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n\n if (warningHint !== undefined) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an element that can hold a ref. \".concat(warningHint, \" \") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide');\n }\n\n return null;\n}\n\nvar elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import * as PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\n\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n var _elementType$prototyp = elementType.prototype,\n prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp;\n return Boolean(prototype.isReactComponent);\n}\n\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var safePropName = propFullName || propName;\n\n if (propValue == null) {\n return null;\n }\n\n var warningHint;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n\n if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n warningHint = 'Did you accidentally provide a plain function component instead?';\n }\n\n if (warningHint !== undefined) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an element type that can hold a ref. \".concat(warningHint, \" \") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide');\n }\n\n return null;\n}\n\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\"; // This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n// Only exported for test purposes.\n\nexport var specialProperty = \"exact-prop: \\u200B\";\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n\n return _extends({}, propTypes, _defineProperty({}, specialProperty, function (props) {\n var unsupportedProps = Object.keys(props).filter(function (prop) {\n return !propTypes.hasOwnProperty(prop);\n });\n\n if (unsupportedProps.length > 0) {\n return new Error(\"The following props are not supported: \".concat(unsupportedProps.map(function (prop) {\n return \"`\".concat(prop, \"`\");\n }).join(', '), \". Please remove them.\"));\n }\n\n return null;\n }));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { ForwardRef, Memo } from 'react-is'; // Simplified polyfill for IE 11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\n\nvar fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n var match = \"\".concat(fn).match(fnNameMatchRegex);\n var name = match && match[1];\n return name || '';\n}\n/**\n * @param {function} Component\n * @param {string} fallback\n * @returns {string | undefined}\n */\n\nfunction getFunctionComponentName(Component) {\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? \"\".concat(wrapperName, \"(\").concat(functionName, \")\") : wrapperName);\n}\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE 11 support\n *\n * @param {React.ReactType} Component\n * @returns {string | undefined}\n */\n\n\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n if (_typeof(Component) === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n\n default:\n return undefined;\n }\n }\n\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n var propValue = props[propName];\n var safePropName = propFullName || propName;\n\n if (propValue == null) {\n return null;\n }\n\n if (propValue && propValue.nodeType !== 1) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an HTMLElement.\");\n }\n\n return null;\n}","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import PropTypes from 'prop-types';\nvar refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar b = 60103,\n c = 60106,\n d = 60107,\n e = 60108,\n f = 60114,\n g = 60109,\n h = 60110,\n k = 60112,\n l = 60113,\n m = 60120,\n n = 60115,\n p = 60116,\n q = 60121,\n r = 60122,\n u = 60117,\n v = 60129,\n w = 60131;\n\nif (\"function\" === typeof Symbol && Symbol.for) {\n var x = Symbol.for;\n b = x(\"react.element\");\n c = x(\"react.portal\");\n d = x(\"react.fragment\");\n e = x(\"react.strict_mode\");\n f = x(\"react.profiler\");\n g = x(\"react.provider\");\n h = x(\"react.context\");\n k = x(\"react.forward_ref\");\n l = x(\"react.suspense\");\n m = x(\"react.suspense_list\");\n n = x(\"react.memo\");\n p = x(\"react.lazy\");\n q = x(\"react.block\");\n r = x(\"react.server.block\");\n u = x(\"react.fundamental\");\n v = x(\"react.debug_trace_mode\");\n w = x(\"react.legacy_hidden\");\n}\n\nfunction y(a) {\n if (\"object\" === typeof a && null !== a) {\n var t = a.$$typeof;\n\n switch (t) {\n case b:\n switch (a = a.type, a) {\n case d:\n case f:\n case e:\n case l:\n case m:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case h:\n case k:\n case p:\n case n:\n case g:\n return a;\n\n default:\n return t;\n }\n\n }\n\n case c:\n return t;\n }\n }\n}\n\nvar z = g,\n A = b,\n B = k,\n C = d,\n D = p,\n E = n,\n F = c,\n G = f,\n H = e,\n I = l;\nexports.ContextConsumer = h;\nexports.ContextProvider = z;\nexports.Element = A;\nexports.ForwardRef = B;\nexports.Fragment = C;\nexports.Lazy = D;\nexports.Memo = E;\nexports.Portal = F;\nexports.Profiler = G;\nexports.StrictMode = H;\nexports.Suspense = I;\n\nexports.isAsyncMode = function () {\n return !1;\n};\n\nexports.isConcurrentMode = function () {\n return !1;\n};\n\nexports.isContextConsumer = function (a) {\n return y(a) === h;\n};\n\nexports.isContextProvider = function (a) {\n return y(a) === g;\n};\n\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === b;\n};\n\nexports.isForwardRef = function (a) {\n return y(a) === k;\n};\n\nexports.isFragment = function (a) {\n return y(a) === d;\n};\n\nexports.isLazy = function (a) {\n return y(a) === p;\n};\n\nexports.isMemo = function (a) {\n return y(a) === n;\n};\n\nexports.isPortal = function (a) {\n return y(a) === c;\n};\n\nexports.isProfiler = function (a) {\n return y(a) === f;\n};\n\nexports.isStrictMode = function (a) {\n return y(a) === e;\n};\n\nexports.isSuspense = function (a) {\n return y(a) === l;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === d || a === f || a === v || a === e || a === l || a === m || a === w || \"object\" === typeof a && null !== a && (a.$$typeof === p || a.$$typeof === n || a.$$typeof === g || a.$$typeof === h || a.$$typeof === k || a.$$typeof === u || a.$$typeof === q || a[0] === r) ? !0 : !1;\n};\n\nexports.typeOf = y;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","var QueryHandler = require('./QueryHandler');\n\nvar each = require('./Util').each;\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\n\n\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n var self = this;\n\n this.listener = function (mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n constuctor: MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler: function addHandler(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler: function removeHandler(handler) {\n var handlers = this.handlers;\n each(handlers, function (h, i) {\n if (h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i, 1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches: function matches() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear: function clear() {\n each(this.handlers, function (handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess: function assess() {\n var action = this.matches() ? 'on' : 'off';\n each(this.handlers, function (handler) {\n handler[action]();\n });\n }\n};\nmodule.exports = MediaQuery;","var MediaQuery = require('./MediaQuery');\n\nvar Util = require('./Util');\n\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\n\nfunction MediaQueryDispatch() {\n if (!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n constructor: MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register: function register(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if (!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n } //normalise to object in an array\n\n\n if (isFunction(options)) {\n options = {\n match: options\n };\n }\n\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (handler) {\n if (isFunction(handler)) {\n handler = {\n match: handler\n };\n }\n\n queries[q].addHandler(handler);\n });\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister: function unregister(q, handler) {\n var query = this.queries[q];\n\n if (query) {\n if (handler) {\n query.removeHandler(handler);\n } else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\nmodule.exports = MediaQueryDispatch;","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n constructor: QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup: function setup() {\n if (this.options.setup) {\n this.options.setup();\n }\n\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on: function on() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off: function off() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy: function destroy() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals: function equals(target) {\n return this.options === target || this.options.match === target;\n }\n};\nmodule.exports = QueryHandler;","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for (i; i < length; i++) {\n cont = fn(collection[i], i);\n\n if (cont === false) {\n break; //allow early exit\n }\n }\n}\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\n\n\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\n\n\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction: isFunction,\n isArray: isArray,\n each: each\n};","var MediaQueryDispatch = require('./MediaQueryDispatch');\n\nmodule.exports = new MediaQueryDispatch();","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function isDimension(feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function obj2mq(obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature); // Add px to dimension features\n\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n\n if (index < features.length - 1) {\n mq += ' and ';\n }\n });\n return mq;\n};\n\nvar json2mq = function json2mq(query) {\n var mq = '';\n\n if (typeof query === 'string') {\n return query;\n } // Handling array of media queries\n\n\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n\n if (index < query.length - 1) {\n mq += ', ';\n }\n });\n return mq;\n } // Handling single media query\n\n\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used as references for various `Number` constants. */\n\nvar NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\nvar now = function now() {\n return root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = debounce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NextArrow = exports.PrevArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this; // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n\n\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n} // given specifications/props for a slide, fetch all the classes that need to be applied to the slide\n\n\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clamp = clamp;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = exports.safePreventDefault = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding; // returns no of slides on the right of active slide\n\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding; // returns no of slides on the left of active slide\n\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n\n\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n\n return false;\n });\n return result;\n }\n\n return (\n /** @class */\n function () {\n function class_1() {\n this.__entries__ = [];\n }\n\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n return class_1;\n }()\n );\n}();\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\n\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; // Returns global object of a current environment.\n\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n } // eslint-disable-next-line no-new-func\n\n\n return Function('return this')();\n}();\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\n\n\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}(); // Defines minimum timeout before adding a trailing call.\n\n\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\n\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n\n\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n\n\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n } // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n\n\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n} // Minimum delay before invoking the update of observers.\n\n\nvar REFRESH_DELAY = 20; // A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\n\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; // Check if MutationObserver is available.\n\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\n\nvar ResizeObserverController =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n } // Add listeners if they haven't been added yet.\n\n\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer); // Remove observer if it's present in registry.\n\n if (~index) {\n observers.splice(index, 1);\n } // Remove listeners if controller has no connected observers.\n\n\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_(); // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n\n\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n }); // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n } // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n\n\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b; // Detect whether transition may affect dimensions of an element.\n\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\n\n\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n};\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\n\n\nvar getWindowOf = function getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local global object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || global$1;\n}; // Placeholder of an empty content rectangle.\n\n\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\n\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\n\n\nfunction getBordersSize(styles) {\n var positions = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\n\n\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight; // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom; // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n\n var width = toFloat(styles.width),\n height = toFloat(styles.height); // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n } // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n\n\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight; // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n } // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n\n\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\n\n\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height; // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype); // Rectangle's properties are not writable and non-enumerable.\n\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\n\n\nvar ResizeObservation =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n\n\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n\n return ResizeObservation;\n}();\n\nvar ResizeObserverEntry =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit); // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n\n return ResizeObserverEntry;\n}();\n\nvar ResizeObserverSPI =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is already being observed.\n\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this); // Force the update of observations.\n\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is not being observed.\n\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_; // Create ResizeObserverEntry instance for every active observation.\n\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n\n return ResizeObserverSPI;\n}(); // Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\n\n\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\n\nvar ResizeObserver =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n\n return ResizeObserver;\n}(); // Expose public methods of ResizeObserver.\n\n\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\n\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n}();\n\nexport default index;","var camel2hyphen = function camel2hyphen(str) {\n return str.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n }).toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Card, CardActionArea, CardContent, Grid, Typography } from '@material-ui/core';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForwardIos';\n\nimport LinkNoStyle from '../LinkNoStyle/LinkNoStyle';\nimport { graphql, useStaticQuery } from 'gatsby';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tbackgroundColor: '#FFFFFF',\n\t\tpadding: theme.spacing(3),\n\t\tjustifyContent: 'center'\n\t},\n\tcard: {\n\t\twidth: '100%',\n\t\tborderRadius: '20px',\n\t\tborderColor: 'rgba(201, 96, 255, 0.3)',\n\t\tboxShadow: '0 1px 20px rgba(201, 96, 255, 0.6)',\n\t\tbackground: 'linear-gradient(90deg, #CA32FF, #FF5F96, #CA32FF, #FF5F96)',\n\t\tposition: 'relative',\n\t\tanimation: `$swipe 3s linear infinite`\n\t},\n\t'@keyframes swipe': {\n\t\t'0%': {\n\t\t\tbackgroundSize: '300%',\n\t\t\tbackgroundPosition: '100% 0'\n\t\t},\n\t\t'100%': {\n\t\t\tbackgroundSize: '300%',\n\t\t\tbackgroundPosition: '0 0'\n\t\t}\n\t},\n\tcontent: {\n\t\ttextAlign: 'center',\n\t\tcolor: 'white',\n\t\tpaddingTop: theme.spacing(2.5),\n\t\t'&:last-child': {\n\t\t\tpaddingBottom: theme.spacing(2.5)\n\t\t}\n\t},\n\tforwardArrow: {\n\t\tfontSize: theme.typography.fontSize,\n\t\tmarginLeft: theme.spacing(2),\n\t\tmarginTop: theme.spacing(0.5),\n\t\tfontWeight: 700\n\t},\n\tgrid: {\n\t\tdirection: 'row',\n\t\tjustifyContent: 'center',\n\t\talignItems: 'center'\n\t},\n\titem: {\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: '75%'\n\t\t}\n\t},\n\ttext: {\n\t\tfontWeight: 700\n\t}\n});\n\n\nfunction Announcement({ classes }) {\n\tconst data = useStaticQuery(graphql`\n\tquery getInternBlogPost {\n\t\tallMarkdownRemark(\n\t\t\tfilter: {fields: {slug: {regex: \"/.*hey-future-interns.*/\"}}}\n\t\t) {\n\t\t nodes {\n\t\t\tfields {\n\t\t\t slug\n\t\t\t}\n\t\t\tid\n\t\t }\n\t\t}\n\t }\n\t`);\n\n\tconst url = data.allMarkdownRemark.nodes[0].fields.slug;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tWant to learn more about our internship program? Check out this blog post!\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nAnnouncement.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(Announcement);\n","var _g, _g2, _g3, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRightbanner(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 499 801\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.09,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M453.299 98.5c0 7.456-6.044 13.5-13.5 13.5H358.5c-7.456 0-13.5-6.044-13.5-13.5S351.044 85 358.5 85h81.299c7.456 0 13.5 6.044 13.5 13.5zM221.792 653.913c0 7.456-6.045 13.5-13.501 13.5H36.944c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5H208.29c7.456 0 13.501 6.044 13.501 13.5zm41.773-151.589c0 7.456-6.044 13.5-13.5 13.5h-45.49c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h45.49c7.456 0 13.5 6.044 13.5 13.5zm163.531-101.058c0 7.455-6.044 13.5-13.5 13.5H242.248c-7.456 0-13.5-6.045-13.5-13.5 0-7.456 6.044-13.5 13.5-13.5h171.348c7.456 0 13.5 6.044 13.5 13.5zm-236.021-50.531c0 7.456-6.044 13.5-13.5 13.5h-65.872c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h65.872c7.456 0 13.5 6.044 13.5 13.5zm97.737-202.117c0 7.456-6.044 13.5-13.5 13.5H155.734c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h119.578c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"#942EFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.411 199.147c0 7.456-6.045 13.5-13.5 13.5H86.563c-7.456 0-13.5-6.044-13.5-13.5 0-7.455 6.044-13.5 13.5-13.5H257.91c7.455 0 13.5 6.045 13.5 13.5zM66.022 502.324c0 7.456-6.044 13.5-13.5 13.5H33.104c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h19.418c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"#FB4469\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M242.196 552.853c0 7.456-6.044 13.501-13.5 13.501H28.642c-7.456 0-13.5-6.045-13.5-13.501 0-7.455 6.044-13.5 13.5-13.5h200.054c7.456 0 13.5 6.045 13.5 13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint0_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M250.954 98.089c0 7.456-6.044 13.5-13.5 13.5H107.019c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h130.435c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint1_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M430.396 47.56c0 7.455-6.045 13.5-13.501 13.5H245.548c-7.456 0-13.501-6.045-13.501-13.5 0-7.456 6.045-13.5 13.501-13.5h171.347c7.456 0 13.501 6.044 13.501 13.5z\",\n fill: \"#FB4469\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.609 754.971c0 7.456-6.044 13.5-13.5 13.5H13.5c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h77.61c7.455 0 13.499 6.044 13.499 13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint2_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M232.048 704.442c0 7.456-6.044 13.5-13.5 13.5h-89.37c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h89.37c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"#FB4469\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.668 300.206c0-7.456 6.045-13.5 13.5-13.5h144.449c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5H142.168c-7.455 0-13.5-6.044-13.5-13.5z\",\n fill: \"#C960FF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M300.117 249.678c0-7.456 6.044-13.5 13.5-13.5h171.348c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5H313.617c-7.456 0-13.5-6.044-13.5-13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint3_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.404 401.266c0-7.456 6.044-13.5 13.5-13.5h88.379c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5h-88.379c-7.456 0-13.5-6.044-13.5-13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint4_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M263.565 451.795c0-7.456 6.044-13.5 13.5-13.5h171.348c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5H277.065c-7.456 0-13.5-6.044-13.5-13.5z\",\n fill: \"#C960FF\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#rightbanner_svg__rightbanner_svg__filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 216.67,\n height: 396.522,\n rx: 33.516,\n transform: \"matrix(0 1 1 0 76.487 139)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint5_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 207.586,\n height: 390.473,\n rx: 30.723,\n transform: \"matrix(0 1 1 0 79.512 143.539)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint6_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 187.651,\n height: 371.336,\n rx: 19.551,\n transform: \"matrix(0 1 1 0 88.67 153.51)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint7_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#481330\",\n d: \"M81.91 298.404V195.731h11.214v102.673z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#481330\",\n d: \"M81.91 288.378V205.76h20.767v82.62z\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 93.124,\n cy: 288.377,\n rx: 10.028,\n ry: 9.552,\n transform: \"rotate(-90 93.124 288.377)\",\n fill: \"#481330\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 93.124,\n cy: 205.759,\n rx: 10.028,\n ry: 9.552,\n transform: \"rotate(-90 93.124 205.759)\",\n fill: \"#481330\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 90.371,\n y: 275.758,\n width: 42.315,\n height: 3.846,\n rx: 1.923,\n transform: \"rotate(-90 90.371 275.758)\",\n fill: \"#1B1615\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 92.294,\n cy: 220.122,\n rx: 3.873,\n ry: 3.624,\n transform: \"rotate(-90 92.294 220.122)\",\n fill: \"#1A1A1A\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 92.436,\n cy: 220.247,\n rx: 2.108,\n ry: 1.916,\n transform: \"rotate(-90 92.436 220.247)\",\n fill: \"#525252\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 92.294,\n cy: 220.248,\n rx: 3.873,\n ry: 3.624,\n transform: \"rotate(-90 92.294 220.248)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint8_radial)\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 90.676,\n cy: 221.509,\n rx: 0.408,\n ry: 0.334,\n transform: \"rotate(-90 90.676 221.509)\",\n fill: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#rightbanner_svg__rightbanner_svg__filter1_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 274.749,\n y: 318.474,\n width: 143.516,\n height: 142.275,\n rx: 11.211,\n transform: \"rotate(180 274.749 318.474)\",\n fill: \"#FFF3F4\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 90.228,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 251.072 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint9_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 63.975,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 237.905 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint10_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 80.841,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 224.738 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint11_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 46.381,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 182.138 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint12_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 46.381,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 168.972 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint13_linear)\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n rx: 9.31,\n ry: 8.768,\n transform: \"matrix(0 -1 -1 0 199.472 282.499)\",\n fill: \"#FFA38A\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n rx: 9.31,\n ry: 8.768,\n transform: \"matrix(0 -1 -1 0 199.472 256.909)\",\n fill: \"#FFA38A\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n rx: 9.31,\n ry: 8.768,\n transform: \"matrix(0 -1 -1 0 199.472 231.319)\",\n fill: \"#FFA38A\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.71,\n d: \"M65.976 197.134c0-5.526-4.267-10.006-9.531-10.006l-.057.001H52v-22.621C52 153.734 60.226 145 70.373 145h333.771c10.147 0 18.373 8.734 18.373 19.508v148.221c0 10.774-8.226 19.508-18.373 19.508H70.374c-10.148 0-18.374-8.734-18.374-19.508v-23.154h4.444c5.264 0 9.531-4.479 9.532-10.004v-82.437z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint14_linear)\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#rightbanner_svg__rightbanner_svg__filter2_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 485,\n y: 737.1,\n width: 423,\n height: 295.099,\n rx: 17,\n transform: \"rotate(-180 485 737.1)\",\n fill: \"#2D2236\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 78.958,\n cy: 457.498,\n rx: 4.377,\n ry: 4.006,\n fill: \"#FF4040\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 93.361,\n cy: 457.498,\n rx: 4.377,\n ry: 4.006,\n fill: \"#FFC635\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 107.764,\n cy: 457.498,\n rx: 4.377,\n ry: 4.006,\n fill: \"#5BFF40\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 484.851,\n width: 334.012,\n height: 10.312,\n rx: 5.156,\n fill: \"#4E3952\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 502.938,\n width: 218.747,\n height: 10.312,\n rx: 5.156,\n fill: \"#4E3952\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 557.197,\n width: 18.667,\n height: 10.312,\n rx: 5.156,\n fill: \"#4B78BB\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 112.14,\n y: 557.197,\n width: 165.457,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 575.283,\n width: 74.513,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 221.232,\n y: 575.283,\n width: 33.045,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 204.1,\n y: 575.283,\n width: 11.167,\n height: 10.312,\n rx: 5.156,\n fill: \"#FF4B6B\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 593.37,\n width: 55.127,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 611.456,\n width: 35.437,\n height: 10.312,\n rx: 5.156,\n fill: \"#4B78BB\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 165.969,\n y: 611.456,\n width: 115.219,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 628.721,\n width: 150.536,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 277.598,\n y: 646.799,\n width: 70.991,\n height: 10.312,\n rx: 5.156,\n fill: \"#D2D2D2\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 521.263,\n width: 44.183,\n height: 10.312,\n rx: 5.156,\n fill: \"#FF4B77\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 140.287,\n y: 521.263,\n width: 98.9,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 539.35,\n width: 44.183,\n height: 10.312,\n rx: 5.156,\n fill: \"#FF4B6B\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 140.287,\n y: 539.35,\n width: 62.282,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 650.095,\n width: 76.292,\n height: 10.312,\n rx: 5.156,\n fill: \"#D2D2D2\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint0_linear\",\n x1: 241.592,\n y1: 551.853,\n x2: 16.202,\n y2: 551.853,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint1_linear\",\n x1: 250.536,\n y1: 97.088,\n x2: 94.254,\n y2: 97.088,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint2_linear\",\n x1: 104.331,\n y1: 753.97,\n x2: 0.489,\n y2: 753.97,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint3_linear\",\n x1: 300.644,\n y1: 250.679,\n x2: 497.538,\n y2: 250.679,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint4_linear\",\n x1: 88.711,\n y1: 402.267,\n x2: 203.244,\n y2: 402.267,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint5_linear\",\n x1: 108.335,\n y1: 0,\n x2: 108.335,\n y2: 396.522,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FFA5C5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.094,\n stopColor: \"#ED6A91\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.839,\n stopColor: \"#BC3997\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C0229D\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint6_linear\",\n x1: 103.793,\n y1: 0,\n x2: 33.856,\n y2: 393.366,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#481330\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.297,\n stopColor: \"#8E285F\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#481330\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint7_linear\",\n x1: 93.825,\n y1: 0,\n x2: 93.825,\n y2: 371.336,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F3AEFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C1BBFE\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint9_linear\",\n x1: 0,\n y1: 3.966,\n x2: 93.83,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF67CC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF9178\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint10_linear\",\n x1: 0,\n y1: 3.966,\n x2: 66.529,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF67CC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF9178\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint11_linear\",\n x1: 0,\n y1: 3.966,\n x2: 84.068,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF67CC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF9178\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint12_linear\",\n x1: 0,\n y1: 3.966,\n x2: 48.232,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF878A\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#D090E4\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint13_linear\",\n x1: 0,\n y1: 3.966,\n x2: 48.232,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF878A\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#D090E4\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint14_linear\",\n x1: 52.001,\n y1: 238.619,\n x2: 422.517,\n y2: 238.619,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#FDA6FF\",\n stopOpacity: 0.13\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.25,\n stopColor: \"#ECE3FF\",\n stopOpacity: 0.46\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#AFBCFF\",\n stopOpacity: 0.47\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"rightbanner_svg__rightbanner_svg__filter0_d\",\n x: 28.67,\n y: 115.67,\n width: 467.669,\n height: 263.329,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n \"in\": \"SourceAlpha\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", null), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 11.665\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0.154715 0 0 0 0 0.0969792 0 0 0 0 0.175 0 0 0 0.43 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n \"in\": \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"rightbanner_svg__rightbanner_svg__filter1_d\",\n x: 113.645,\n y: 167.954,\n width: 178.69,\n height: 177.449,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n \"in\": \"SourceAlpha\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 9.343\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 8.793\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0.254133 0 0 0 0 0.11 0 0 0 0 0.266667 0 0 0 0.24 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n \"in\": \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"rightbanner_svg__rightbanner_svg__filter2_d\",\n x: 15,\n y: 435,\n width: 481,\n height: 353.1,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n \"in\": \"SourceAlpha\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dx: -18,\n dy: 22\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 14.5\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0.183333 0 0 0 0 0.0863195 0 0 0 0 0.127065 0 0 0 0.42 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n \"in\": \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint8_radial\",\n cx: 0,\n cy: 0,\n r: 1,\n gradientUnits: \"userSpaceOnUse\",\n gradientTransform: \"matrix(1.38995 3.62382 -3.81126 1.46185 90.904 220.248)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\",\n stopOpacity: 0.31\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\",\n stopOpacity: 0\n })))));\n}\n\nexport default __webpack_public_path__ + \"static/rightbanner-6b7316feac0926c26187df4f67a8cf83.svg\";\nexport { SvgRightbanner as ReactComponent };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\n\nimport leftBanner from './leftbanner.svg';\nimport rightBanner from './rightbanner.svg';\nimport wordmark from '../../images/logo-wordmark-gradient.svg';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tbackgroundColor: '#FADDFF'\n\t},\n\tcontent: {\n\t\tdisplay: 'flex',\n\t\tposition: 'relative',\n\t\talignItems: 'center',\n\t\tmargin: 'auto',\n\t\toverflow: 'unset',\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tmaxWidth: '370px'\n\t\t}\n\t},\n\tleftBanner: {\n\t\twidth: 310,\n\t\t[theme.breakpoints.down('sm')]: {\n\t\t\twidth: 240\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: 180\n\t\t}\n\t},\n\twordmark: {\n\t\twidth: 310,\n\t\toverflow: 'auto',\n\t\t[theme.breakpoints.down('sm')]: {\n\t\t\twidth: 240\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: 180,\n\t\t\tdisplay: 'block'\n\t\t}\n\t},\n\trightBanner: {\n\t\twidth: 310,\n\t\t[theme.breakpoints.down('sm')]: {\n\t\t\twidth: 240\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: 180,\n\t\t\tdisplay: 'none'\n\t\t}\n\t}\n});\n\nfunction LeftBanner({ classes }) {\n\treturn (\n\t\t\n\t);\n}\n\nLeftBanner.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nfunction RightBanner({ classes }) {\n\treturn (\n\t\t\n\t);\n}\n\nRightBanner.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nfunction Wordmark({ classes }) {\n\treturn (\n\t\t\n\t);\n}\n\nWordmark.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nfunction Banner({ classes }) {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\n\t);\n}\n\nBanner.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(Banner);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Typography } from '@material-ui/core';\n\nimport { StaticImage } from 'gatsby-plugin-image';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tbackgroundColor: '#ffffff',\n\t\tpadding: theme.spacing(2, 0)\n\t},\n\tcontent: {\n\t\tdisplay: 'flex',\n\t\tjustifyContent: 'space-between',\n\t\tflexDirection: 'row-reverse',\n\t\talignItems: 'center'\n\t},\n\tdescription: {\n\t\ttextAlign: 'justify',\n\t\tflexBasis: '80%',\n\t\tflexGrow: 1\n\t},\n\ttitle: {\n\t\tfontFamily: theme.typography.fontFamily,\n\t\tfontWeight: 'bold',\n\t\tmargin: theme.spacing(2, 0)\n\t},\n\tlogo: {\n\t\tflexBasis: '15%',\n\t\tmarginLeft: theme.spacing(8),\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tdisplay: 'none'\n\t\t}\n\t}\n});\n\nconst hackDescription = `We are a student-run organization whose mission is to\nempower the community by providing the means to build amazing things and explore\nwhat is possible through code. We teach quarterly workshops and host events for\nstudents to expand their knowledge and apply their creativity to projects. Our\nevents are for coders of all skills levels, so whether you've been to 10 hackathons\n or you just learned \"Hello World,\" we're happy to have you.`;\n\nclass HackDescription extends React.Component {\n\trender() {\n\t\tconst { classes } = this.props;\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tWhat is Hack?\n\t\t\t\t\t\n\t\t\t\t\t{hackDescription}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n}\n\nHackDescription.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(HackDescription);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport LinkNoStyle from '../LinkNoStyle/LinkNoStyle';\n\nimport { Card, CardActionArea, CardContent, Typography } from '@material-ui/core';\n\nconst styles = theme => ({\n\tcard: {\n\t\theight: '100%'\n\t},\n\tlink: {\n\t\theight: 'inherit'\n\t},\n\tcardActionArea: {\n\t\theight: 'inherit'\n\t},\n\ttitle: {\n\t\tcolor: '#000000',\n\t\tfontFamily: ['Poppins', 'sans-serif'],\n\t\tfontSize: theme.typography.fontSize * 1.3,\n\t\tlineHeight: 1.2,\n\t\tfontWeight: 600\n\t},\n\tsubtitle: {\n\t\tcolor: '#000000',\n\t\tfontFamily: ['Poppins', 'sans-serif'],\n\t\tfontSize: theme.typography.fontSize * 0.9,\n\t\tlineHeight: 1.3\n\t},\n\texcerpt: {\n\t\tfontSize: theme.typography.fontSize * 0.9,\n\t\tcolor: '#0000008A'\n\t},\n\tinfo: {\n\t\tfontSize: theme.typography.fontSize * 0.9,\n\t\tcolor: '#0000008A',\n\t\tpadding: theme.spacing(1, 0, 0)\n\t}\n});\n\nfunction BlogListItem({ post, classes }) {\n\tconst { frontmatter, fields } = post;\n\treturn (\n\t\t/*\n\t\t\tTODO:\n\t\t\t\t- Remove shadow over button\n\t\t*/\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{frontmatter.title}\n\t\t\t\t\t\t{frontmatter.subtitle}\n\t\t\t\t\t\t{post.excerpt}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{frontmatter.date} | {post.timeToRead} min read\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nBlogListItem.propTypes = {\n\tpost: PropTypes.object.isRequired,\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(BlogListItem);\n\n\n","import { graphql, useStaticQuery } from 'gatsby';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport BlogListItem from './BlogListItem';\n\nconst styles = {\n\tlistItem: {\n\t\toverflowWrap: 'break-word'\n\t}\n};\n\nfunction BlogList({ classes }) {\n\tconst data = useStaticQuery(graphql`\n\t\tquery BlogListInfo {\n\t\t\tallMarkdownRemark(sort: {order: DESC, fields: frontmatter___date}, limit: 4) {\n\t\t\t\tnodes {\n\t\t\t\t\texcerpt(pruneLength: 120)\n\t\t\t\t\ttimeToRead\n\t\t\t\t\tfrontmatter {\n\t\t\t\t\t\tdate(formatString: \"MMMM D, YYYY\")\n\t\t\t\t\t\tsubtitle\n\t\t\t\t\t\ttitle\n\t\t\t\t\t}\n\t\t\t\t\tfields {\n\t\t\t\t\t\tslug\n\t\t\t\t\t}\n\t\t\t\t\tid\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`);\n\n\treturn \n\t\t{data.allMarkdownRemark.nodes.map(post =>\n\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t;\n}\n\nBlogList.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(BlogList);\n","import React from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\n\nimport EventCard from '../EventCard/EventCard';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tmarginLeft: theme.spacing(-2),\n\t\tmarginRight: theme.spacing(-2),\n\t\toverflowX: 'auto',\n\t\t// This enables momentum scrolling on iOS.\n\t\t// Read more about it in this link:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling\n\t\t'-webkit-overflow-scrolling': 'touch'\n\t},\n\titem: {\n\t\tposition: 'relative',\n\t\twidth: '260px',\n\t\theight: '420px',\n\t\tmargin: theme.spacing(2),\n\t\t// no grow and no shrink, meaning the component will stay the same width\n\t\tflex: '0 0 auto'\n\t}\n});\n\nfunction ScrollableEvents({\n\tclasses,\n\tevents\n}) {\n\tconst eventCards = events.map(e =>\n\t\t\n\t\t\t\n\t\t);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{eventCards}\n\t\t\t\n\t\t
\n\t);\n}\n\nScrollableEvents.propTypes = {\n\tclasses: PropTypes.object.isRequired,\n\tevents: PropTypes.arrayOf(Object).isRequired\n};\n\nexport default withStyles(styles)(ScrollableEvents);\n","import { graphql, useStaticQuery } from 'gatsby';\nimport React from 'react';\n\nimport EmptyEventMessage from '../EmptyEventMessage/EmptyEventMessage';\nimport ScrollableEvents from '../ScrollableEvents/ScrollableEvents';\n\nfunction EventList() {\n\tconst data = useStaticQuery(graphql`\n\t\t{\n\t\t\tupcomingEvents: allHackEvent(sort: {fields: date}, filter: {past: {eq: false}}, limit: 3) {\n\t\t\t\tnodes {\n\t\t\t\t\t...HackEventForEventGrid\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`);\n\tconst topEvents = data.upcomingEvents.nodes;\n\treturn topEvents.length === 0 ?\n\t\t :\n\t\t;\n}\n\nexport default EventList;\n","import { graphql, useStaticQuery } from 'gatsby';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { GatsbyImage } from 'gatsby-plugin-image';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\nimport './gallery.css';\n\nconst styles = theme => ({\n\tcarouselImage: {\n\t\theight: '400px',\n\t\tposition: 'center',\n\t\tdisplay: 'block',\n\t\tmarginRight: 'auto',\n\t\tmarginLeft: 'auto',\n\t\tborderRadius: theme.shape.borderRadius * 2,\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\theight: '300px'\n\t\t}\n\t},\n\tcarouselContainer: {\n\t\tposition: 'center'\n\t}\n});\n\nfunction PhotoCarousel({ classes }) {\n\tconst data = useStaticQuery(graphql`{\n carouselPhotos: allFile(filter: {relativePath: {glob: \"carousel/*\"}}) {\n nodes {\n id\n childImageSharp {\n gatsbyImageData(layout: FULL_WIDTH)\n }\n }\n }\n}\n`);\n\n\tconst settings = {\n\t\tdots: true,\n\t\tinfinite: true,\n\t\tspeed: 800,\n\t\tslidesToShow: 1,\n\t\tslidesToScroll: 1,\n\t\tclassName: 'slides'\n\t};\n\n\tconst images = data.carouselPhotos.nodes.map(node => {\n\t\treturn (\n\t\t\t\n\t\t);\n\t});\n\n\treturn (\n\t\t\n\t\t\t{images}\n\t\t\n\t);\n}\n\nPhotoCarousel.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(PhotoCarousel);\n\n\n","var _defs, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPigeon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 956.62 550.52\"\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient\",\n x1: 285,\n y1: 57.53,\n x2: 91.9,\n y2: 58.89,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#c137d8\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.3,\n stopColor: \"#c23bdc\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.64,\n stopColor: \"#c449e9\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.98,\n stopColor: \"#c95efe\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#c960ff\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-2\",\n x1: 340,\n y1: 92.53,\n x2: 146.9,\n y2: 93.89,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-3\",\n x1: 366.49,\n y1: 128.68,\n x2: 203.56,\n y2: 129.83,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-4\",\n x1: 369.09,\n y1: 164.87,\n x2: 243.04,\n y2: 165.76,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-5\",\n x1: 372.77,\n y1: 201.09,\n x2: 288.96,\n y2: 201.68,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-6\",\n x1: 399.34,\n y1: 42.05,\n x2: 217.85,\n y2: 43.33,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-7\",\n x1: 451.03,\n y1: 74.95,\n x2: 269.55,\n y2: 76.22,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-8\",\n x1: 475.93,\n y1: 108.93,\n x2: 322.8,\n y2: 110,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-9\",\n x1: 478.37,\n y1: 142.94,\n x2: 359.9,\n y2: 143.77,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-10\",\n x1: 481.83,\n y1: 176.98,\n x2: 403.06,\n y2: 177.53,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-11\",\n x1: 411.95,\n y1: 60.08,\n x2: 513.74,\n y2: 362.47,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.11,\n stopColor: \"#c960ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.36,\n stopColor: \"#c65dfc\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.59,\n stopColor: \"#be52f1\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.79,\n stopColor: \"#b041df\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#9c29c6\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#9c28c5\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-12\",\n x1: 385.16,\n y1: 393.65,\n x2: 385.16,\n y2: 257.65,\n gradientTransform: \"rotate(-12.37 472.643 400.108)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ff477e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#c137d8\"\n })), /*#__PURE__*/React.createElement(\"style\", null, \".pigeon_svg__pigeon_svg__cls-2{fill:#c137d8}\"))), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n isolation: \"isolate\"\n }\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"pigeon_svg__pigeon_svg__Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"pigeon_svg__pigeon_svg__Layer_5\",\n \"data-name\": \"Layer 5\"\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"pigeon_svg__pigeon_svg__cls-2\",\n d: \"M206 40.84c4.58 0 107.59-3 122.09 0s43.5 42.63 58 56.51 44.26 25.78 59.6 25.13c0 0 4.5 91.86-23.74 128.54 0 0-55-18.91-72.49-39.65L206 40.84\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 40.52h288v36H136.35c15.3 0-136.35 0-136.35-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 75.52h288v36H191.35c15.3 0-136.35 0-136.35-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-2)\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126 111.52h243v36H241.05c12.95 0-115.05 0-115.05-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-3)\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M183 147.52h188v36h-99c10 0-89 0-89-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-4)\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249 183.52h125v36h-65.82c6.64 0-59.18 0-59.18-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-5)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"pigeon_svg__pigeon_svg__cls-2\",\n d: \"M764.39 23.85c-4.27.53-100.72 9.53-113.9 14s-35.7 44.74-47.64 59.35-38.35 29.11-52.74 30.25c0 0 6.31 86.21 36.85 117.21 0 0 49.18-23.94 63.09-45.29L764.39 23.85\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M956.53 0L687.85 32.93 692 66.51l141.44-17.34C819.17 50.92 960.64 33.58 956.53 0z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-6)\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M909.22 38.94L640.55 71.87l4.11 33.58 141.47-17.34c-14.26 1.75 127.21-15.59 123.09-49.17z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-7)\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M847.1 80.64l-226.69 27.78 4.11 33.58 119.37-14.63c-12.04 1.48 107.33-13.14 103.21-46.73z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-8)\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M798 120.74l-175.38 21.5 4.11 33.58 92.35-11.32c-9.27 1.14 83.08-10.17 78.92-43.76z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-9)\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M740.59 161.87L624 176.16l4.12 33.59 61.4-7.53c-6.22.78 55.18-6.76 51.07-40.35z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-10)\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M357.5 409c94.69 3.26 227.81-41 240.82-149.26C604 212.5 586.58 174.7 559.5 137c-32.68-45.47-42.43-70.8 23-81-31.08-6.21-27.2-53.81-67-54-42.74-.2-64 42.49-67.19 78.19-5.55 61.79-.91 127-33.81 170.81 0 0-30 32-55 33z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-11)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n width: 431,\n height: 361,\n transform: \"translate(161 189.52)\",\n xlinkHref: \"data:image/png;base64,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\",\n style: {\n mixBlendMode: \"multiply\"\n },\n opacity: 0.2\n }), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n transform: \"rotate(-12.37 376.606 370.094)\",\n fill: \"#9c28c5\",\n d: \"M238 277.52h277v185H238z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"pigeon_svg__pigeon_svg__cls-2\",\n d: \"M261.04 490.05l270.56-59.36-115.18-64.57-77.97 17.1-77.41 106.83z\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-12)\",\n d: \"M386.31 412.4L221.4 309.35l270.56-59.36L386.31 412.4z\"\n }))))));\n}\n\nexport default __webpack_public_path__ + \"static/pigeon-be8b99d597787fda8646b6c256d3bfb9.svg\";\nexport { SvgPigeon as ReactComponent };","import React from 'react';\nimport Pigeon from './pigeon.svg';\n\nfunction HackPigeon(props) {\n\treturn (\n\t\t
\n\t\t\t\"\"\n\t\t
\n\t);\n}\n\nexport default HackPigeon;\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles } from '@material-ui/core/styles';\nimport StayConnectedBtn from './StayConnectedBtn';\nimport HackPigeon from './HackPigeon';\n\nconst useStyles = makeStyles(theme => ({\n\tbanner: {\n\t\tpadding: theme.spacing(5, 0)\n\t},\n\tdescription: {\n\t\tmarginBottom: theme.spacing(2)\n\t},\n\tpigeonContainer: {\n\t\tposition: 'relative'\n\t},\n\tpigeon: {\n\t\tposition: 'absolute',\n\t\ttop: '50%',\n\t\tleft: '50%',\n\t\ttransform: 'translate(-40%, -50%)',\n\t\twidth: '100%'\n\t},\n\tjoinButton: {\n\t\tmarginBottom: theme.spacing(5)\n\t}\n}));\n\nconst discordDescription = 'Join the ACM Hack Discord to get live announcements about upcoming events';\nconst discordLink = 'https://discord.gg/3GSPECbCnE';\nconst discordBtnText = 'Join The ACM Hack Discord';\n\nfunction StayConnectedBanner() {\n\tconst classes = useStyles();\n\treturn (\n\t\t
\n\t\t\tStay Connected\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{discordDescription}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default StayConnectedBanner;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport Box from '@material-ui/core/Box';\nimport Container from '@material-ui/core/Container';\nimport Link from '@material-ui/core/Link';\nimport Typography from '@material-ui/core/Typography';\nimport MuiAccordion from '@material-ui/core/Accordion';\nimport MuiAccordionSummary from '@material-ui/core/AccordionSummary';\nimport MuiAccordionDetails from '@material-ui/core/AccordionDetails';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Add from '@material-ui/icons/Add';\nimport Remove from '@material-ui/icons/Remove';\n\n\nconst Accordion = withStyles(theme => ({\n\troot: {\n\t\tbackgroundColor: theme.palette.grey[50],\n\t\tboxShadow: 'none',\n\t\tborderColor: theme.palette.grey[400],\n\t\tborderTopWidth: 2,\n\t\tborderTopStyle: 'solid',\n\t\t'&:last-child': {\n\t\t\tborderBottomWidth: 2,\n\t\t\tborderBottomStyle: 'solid'\n\t\t},\n\t\t'&::before': {\n\t\t\tdisplay: 'none'\n\t\t},\n\t\t'&$expanded': {\n\t\t\tmargin: 0\n\t\t}\n\t},\n\texpanded: {}\n}))(MuiAccordion);\n\nconst AccordionSummary = withStyles(theme => ({\n\troot: {\n\t\tminHeight: 'auto',\n\t\t'&$expanded': {\n\t\t\tminHeight: 'auto'\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tpaddingLeft: theme.spacing(1),\n\t\t\tpaddingRight: theme.spacing(1)\n\t\t}\n\t},\n\tcontent: {\n\t\tmargin: '12px 0',\n\t\t'&$expanded': {\n\t\t\tmargin: '12px 0'\n\t\t}\n\t},\n\texpanded: {}\n}))(MuiAccordionSummary);\n\nconst AccordionDetails = withStyles(theme => ({\n\troot: {\n\t\tpaddingBottom: theme.spacing(6),\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tpaddingBottom: theme.spacing(4),\n\t\t\tpaddingLeft: theme.spacing(1),\n\t\t\tpaddingRight: theme.spacing(1)\n\t\t}\n\t}\n}))(MuiAccordionDetails);\n\nconst useStyles = makeStyles(theme => ({\n\tquestion: {\n\t\tfontWeight: theme.typography.fontWeightMedium,\n\t\tcolor: theme.palette.secondary.main,\n\t\tfontFamily: theme.typography.fontFamily\n\t}\n}));\n\nfunction AccordionQA({ index, question, answer }) {\n\tconst [expanded, setExpanded] = useState(false);\n\tconst classes = useStyles();\n\tconst panelName = 'faqPanel' + index;\n\tconst theme = useTheme();\n\n\treturn (\n\t\t setExpanded(e => !e)}>\n\t\t\t : }\n\t\t\t\taria-controls={panelName + '-content'}\n\t\t\t\tid={panelName + '-header'}>\n\t\t\t\t\n\t\t\t\t\t{question}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{answer}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nAccordionQA.propTypes = {\n\tquestion: PropTypes.node.isRequired,\n\tanswer: PropTypes.node.isRequired,\n\tindex: PropTypes.number.isRequired\n};\n\nfunction FAQSection() {\n\tconst faqs = [\n\t\t{\n\t\t\tquestion: `Where do I find the ACM YouTube channel?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tWe post all recordings of our workshops on the ACM YouTube channel, which can be found here!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `How do I participate?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tWe recommend attending some of our events or asking us questions in\n\t\t\t\t\tthe ACM Hack Discord. Check\n\t\t\t\t\tout the events page for more information about the events we're holding this quarter.\n\t\t\t\t\tEveryone is welcome!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `Your past workshops seem interesting, how can I learn more?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tCheck out the archive page, where\n\t\t\t\t\twe keep a record of all of our past workshops!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `How do I join your team?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tWe start recruitment for internship positions every\n\t\t\t\t\tfall, following the ACM general meeting (which you should attend)!\n\t\t\t\t\tAfter a quarter of shadowing officers, interns\n\t\t\t\t\tmay have the opportunity to become full-time officers.\n\t\t\t\t\tAll of our current officers started as interns and we\n\t\t\t\t\thighly encourage you to look out for applications in the fall!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `I have some other questions.`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tSend us an email at hack@uclaacm.com or\n\t\t\t\t\tmessage us through the ACM Hack Discord!\n\t\t\t\t\n\t\t}\n\t];\n\n\tconst theme = useTheme();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFAQ\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFrequently Asked Questions\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{faqs.map((faq, i) => )}\n\t\t\t\n\t\t\n\t);\n}\n\nexport default FAQSection;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Container, Typography } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport TalkBubbleIcon from '@material-ui/icons/ModeCommentTwoTone';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForwardIos';\nimport EventAvailableIcon from '@material-ui/icons/EventAvailableTwoTone';\n\nimport LinkNoStyle from '../LinkNoStyle/LinkNoStyle';\nimport Announcement from './Announcement';\nimport Banner from './Banner';\nimport HackDescription from './HackDescription';\nimport BlogList from './BlogList';\nimport EventList from './EventList';\nimport Carousel from './Carousel';\nimport StayConnectedBanner from './StayConnectedBanner';\nimport FAQSection from './FAQSection';\n\nconst styles = theme => ({\n\theading: {\n\t\tmargin: theme.spacing(4, 0, 0, 0),\n\t\tfontFamily: theme.typography.fontFamily,\n\t\tfontWeight: 'bold',\n\t\t// align icon with text\n\t\tdisplay: 'flex',\n\t\talignItems: 'center'\n\t},\n\theadingIcon: {\n\t\tmarginRight: theme.spacing(1),\n\t\tfontSize: 'inherit'\n\t},\n\tforwardArrow: {\n\t\tmarginLeft: theme.spacing(1),\n\t\tfontSize: theme.typography.fontSize * 0.75\n\t},\n\tviewAllBtn: {\n\t\tmargin: theme.spacing(2, 0)\n\t},\n\twhiteContainer: {\n\t\tpadding: theme.spacing(2, 0),\n\t\toverflow: 'hidden',\n\t\tbackgroundColor: '#ffffff'\n\t},\n\ttransparentContainer: {\n\t\tpadding: theme.spacing(2, 0),\n\t\toverflow: 'hidden'\n\t}\n});\n\nfunction HomePageComponent({ classes }) {\n\tconst IconHeading = ({ Icon, children }) =>\n\t\t\n\t\t\t\n\t\t\t{children}\n\t\t;\n\tIconHeading.propTypes = {\n\t\tIcon: PropTypes.elementType.isRequired,\n\t\tchildren: PropTypes.node\n\t};\n\n\tconst ViewAllButton = ({ to, children }) =>\n\t\t\n\t\t\t\n\t\t;\n\tViewAllButton.propTypes = {\n\t\tto: PropTypes.string.isRequired,\n\t\tchildren: PropTypes.node\n\t};\n\n\tconst Container1 = props =>\n\t\t
\n\t\t\t\n\t\t
;\n\n\tconst Container2 = props =>\n\t\t
\n\t\t\t\n\t\t
;\n\n\treturn \n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\n\t\t\n\t\t\tEvents\n\t\t\tView all events\n\t\t\t\n\t\t\n\n\t\t\n\t\t\tBlog posts\n\t\t\tView all blog posts\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\n\n\t;\n}\n\nHomePageComponent.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(HomePageComponent);\n","import React from 'react';\n\nimport HeadFooter from '../components/HeadFooter/HeadFooter';\nimport HomePageComponent from '../components/HomePage/HomePage';\nimport SEO from '../components/SEO';\n\nfunction HomePage() {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default HomePage;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;"],"names":["Object","defineProperty","exports","value","_default","A100","A200","A400","A700","black","white","CardActionArea","props","ref","children","classes","className","focusVisibleClassName","other","root","focusVisible","focusHighlight","theme","display","textAlign","width","opacity","palette","action","hoverOpacity","overflow","pointerEvents","position","top","right","bottom","left","borderRadius","backgroundColor","transition","transitions","create","duration","short","name","hexToRgb","rgbToHex","color","indexOf","values","decomposeColor","concat","map","n","hex","toString","length","join","hslToRgb","recomposeColor","getContrastRatio","foreground","background","lumA","getLuminance","lumB","Math","max","min","emphasize","coefficient","arguments","undefined","darken","lighten","fade","alpha","_utils","clamp","substr","re","RegExp","colors","match","index","parseInt","round","h","s","l","a","f","k","type","rgb","push","charAt","marker","substring","Error","formatMuiErrorMessage","split","parseFloat","i","val","pow","Number","toFixed","_interopRequireDefault","breakpoints","_breakpoints$values","xs","sm","md","lg","xl","_breakpoints$unit","unit","_breakpoints$step","step","_objectWithoutProperties2","default","up","key","between","start","end","endIndex","keys","_extends2","down","upperbound","only","spacing","mixins","_toolbar","_extends3","gutters","styles","console","warn","paddingLeft","paddingRight","_defineProperty2","toolbar","minHeight","_palette$primary","primary","light","_indigo","main","dark","_palette$secondary","secondary","_pink","_palette$error","error","_red","_palette$warning","warning","_orange","_palette$info","info","_blue","_palette$success","success","_green","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","tonalOffset","getContrastText","_colorManipulator","text","augmentColor","mainShade","lightShade","darkShade","_formatMuiErrorMessage","JSON","stringify","addLightOrDark","contrastText","types","deepmerge","common","_common","grey","_grey","disabled","hint","divider","paper","active","hover","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","icon","intent","direction","shade","tonalOffsetLight","tonalOffsetDark","hasOwnProperty","spacingInput","mui","transform","_system","createUnarySpacing","_len","args","Array","_key","argument","output","get","createMuiTheme","createTheme","apply","_createBreakpoints","_createMixins","_createPalette","_createTypography","_shadows","_shape","_createSpacing","_transitions","_zIndex","options","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typography","typographyInput","muiTheme","overrides","shadows","shape","zIndex","reduce","acc","_ref","_ref$fontFamily","fontFamily","defaultFontFamily","_ref$fontSize","fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","pxToRem","coef","size","buildVariant","fontWeight","lineHeight","letterSpacing","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caseAllCaps","caption","overline","roundWithDeprecationWarning","clone","textTransform","_styles","_defaultTheme","stylesOrCreator","makeStyles","defaultTheme","createShadow","easing","easeInOut","easeOut","easeIn","sharp","shortest","shorter","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","_options$duration","durationOption","_options$easing","easingOption","_options$delay","delay","isArray","animatedProp","getAutoHeightDuration","height","constant","useTheme","mobileStepper","speedDial","appBar","drawer","modal","snackbar","tooltip","_interopRequireWildcard","React","createElement","d","Fragment","chainPropTypes","propType1","propType2","elementAcceptingRef","isRequired","exactProp","propTypes","fnNameMatchRegex","getFunctionName","fn","getFunctionComponentName","Component","fallback","displayName","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","$$typeof","ForwardRef","render","Memo","HTMLElementType","propName","componentName","location","propFullName","window","self","Function","b","c","e","g","m","p","q","r","u","v","w","Symbol","for","x","y","t","B","C","D","E","F","G","H","I","module","QueryHandler","each","MediaQuery","query","isUnconditional","this","handlers","mql","matchMedia","listener","currentTarget","assess","addListener","prototype","constuctor","addHandler","handler","qh","matches","on","removeHandler","equals","destroy","splice","clear","removeListener","Util","isFunction","MediaQueryDispatch","queries","browserIsIncapable","constructor","register","shouldDegrade","unregister","deferSetup","setup","initialised","off","unmatch","target","collection","camel2hyphen","obj2mq","obj","mq","features","forEach","feature","test","isDimension","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","now","Date","isObject","toNumber","isObjectLike","call","isSymbol","valueOf","replace","isBinary","slice","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","clearTimeout","flush","NextArrow","PrevArrow","_react","_classnames","_innerSliderUtils","__esModule","_typeof","iterator","_extends","assign","source","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","getPrototypeOf","_React$PureComponent","_super","preventDefault","clickHandler","prevClasses","prevHandler","bind","message","infinite","currentSlide","slideCount","slidesToShow","prevArrowProps","style","onClick","customProps","prevArrow","cloneElement","PureComponent","_React$PureComponent2","_super2","nextClasses","nextHandler","canGoNext","nextArrowProps","nextArrow","accessibility","adaptiveHeight","afterChange","appendDots","dots","arrows","autoplay","autoplaySpeed","beforeChange","centerMode","centerPadding","cssEase","customPaging","dotsClass","draggable","edgeFriction","focusOnSelect","initialSlide","lazyLoad","onEdge","onInit","onLazyLoadError","onReInit","pauseOnDotsHover","pauseOnFocus","pauseOnHover","responsive","rows","rtl","slide","slidesPerRow","slidesToScroll","speed","swipe","swipeEvent","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","waitForAnimate","Dots","spec","_this$props","onMouseEnter","onMouseOver","onMouseLeave","dotCount","ceil","mouseEvents","_rightBound","rightBound","_leftBound","leftBound","dotOptions","animating","autoplaying","currentDirection","currentLeft","dragging","edgeDragged","initialized","lazyLoadedList","listHeight","listWidth","scrolling","slideHeight","slideWidth","swipeLeft","swiped","swiping","touchObject","startX","startY","curX","curY","trackStyle","trackWidth","targetSlide","InnerSlider","_initialState","_lodash","_track","_dots","_arrows","_resizeObserverPolyfill","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_React$Component","_this","list","track","elem","querySelector","state","getHeight","slidesToLoad","getOnDemandLazySlides","setState","prevState","onLazyLoad","listRef","trackRef","updateState","adaptHeight","autoPlay","lazyLoadTimer","setInterval","progressiveLazyLoad","ro","onWindowResized","callbackTimers","observe","document","querySelectorAll","onfocus","onSlideFocus","onblur","onSlideBlur","addEventListener","attachEvent","animationEndCallback","clearInterval","timer","removeEventListener","detachEvent","autoplayTimer","disconnect","prevProps","checkImagesLoad","setTrackStyle","didPropsChange","Children","count","changeSlide","pause","debouncedResize","resizeWindow","isTrackMounted","Boolean","node","callback","updatedState","initializedState","slideIndex","targetLeft","getTrackLeft","getTrackCSS","_trackWidth","_trackLeft","childrenWidths","preClones","getPreClones","postClones","getPostClones","child","_i","_i2","_trackStyle","currentWidth","childrenCount","trackLeft","images","imagesCount","loadedCount","image","onclick","prevClickHandler","parentNode","onload","onerror","_index","dontAnimate","asNavFor","_slideHandler","slideHandler","nextState","asNavForIndex","innerSlider","firstBatch","nodes","clickable","stopPropagation","dir","keyHandler","ontouchmove","event","returnValue","verticalSwiping","disableBodyScroll","swipeStart","swipeMove","swipeEnd","triggerSlideHandler","enableBodyScroll","isNaN","nextIndex","playType","play","pauseType","trackProps","extractObject","onTrackOver","onTrackLeave","selectHandler","dotProps","onDotsLeave","onDotsOver","arrowProps","verticalHeightStyle","centerPaddingStyle","padding","listStyle","listProps","onMouseDown","onMouseMove","onMouseUp","onTouchStart","onTouchMove","onTouchEnd","touchEnd","onTouchCancel","onKeyDown","innerSliderProps","unslick","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","_innerSlider","_json2mq","_defaultProps","enquire","canUseDOM","Slider","slickPrev","slickNext","slickGoTo","breakpoint","_responsiveMediaHandlers","_this2","breakpt","sort","bQuery","minWidth","maxWidth","media","settings","newProps","_this3","resp","toArray","trim","newChildren","newSlide","j","row","tabIndex","innerSliderRefHandler","getSlideClasses","slickActive","slickCenter","slickCloned","centerOffset","floor","getKey","fallbackKey","renderSlides","slides","preCloneSlides","postCloneSlides","startIndex","lazyStartIndex","lazyEndIndex","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","outline","preCloneNo","reverse","handleRef","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getTrackAnimateCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","getSwipeDirection","getWidth","lazySlidesOnRight","lazySlidesOnLeft","getRequiredLazySlides","safePreventDefault","number","lowerBound","upperBound","includes","_reactName","onDemandSlides","requiredSlides","offsetWidth","offsetHeight","xDist","yDist","swipeAngle","atan2","PI","abs","canGo","newObject","listNode","trackNode","centerPaddingAdj","finalSlide","animationLeft","finalLeft","animationSlide","indexOffset","previousInt","slideOffset","previousTargetSlide","tagName","keyCode","touches","pageX","clientX","pageY","clientY","curLeft","swipeLength","sqrt","verticalSwipeLength","positionOffset","swipeDirection","touchSwipeLength","onSwipe","minSwipe","activeSlide","counter","indexes","navigables","prevNavigable","swipedSlide","slickList","from","every","offsetTop","offsetLeft","currentIndex","dataset","keysArray","trackHeight","trackChildren","WebkitTransition","WebkitTransform","msTransform","marginTop","marginLeft","slidesToOffset","targetSlideIndex","trackElem","childNodes","_ref2","hasOwn","classNames","arg","argType","inner","MapShim","Map","getIndex","arr","some","entry","class_1","__entries__","set","delete","entries","has","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","WeakMap","ResizeObserver","method","str","toLowerCase","withStyles","container","justifyContent","card","borderColor","boxShadow","animation","backgroundSize","backgroundPosition","content","paddingTop","paddingBottom","forwardArrow","grid","alignItems","item","url","useStaticQuery","allMarkdownRemark","fields","slug","Grid","Card","variant","LinkNoStyle","to","CardContent","Typography","LeftBanner","leftBanner","src","RightBanner","rightBanner","Wordmark","wordmark","margin","Container","HackDescription","S","logo","placeholder","quality","alt","description","title","flexDirection","flexBasis","flexGrow","link","cardActionArea","subtitle","excerpt","post","frontmatter","date","timeToRead","listItem","overflowWrap","data","id","marginRight","overflowX","flex","eventCards","events","EventCard","wrap","gridList","topEvents","upcomingEvents","EmptyEventMessage","carouselImage","carouselContainer","carouselPhotos","childImageSharp","gatsbyImageData","Pigeon","useStyles","banner","marginBottom","pigeonContainer","pigeon","joinButton","paragraph","StayConnectedBtn","Accordion","borderTopWidth","borderTopStyle","borderBottomWidth","borderBottomStyle","expanded","MuiAccordion","AccordionSummary","MuiAccordionSummary","AccordionDetails","MuiAccordionDetails","question","AccordionQA","answer","useState","setExpanded","panelName","square","onChange","expandIcon","Remove","Add","faqs","Link","href","Box","component","paddingY","bgcolor","faq","heading","headingIcon","viewAllBtn","whiteContainer","transparentContainer","IconHeading","Icon","ViewAllButton","Button","Container1","Container2","EventAvailableIcon","TalkBubbleIcon","Carousel","HeadFooter","SEO","HomePage","objectWithoutPropertiesLoose"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"component---src-pages-index-js-2854e1544b1f257b833f.js","mappings":"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","sources":["webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/blue.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/common.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/green.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/grey.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/indigo.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/orange.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/pink.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/colors/red.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/esm/CardActionArea/CardActionArea.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/colorManipulator.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createBreakpoints.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createMixins.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createPalette.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createSpacing.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createTheme.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/createTypography.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/defaultTheme.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/makeStyles.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/shadows.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/shape.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/transitions.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/useTheme.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/core/styles/zIndex.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/icons/ArrowForwardIos.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/icons/ModeCommentTwoTone.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/chainPropTypes.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/elementAcceptingRef.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/elementTypeAcceptingRef.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/exactProp.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/getDisplayName.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/HTMLElementType.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/ponyfillGlobal.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/esm/refType.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/node_modules/react-is/cjs/react-is.production.min.js","webpack://hack.uclaacm.com/./node_modules/@material-ui/utils/node_modules/react-is/index.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/MediaQuery.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/MediaQueryDispatch.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/QueryHandler.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/Util.js","webpack://hack.uclaacm.com/./node_modules/enquire.js/src/index.js","webpack://hack.uclaacm.com/./node_modules/json2mq/index.js","webpack://hack.uclaacm.com/./node_modules/lodash.debounce/index.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/arrows.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/default-props.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/dots.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/index.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/initial-state.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/inner-slider.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/slider.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/track.js","webpack://hack.uclaacm.com/./node_modules/react-slick/lib/utils/innerSliderUtils.js","webpack://hack.uclaacm.com/./node_modules/react-slick/node_modules/classnames/index.js","webpack://hack.uclaacm.com/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://hack.uclaacm.com/./node_modules/string-convert/camel2hyphen.js","webpack://hack.uclaacm.com/./src/components/HomePage/Announcement.js","webpack://hack.uclaacm.com/./src/components/HomePage/rightbanner.svg","webpack://hack.uclaacm.com/./src/components/HomePage/Banner.js","webpack://hack.uclaacm.com/./src/components/HomePage/HackDescription.js","webpack://hack.uclaacm.com/./src/components/HomePage/BlogListItem.js","webpack://hack.uclaacm.com/./src/components/HomePage/BlogList.js","webpack://hack.uclaacm.com/./src/components/ScrollableEvents/ScrollableEvents.js","webpack://hack.uclaacm.com/./src/components/HomePage/EventList.js","webpack://hack.uclaacm.com/./src/components/HomePage/Carousel.js","webpack://hack.uclaacm.com/./src/components/HomePage/pigeon.svg","webpack://hack.uclaacm.com/./src/components/HomePage/HackPigeon.js","webpack://hack.uclaacm.com/./src/components/HomePage/StayConnectedBanner.js","webpack://hack.uclaacm.com/./src/components/HomePage/FAQSection.js","webpack://hack.uclaacm.com/./src/components/HomePage/HomePage.js","webpack://hack.uclaacm.com/./src/pages/index.js","webpack://hack.uclaacm.com/./node_modules/gatsby/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://hack.uclaacm.com/./node_modules/gatsby/node_modules/@babel/runtime/helpers/objectWithoutProperties.js"],"sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nvar _default = blue;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar common = {\n black: '#000',\n white: '#fff'\n};\nvar _default = common;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nvar _default = green;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#d5d5d5',\n A200: '#aaaaaa',\n A400: '#303030',\n A700: '#616161'\n};\nvar _default = grey;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar indigo = {\n 50: '#e8eaf6',\n 100: '#c5cae9',\n 200: '#9fa8da',\n 300: '#7986cb',\n 400: '#5c6bc0',\n 500: '#3f51b5',\n 600: '#3949ab',\n 700: '#303f9f',\n 800: '#283593',\n 900: '#1a237e',\n A100: '#8c9eff',\n A200: '#536dfe',\n A400: '#3d5afe',\n A700: '#304ffe'\n};\nvar _default = indigo;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nvar _default = orange;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar pink = {\n 50: '#fce4ec',\n 100: '#f8bbd0',\n 200: '#f48fb1',\n 300: '#f06292',\n 400: '#ec407a',\n 500: '#e91e63',\n 600: '#d81b60',\n 700: '#c2185b',\n 800: '#ad1457',\n 900: '#880e4f',\n A100: '#ff80ab',\n A200: '#ff4081',\n A400: '#f50057',\n A700: '#c51162'\n};\nvar _default = pink;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nvar _default = red;\nexports.default = _default;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n display: 'block',\n textAlign: 'inherit',\n width: '100%',\n '&:hover $focusHighlight': {\n opacity: theme.palette.action.hoverOpacity\n },\n '&$focusVisible $focusHighlight': {\n opacity: 0.12\n }\n },\n\n /* Pseudo-class applied to the ButtonBase root element if the action area is keyboard focused. */\n focusVisible: {},\n\n /* Styles applied to the overlay that covers the action area when it is keyboard focused. */\n focusHighlight: {\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit',\n opacity: 0,\n backgroundColor: 'currentcolor',\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.short\n })\n }\n };\n};\nvar CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(props, ref) {\n var children = props.children,\n classes = props.classes,\n className = props.className,\n focusVisibleClassName = props.focusVisibleClassName,\n other = _objectWithoutProperties(props, [\"children\", \"classes\", \"className\", \"focusVisibleClassName\"]);\n\n return /*#__PURE__*/React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(focusVisibleClassName, classes.focusVisible),\n ref: ref\n }, other), children, /*#__PURE__*/React.createElement(\"span\", {\n className: classes.focusHighlight\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? void 0 : void 0;\nexport default withStyles(styles, {\n name: 'MuiCardActionArea'\n})(CardActionArea);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hexToRgb = hexToRgb;\nexports.rgbToHex = rgbToHex;\nexports.hslToRgb = hslToRgb;\nexports.decomposeColor = decomposeColor;\nexports.recomposeColor = recomposeColor;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.emphasize = emphasize;\nexports.fade = fade;\nexports.alpha = alpha;\nexports.darken = darken;\nexports.lighten = lighten;\n\nvar _utils = require(\"@material-ui/utils\");\n/* eslint-disable no-use-before-define */\n\n/**\n * Returns a number whose value is limited to the given range.\n *\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\n\n\nfunction clamp(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(\"Material-UI: The value provided \".concat(value, \" is out of range [\").concat(min, \", \").concat(max, \"].\"));\n }\n }\n\n return Math.min(Math.max(min, value), max);\n}\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n *\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\n\n\nfunction hexToRgb(color) {\n color = color.substr(1);\n var re = new RegExp(\".{1,\".concat(color.length >= 6 ? 2 : 1, \"}\"), 'g');\n var colors = color.match(re);\n\n if (colors && colors[0].length === 1) {\n colors = colors.map(function (n) {\n return n + n;\n });\n }\n\n return colors ? \"rgb\".concat(colors.length === 4 ? 'a' : '', \"(\").concat(colors.map(function (n, index) {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', '), \")\") : '';\n}\n\nfunction intToHex(int) {\n var hex = int.toString(16);\n return hex.length === 1 ? \"0\".concat(hex) : hex;\n}\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n *\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\n\n\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n\n var _decomposeColor = decomposeColor(color),\n values = _decomposeColor.values;\n\n return \"#\".concat(values.map(function (n) {\n return intToHex(n);\n }).join(''));\n}\n/**\n * Converts a color from hsl format to rgb format.\n *\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\n\n\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n var _color = color,\n values = _color.values;\n var h = values[0];\n var s = values[1] / 100;\n var l = values[2] / 100;\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n var type = 'rgb';\n var rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n\n return recomposeColor({\n type: type,\n values: rgb\n });\n}\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\n\n\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n\n var marker = color.indexOf('(');\n var type = color.substring(0, marker);\n\n if (['rgb', 'rgba', 'hsl', 'hsla'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: Unsupported `\".concat(color, \"` color.\\nWe support the following formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla().\") : (0, _utils.formatMuiErrorMessage)(3, color));\n }\n\n var values = color.substring(marker + 1, color.length - 1).split(',');\n values = values.map(function (value) {\n return parseFloat(value);\n });\n return {\n type: type,\n values: values\n };\n}\n/**\n * Converts a color object with type and values to a string.\n *\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\n\n\nfunction recomposeColor(color) {\n var type = color.type;\n var values = color.values;\n\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map(function (n, i) {\n return i < 3 ? parseInt(n, 10) : n;\n });\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = \"\".concat(values[1], \"%\");\n values[2] = \"\".concat(values[2], \"%\");\n }\n\n return \"\".concat(type, \"(\").concat(values.join(', '), \")\");\n}\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\n\n\nfunction getContrastRatio(foreground, background) {\n var lumA = getLuminance(foreground);\n var lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\n\n\nfunction getLuminance(color) {\n color = decomposeColor(color);\n var rgb = color.type === 'hsl' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(function (val) {\n val /= 255; // normalized\n\n return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n }); // Truncate at 3 digits\n\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction emphasize(color) {\n var coefficient = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.15;\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\n\nvar warnedOnce = false;\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0 -1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n *\n * @deprecated\n * Use `import { alpha } from '@material-ui/core/styles'` instead.\n */\n\nfunction fade(color, value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: The `fade` color utility was renamed to `alpha` to better describe its functionality.', '', \"You should use `import { alpha } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return alpha(color, value);\n}\n/**\n * Set the absolute transparency of a color.\n * Any existing alpha value is overwritten.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} value - value to set the alpha channel to in the range 0-1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n\n color.values[3] = value;\n return recomposeColor(color);\n}\n/**\n * Darkens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n\n return recomposeColor(color);\n}\n/**\n * Lightens a color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\n\n\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (var i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n }\n\n return recomposeColor(color);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createBreakpoints;\nexports.keys = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\")); // Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\n\n\nvar keys = ['xs', 'sm', 'md', 'lg', 'xl']; // Keep in mind that @media is inclusive by the CSS specification.\n\nexports.keys = keys;\n\nfunction createBreakpoints(breakpoints) {\n var _breakpoints$values = breakpoints.values,\n values = _breakpoints$values === void 0 ? {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1920\n } : _breakpoints$values,\n _breakpoints$unit = breakpoints.unit,\n unit = _breakpoints$unit === void 0 ? 'px' : _breakpoints$unit,\n _breakpoints$step = breakpoints.step,\n step = _breakpoints$step === void 0 ? 5 : _breakpoints$step,\n other = (0, _objectWithoutProperties2.default)(breakpoints, [\"values\", \"unit\", \"step\"]);\n\n function up(key) {\n var value = typeof values[key] === 'number' ? values[key] : key;\n return \"@media (min-width:\".concat(value).concat(unit, \")\");\n }\n\n function down(key) {\n var endIndex = keys.indexOf(key) + 1;\n var upperbound = values[keys[endIndex]];\n\n if (endIndex === keys.length) {\n // xl down applies to all sizes\n return up('xs');\n }\n\n var value = typeof upperbound === 'number' && endIndex > 0 ? upperbound : key;\n return \"@media (max-width:\".concat(value - step / 100).concat(unit, \")\");\n }\n\n function between(start, end) {\n var endIndex = keys.indexOf(end);\n\n if (endIndex === keys.length - 1) {\n return up(start);\n }\n\n return \"@media (min-width:\".concat(typeof values[start] === 'number' ? values[start] : start).concat(unit, \") and \") + \"(max-width:\".concat((endIndex !== -1 && typeof values[keys[endIndex + 1]] === 'number' ? values[keys[endIndex + 1]] : end) - step / 100).concat(unit, \")\");\n }\n\n function only(key) {\n return between(key, key);\n }\n\n var warnedOnce = false;\n\n function width(key) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.warn([\"Material-UI: The `theme.breakpoints.width` utility is deprecated because it's redundant.\", 'Use the `theme.breakpoints.values` instead.'].join('\\n'));\n }\n }\n\n return values[key];\n }\n\n return (0, _extends2.default)({\n keys: keys,\n values: values,\n up: up,\n down: down,\n between: between,\n only: only,\n width: width\n }, other);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createMixins;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _extends3 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nfunction createMixins(breakpoints, spacing, mixins) {\n var _toolbar;\n\n return (0, _extends3.default)({\n gutters: function gutters() {\n var styles = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n console.warn(['Material-UI: theme.mixins.gutters() is deprecated.', 'You can use the source of the mixin directly:', \"\\n paddingLeft: theme.spacing(2),\\n paddingRight: theme.spacing(2),\\n [theme.breakpoints.up('sm')]: {\\n paddingLeft: theme.spacing(3),\\n paddingRight: theme.spacing(3),\\n },\\n \"].join('\\n'));\n return (0, _extends3.default)({\n paddingLeft: spacing(2),\n paddingRight: spacing(2)\n }, styles, (0, _defineProperty2.default)({}, breakpoints.up('sm'), (0, _extends3.default)({\n paddingLeft: spacing(3),\n paddingRight: spacing(3)\n }, styles[breakpoints.up('sm')])));\n },\n toolbar: (_toolbar = {\n minHeight: 56\n }, (0, _defineProperty2.default)(_toolbar, \"\".concat(breakpoints.up('xs'), \" and (orientation: landscape)\"), {\n minHeight: 48\n }), (0, _defineProperty2.default)(_toolbar, breakpoints.up('sm'), {\n minHeight: 64\n }), _toolbar)\n }, mixins);\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createPalette;\nexports.dark = exports.light = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _utils = require(\"@material-ui/utils\");\n\nvar _common = _interopRequireDefault(require(\"../colors/common\"));\n\nvar _grey = _interopRequireDefault(require(\"../colors/grey\"));\n\nvar _indigo = _interopRequireDefault(require(\"../colors/indigo\"));\n\nvar _pink = _interopRequireDefault(require(\"../colors/pink\"));\n\nvar _red = _interopRequireDefault(require(\"../colors/red\"));\n\nvar _orange = _interopRequireDefault(require(\"../colors/orange\"));\n\nvar _blue = _interopRequireDefault(require(\"../colors/blue\"));\n\nvar _green = _interopRequireDefault(require(\"../colors/green\"));\n\nvar _colorManipulator = require(\"./colorManipulator\");\n\nvar light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.54)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)',\n // Text hints.\n hint: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: _common.default.white,\n default: _grey.default[50]\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexports.light = light;\nvar dark = {\n text: {\n primary: _common.default.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n hint: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: _grey.default[800],\n default: '#303030'\n },\n action: {\n active: _common.default.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nexports.dark = dark;\n\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n var tonalOffsetLight = tonalOffset.light || tonalOffset;\n var tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = (0, _colorManipulator.lighten)(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = (0, _colorManipulator.darken)(intent.main, tonalOffsetDark);\n }\n }\n}\n\nfunction createPalette(palette) {\n var _palette$primary = palette.primary,\n primary = _palette$primary === void 0 ? {\n light: _indigo.default[300],\n main: _indigo.default[500],\n dark: _indigo.default[700]\n } : _palette$primary,\n _palette$secondary = palette.secondary,\n secondary = _palette$secondary === void 0 ? {\n light: _pink.default.A200,\n main: _pink.default.A400,\n dark: _pink.default.A700\n } : _palette$secondary,\n _palette$error = palette.error,\n error = _palette$error === void 0 ? {\n light: _red.default[300],\n main: _red.default[500],\n dark: _red.default[700]\n } : _palette$error,\n _palette$warning = palette.warning,\n warning = _palette$warning === void 0 ? {\n light: _orange.default[300],\n main: _orange.default[500],\n dark: _orange.default[700]\n } : _palette$warning,\n _palette$info = palette.info,\n info = _palette$info === void 0 ? {\n light: _blue.default[300],\n main: _blue.default[500],\n dark: _blue.default[700]\n } : _palette$info,\n _palette$success = palette.success,\n success = _palette$success === void 0 ? {\n light: _green.default[300],\n main: _green.default[500],\n dark: _green.default[700]\n } : _palette$success,\n _palette$type = palette.type,\n type = _palette$type === void 0 ? 'light' : _palette$type,\n _palette$contrastThre = palette.contrastThreshold,\n contrastThreshold = _palette$contrastThre === void 0 ? 3 : _palette$contrastThre,\n _palette$tonalOffset = palette.tonalOffset,\n tonalOffset = _palette$tonalOffset === void 0 ? 0.2 : _palette$tonalOffset,\n other = (0, _objectWithoutProperties2.default)(palette, [\"primary\", \"secondary\", \"error\", \"warning\", \"info\", \"success\", \"type\", \"contrastThreshold\", \"tonalOffset\"]); // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n\n function getContrastText(background) {\n var contrastText = (0, _colorManipulator.getContrastRatio)(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n\n if (process.env.NODE_ENV !== 'production') {\n var contrast = (0, _colorManipulator.getContrastRatio)(background, contrastText);\n\n if (contrast < 3) {\n console.error([\"Material-UI: The contrast ratio of \".concat(contrast, \":1 for \").concat(contrastText, \" on \").concat(background), 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n\n return contrastText;\n }\n\n var augmentColor = function augmentColor(color) {\n var mainShade = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;\n var lightShade = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;\n var darkShade = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 700;\n color = (0, _extends2.default)({}, color);\n\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n\n if (!color.main) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\nThe color object needs to have a `main` property or a `\".concat(mainShade, \"` property.\") : (0, _utils.formatMuiErrorMessage)(4, mainShade));\n }\n\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? \"Material-UI: The color provided to augmentColor(color) is invalid.\\n`color.main` should be a string, but `\".concat(JSON.stringify(color.main), \"` was provided instead.\\n\\nDid you intend to use one of the following approaches?\\n\\nimport {\\xA0green } from \\\"@material-ui/core/colors\\\";\\n\\nconst theme1 = createTheme({ palette: {\\n primary: green,\\n} });\\n\\nconst theme2 = createTheme({ palette: {\\n primary: { main: green[500] },\\n} });\") : _formatMuiErrorMessage(5, JSON.stringify(color.main)));\n }\n\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n\n return color;\n };\n\n var types = {\n dark: dark,\n light: light\n };\n\n if (process.env.NODE_ENV !== 'production') {\n if (!types[type]) {\n console.error(\"Material-UI: The palette type `\".concat(type, \"` is not supported.\"));\n }\n }\n\n var paletteOutput = (0, _utils.deepmerge)((0, _extends2.default)({\n // A collection of common colors.\n common: _common.default,\n // The palette type, can be light or dark.\n type: type,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor(primary),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor(secondary, 'A400', 'A200', 'A700'),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor(error),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor(warning),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor(info),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor(success),\n // The grey colors.\n grey: _grey.default,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold: contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText: getContrastText,\n // Generate a rich color object.\n augmentColor: augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset: tonalOffset\n }, types[type]), other);\n return paletteOutput;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createSpacing;\n\nvar _system = require(\"@material-ui/system\");\n\nvar warnOnce;\n\nfunction createSpacing() {\n var spacingInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8; // Already transformed.\n\n if (spacingInput.mui) {\n return spacingInput;\n } // Material Design layouts are visually balanced. Most measurements align to an 8dp grid applied, which aligns both spacing and the overall layout.\n // Smaller components, such as icons and type, can align to a 4dp grid.\n // https://material.io/design/layout/understanding-layout.html#usage\n\n\n var transform = (0, _system.createUnarySpacing)({\n spacing: spacingInput\n });\n\n var spacing = function spacing() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!(args.length <= 4)) {\n console.error(\"Material-UI: Too many arguments provided, expected between 0 and 4, got \".concat(args.length));\n }\n }\n\n if (args.length === 0) {\n return transform(1);\n }\n\n if (args.length === 1) {\n return transform(args[0]);\n }\n\n return args.map(function (argument) {\n if (typeof argument === 'string') {\n return argument;\n }\n\n var output = transform(argument);\n return typeof output === 'number' ? \"\".concat(output, \"px\") : output;\n }).join(' ');\n }; // Backward compatibility, to remove in v5.\n\n\n Object.defineProperty(spacing, 'unit', {\n get: function get() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnOnce || process.env.NODE_ENV === 'test') {\n console.error(['Material-UI: theme.spacing.unit usage has been deprecated.', 'It will be removed in v5.', 'You can replace `theme.spacing.unit * y` with `theme.spacing(y)`.', '', 'You can use the `https://github.com/mui-org/material-ui/tree/master/packages/material-ui-codemod/README.md#theme-spacing-api` migration helper to make the process smoother.'].join('\\n'));\n }\n\n warnOnce = true;\n }\n\n return spacingInput;\n }\n });\n spacing.mui = true;\n return spacing;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createMuiTheme = createMuiTheme;\nexports.default = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _utils = require(\"@material-ui/utils\");\n\nvar _createBreakpoints = _interopRequireDefault(require(\"./createBreakpoints\"));\n\nvar _createMixins = _interopRequireDefault(require(\"./createMixins\"));\n\nvar _createPalette = _interopRequireDefault(require(\"./createPalette\"));\n\nvar _createTypography = _interopRequireDefault(require(\"./createTypography\"));\n\nvar _shadows = _interopRequireDefault(require(\"./shadows\"));\n\nvar _shape = _interopRequireDefault(require(\"./shape\"));\n\nvar _createSpacing = _interopRequireDefault(require(\"./createSpacing\"));\n\nvar _transitions = _interopRequireDefault(require(\"./transitions\"));\n\nvar _zIndex = _interopRequireDefault(require(\"./zIndex\"));\n\nfunction createTheme() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$breakpoints = options.breakpoints,\n breakpointsInput = _options$breakpoints === void 0 ? {} : _options$breakpoints,\n _options$mixins = options.mixins,\n mixinsInput = _options$mixins === void 0 ? {} : _options$mixins,\n _options$palette = options.palette,\n paletteInput = _options$palette === void 0 ? {} : _options$palette,\n spacingInput = options.spacing,\n _options$typography = options.typography,\n typographyInput = _options$typography === void 0 ? {} : _options$typography,\n other = (0, _objectWithoutProperties2.default)(options, [\"breakpoints\", \"mixins\", \"palette\", \"spacing\", \"typography\"]);\n var palette = (0, _createPalette.default)(paletteInput);\n var breakpoints = (0, _createBreakpoints.default)(breakpointsInput);\n var spacing = (0, _createSpacing.default)(spacingInput);\n var muiTheme = (0, _utils.deepmerge)({\n breakpoints: breakpoints,\n direction: 'ltr',\n mixins: (0, _createMixins.default)(breakpoints, spacing, mixinsInput),\n overrides: {},\n // Inject custom styles\n palette: palette,\n props: {},\n // Provide default props\n shadows: _shadows.default,\n typography: (0, _createTypography.default)(palette, typographyInput),\n spacing: spacing,\n shape: _shape.default,\n transitions: _transitions.default,\n zIndex: _zIndex.default\n }, other);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n muiTheme = args.reduce(function (acc, argument) {\n return (0, _utils.deepmerge)(acc, argument);\n }, muiTheme);\n\n if (process.env.NODE_ENV !== 'production') {\n var pseudoClasses = ['checked', 'disabled', 'error', 'focused', 'focusVisible', 'required', 'expanded', 'selected'];\n\n var traverse = function traverse(node, parentKey) {\n var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var key; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (key in node) {\n var child = node[key];\n\n if (depth === 1) {\n if (key.indexOf('Mui') === 0 && child) {\n traverse(child, key, depth + 1);\n }\n } else if (pseudoClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n console.error([\"Material-UI: The `\".concat(parentKey, \"` component increases \") + \"the CSS specificity of the `\".concat(key, \"` internal state.\"), 'You can not override it like this: ', JSON.stringify(node, null, 2), '', 'Instead, you need to use the $ruleName syntax:', JSON.stringify({\n root: (0, _defineProperty2.default)({}, \"&$\".concat(key), child)\n }, null, 2), '', 'https://material-ui.com/r/pseudo-classes-guide'].join('\\n'));\n } // Remove the style to prevent global conflicts.\n\n\n node[key] = {};\n }\n }\n };\n\n traverse(muiTheme.overrides);\n }\n\n return muiTheme;\n}\n\nvar warnedOnce = false;\n\nfunction createMuiTheme() {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['Material-UI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@material-ui/core/styles'`\"].join('\\n'));\n }\n }\n\n return createTheme.apply(void 0, arguments);\n}\n\nvar _default = createTheme;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createTypography;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\"));\n\nvar _utils = require(\"@material-ui/utils\");\n\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\n\nvar warnedOnce = false;\n\nfunction roundWithDeprecationWarning(value) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n console.warn(['Material-UI: The `theme.typography.round` helper is deprecated.', 'Head to https://material-ui.com/r/migration-v4/#theme for a migration path.'].join('\\n'));\n warnedOnce = true;\n }\n }\n\n return round(value);\n}\n\nvar caseAllCaps = {\n textTransform: 'uppercase'\n};\nvar defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n/**\n * @see @link{https://material.io/design/typography/the-type-system.html}\n * @see @link{https://material.io/design/typography/understanding-typography.html}\n */\n\nfunction createTypography(palette, typography) {\n var _ref = typeof typography === 'function' ? typography(palette) : typography,\n _ref$fontFamily = _ref.fontFamily,\n fontFamily = _ref$fontFamily === void 0 ? defaultFontFamily : _ref$fontFamily,\n _ref$fontSize = _ref.fontSize,\n fontSize = _ref$fontSize === void 0 ? 14 : _ref$fontSize,\n _ref$fontWeightLight = _ref.fontWeightLight,\n fontWeightLight = _ref$fontWeightLight === void 0 ? 300 : _ref$fontWeightLight,\n _ref$fontWeightRegula = _ref.fontWeightRegular,\n fontWeightRegular = _ref$fontWeightRegula === void 0 ? 400 : _ref$fontWeightRegula,\n _ref$fontWeightMedium = _ref.fontWeightMedium,\n fontWeightMedium = _ref$fontWeightMedium === void 0 ? 500 : _ref$fontWeightMedium,\n _ref$fontWeightBold = _ref.fontWeightBold,\n fontWeightBold = _ref$fontWeightBold === void 0 ? 700 : _ref$fontWeightBold,\n _ref$htmlFontSize = _ref.htmlFontSize,\n htmlFontSize = _ref$htmlFontSize === void 0 ? 16 : _ref$htmlFontSize,\n allVariants = _ref.allVariants,\n pxToRem2 = _ref.pxToRem,\n other = (0, _objectWithoutProperties2.default)(_ref, [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('Material-UI: `fontSize` is required to be a number.');\n }\n\n if (typeof htmlFontSize !== 'number') {\n console.error('Material-UI: `htmlFontSize` is required to be a number.');\n }\n }\n\n var coef = fontSize / 14;\n\n var pxToRem = pxToRem2 || function (size) {\n return \"\".concat(size / htmlFontSize * coef, \"rem\");\n };\n\n var buildVariant = function buildVariant(fontWeight, size, lineHeight, letterSpacing, casing) {\n return (0, _extends2.default)({\n fontFamily: fontFamily,\n fontWeight: fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight: lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: \"\".concat(round(letterSpacing / size), \"em\")\n } : {}, casing, allVariants);\n };\n\n var variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps)\n };\n return (0, _utils.deepmerge)((0, _extends2.default)({\n htmlFontSize: htmlFontSize,\n pxToRem: pxToRem,\n round: roundWithDeprecationWarning,\n // TODO v5: remove\n fontFamily: fontFamily,\n fontSize: fontSize,\n fontWeightLight: fontWeightLight,\n fontWeightRegular: fontWeightRegular,\n fontWeightMedium: fontWeightMedium,\n fontWeightBold: fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\n\nvar defaultTheme = (0, _createTheme.default)();\nvar _default = defaultTheme;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _styles = require(\"@material-ui/styles\");\n\nvar _defaultTheme = _interopRequireDefault(require(\"./defaultTheme\"));\n\nfunction makeStyles(stylesOrCreator) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return (0, _styles.makeStyles)(stylesOrCreator, (0, _extends2.default)({\n defaultTheme: _defaultTheme.default\n }, options));\n}\n\nvar _default = makeStyles;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar shadowKeyUmbraOpacity = 0.2;\nvar shadowKeyPenumbraOpacity = 0.14;\nvar shadowAmbientShadowOpacity = 0.12;\n\nfunction createShadow() {\n return [\"\".concat(arguments.length <= 0 ? undefined : arguments[0], \"px \").concat(arguments.length <= 1 ? undefined : arguments[1], \"px \").concat(arguments.length <= 2 ? undefined : arguments[2], \"px \").concat(arguments.length <= 3 ? undefined : arguments[3], \"px rgba(0,0,0,\").concat(shadowKeyUmbraOpacity, \")\"), \"\".concat(arguments.length <= 4 ? undefined : arguments[4], \"px \").concat(arguments.length <= 5 ? undefined : arguments[5], \"px \").concat(arguments.length <= 6 ? undefined : arguments[6], \"px \").concat(arguments.length <= 7 ? undefined : arguments[7], \"px rgba(0,0,0,\").concat(shadowKeyPenumbraOpacity, \")\"), \"\".concat(arguments.length <= 8 ? undefined : arguments[8], \"px \").concat(arguments.length <= 9 ? undefined : arguments[9], \"px \").concat(arguments.length <= 10 ? undefined : arguments[10], \"px \").concat(arguments.length <= 11 ? undefined : arguments[11], \"px rgba(0,0,0,\").concat(shadowAmbientShadowOpacity, \")\")].join(',');\n} // Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\n\n\nvar shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nvar _default = shadows;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar shape = {\n borderRadius: 4\n};\nvar _default = shape;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.duration = exports.easing = void 0;\n\nvar _objectWithoutProperties2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutProperties\")); // Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\n\n\nvar easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n}; // Follow https://material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\n\nexports.easing = easing;\nvar duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nexports.duration = duration;\n\nfunction formatMs(milliseconds) {\n return \"\".concat(Math.round(milliseconds), \"ms\");\n}\n/**\n * @param {string|Array} props\n * @param {object} param\n * @param {string} param.prop\n * @param {number} param.duration\n * @param {string} param.easing\n * @param {number} param.delay\n */\n\n\nvar _default = {\n easing: easing,\n duration: duration,\n create: function create() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['all'];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$duration = options.duration,\n durationOption = _options$duration === void 0 ? duration.standard : _options$duration,\n _options$easing = options.easing,\n easingOption = _options$easing === void 0 ? easing.easeInOut : _options$easing,\n _options$delay = options.delay,\n delay = _options$delay === void 0 ? 0 : _options$delay,\n other = (0, _objectWithoutProperties2.default)(options, [\"duration\", \"easing\", \"delay\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var isNumber = function isNumber(value) {\n return !isNaN(parseFloat(value));\n };\n\n if (!isString(props) && !Array.isArray(props)) {\n console.error('Material-UI: Argument \"props\" must be a string or Array.');\n }\n\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(\"Material-UI: Argument \\\"duration\\\" must be a number or a string but found \".concat(durationOption, \".\"));\n }\n\n if (!isString(easingOption)) {\n console.error('Material-UI: Argument \"easing\" must be a string.');\n }\n\n if (!isNumber(delay) && !isString(delay)) {\n console.error('Material-UI: Argument \"delay\" must be a number or a string.');\n }\n\n if (Object.keys(other).length !== 0) {\n console.error(\"Material-UI: Unrecognized argument(s) [\".concat(Object.keys(other).join(','), \"].\"));\n }\n }\n\n return (Array.isArray(props) ? props : [props]).map(function (animatedProp) {\n return \"\".concat(animatedProp, \" \").concat(typeof durationOption === 'string' ? durationOption : formatMs(durationOption), \" \").concat(easingOption, \" \").concat(typeof delay === 'string' ? delay : formatMs(delay));\n }).join(',');\n },\n getAutoHeightDuration: function getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n\n var constant = height / 36; // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n\n return Math.round((4 + 15 * Math.pow(constant, 0.25) + constant / 5) * 10);\n }\n};\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = useTheme;\n\nvar _styles = require(\"@material-ui/styles\");\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _defaultTheme = _interopRequireDefault(require(\"./defaultTheme\"));\n\nfunction useTheme() {\n var theme = (0, _styles.useTheme)() || _defaultTheme.default;\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n _react.default.useDebugValue(theme);\n }\n\n return theme;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0; // We need to centralize the zIndex definitions as they work\n// like global values in the browser.\n\nvar zIndex = {\n mobileStepper: 1000,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nvar _default = zIndex;\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.88 4.12L13.76 12l-7.88 7.88L8 22l10-10L8 2z\"\n}), 'ArrowForwardIos');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4V4c0-1.1-.9-2-2-2zm0 15.17L18.83 16H4V4h16v13.17z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 4v12h14.83L20 17.17V4z\",\n opacity: \".3\"\n})), 'ModeCommentTwoTone');\n\nexports.default = _default;","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return function () {\n return null;\n };\n }\n\n return function validate() {\n return propType1.apply(void 0, arguments) || propType2.apply(void 0, arguments);\n };\n}","import PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\n\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n var _elementType$prototyp = elementType.prototype,\n prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp;\n return Boolean(prototype.isReactComponent);\n}\n\nfunction acceptingRef(props, propName, componentName, location, propFullName) {\n var element = props[propName];\n var safePropName = propFullName || propName;\n\n if (element == null) {\n return null;\n }\n\n var warningHint;\n var elementType = element.type;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n\n if (typeof elementType === 'function' && !isClassComponent(elementType)) {\n warningHint = 'Did you accidentally use a plain function component for an element instead?';\n }\n\n if (warningHint !== undefined) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an element that can hold a ref. \".concat(warningHint, \" \") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide');\n }\n\n return null;\n}\n\nvar elementAcceptingRef = chainPropTypes(PropTypes.element, acceptingRef);\nelementAcceptingRef.isRequired = chainPropTypes(PropTypes.element.isRequired, acceptingRef);\nexport default elementAcceptingRef;","import * as PropTypes from 'prop-types';\nimport chainPropTypes from './chainPropTypes';\n\nfunction isClassComponent(elementType) {\n // elementType.prototype?.isReactComponent\n var _elementType$prototyp = elementType.prototype,\n prototype = _elementType$prototyp === void 0 ? {} : _elementType$prototyp;\n return Boolean(prototype.isReactComponent);\n}\n\nfunction elementTypeAcceptingRef(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var safePropName = propFullName || propName;\n\n if (propValue == null) {\n return null;\n }\n\n var warningHint;\n /**\n * Blacklisting instead of whitelisting\n *\n * Blacklisting will miss some components, such as React.Fragment. Those will at least\n * trigger a warning in React.\n * We can't whitelist because there is no safe way to detect React.forwardRef\n * or class components. \"Safe\" means there's no public API.\n *\n */\n\n if (typeof propValue === 'function' && !isClassComponent(propValue)) {\n warningHint = 'Did you accidentally provide a plain function component instead?';\n }\n\n if (warningHint !== undefined) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an element type that can hold a ref. \".concat(warningHint, \" \") + 'For more information see https://material-ui.com/r/caveat-with-refs-guide');\n }\n\n return null;\n}\n\nexport default chainPropTypes(PropTypes.elementType, elementTypeAcceptingRef);","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\"; // This module is based on https://github.com/airbnb/prop-types-exact repository.\n// However, in order to reduce the number of dependencies and to remove some extra safe checks\n// the module was forked.\n// Only exported for test purposes.\n\nexport var specialProperty = \"exact-prop: \\u200B\";\nexport default function exactProp(propTypes) {\n if (process.env.NODE_ENV === 'production') {\n return propTypes;\n }\n\n return _extends({}, propTypes, _defineProperty({}, specialProperty, function (props) {\n var unsupportedProps = Object.keys(props).filter(function (prop) {\n return !propTypes.hasOwnProperty(prop);\n });\n\n if (unsupportedProps.length > 0) {\n return new Error(\"The following props are not supported: \".concat(unsupportedProps.map(function (prop) {\n return \"`\".concat(prop, \"`\");\n }).join(', '), \". Please remove them.\"));\n }\n\n return null;\n }));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport { ForwardRef, Memo } from 'react-is'; // Simplified polyfill for IE 11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\n\nvar fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n var match = \"\".concat(fn).match(fnNameMatchRegex);\n var name = match && match[1];\n return name || '';\n}\n/**\n * @param {function} Component\n * @param {string} fallback\n * @returns {string | undefined}\n */\n\nfunction getFunctionComponentName(Component) {\n var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? \"\".concat(wrapperName, \"(\").concat(functionName, \")\") : wrapperName);\n}\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE 11 support\n *\n * @param {React.ReactType} Component\n * @returns {string | undefined}\n */\n\n\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n\n if (typeof Component === 'string') {\n return Component;\n }\n\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n if (_typeof(Component) === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n\n default:\n return undefined;\n }\n }\n\n return undefined;\n}","export default function HTMLElementType(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n\n var propValue = props[propName];\n var safePropName = propFullName || propName;\n\n if (propValue == null) {\n return null;\n }\n\n if (propValue && propValue.nodeType !== 1) {\n return new Error(\"Invalid \".concat(location, \" `\").concat(safePropName, \"` supplied to `\").concat(componentName, \"`. \") + \"Expected an HTMLElement.\");\n }\n\n return null;\n}","/* eslint-disable */\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nexport default typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();","import PropTypes from 'prop-types';\nvar refType = PropTypes.oneOfType([PropTypes.func, PropTypes.object]);\nexport default refType;","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nvar b = 60103,\n c = 60106,\n d = 60107,\n e = 60108,\n f = 60114,\n g = 60109,\n h = 60110,\n k = 60112,\n l = 60113,\n m = 60120,\n n = 60115,\n p = 60116,\n q = 60121,\n r = 60122,\n u = 60117,\n v = 60129,\n w = 60131;\n\nif (\"function\" === typeof Symbol && Symbol.for) {\n var x = Symbol.for;\n b = x(\"react.element\");\n c = x(\"react.portal\");\n d = x(\"react.fragment\");\n e = x(\"react.strict_mode\");\n f = x(\"react.profiler\");\n g = x(\"react.provider\");\n h = x(\"react.context\");\n k = x(\"react.forward_ref\");\n l = x(\"react.suspense\");\n m = x(\"react.suspense_list\");\n n = x(\"react.memo\");\n p = x(\"react.lazy\");\n q = x(\"react.block\");\n r = x(\"react.server.block\");\n u = x(\"react.fundamental\");\n v = x(\"react.debug_trace_mode\");\n w = x(\"react.legacy_hidden\");\n}\n\nfunction y(a) {\n if (\"object\" === typeof a && null !== a) {\n var t = a.$$typeof;\n\n switch (t) {\n case b:\n switch (a = a.type, a) {\n case d:\n case f:\n case e:\n case l:\n case m:\n return a;\n\n default:\n switch (a = a && a.$$typeof, a) {\n case h:\n case k:\n case p:\n case n:\n case g:\n return a;\n\n default:\n return t;\n }\n\n }\n\n case c:\n return t;\n }\n }\n}\n\nvar z = g,\n A = b,\n B = k,\n C = d,\n D = p,\n E = n,\n F = c,\n G = f,\n H = e,\n I = l;\nexports.ContextConsumer = h;\nexports.ContextProvider = z;\nexports.Element = A;\nexports.ForwardRef = B;\nexports.Fragment = C;\nexports.Lazy = D;\nexports.Memo = E;\nexports.Portal = F;\nexports.Profiler = G;\nexports.StrictMode = H;\nexports.Suspense = I;\n\nexports.isAsyncMode = function () {\n return !1;\n};\n\nexports.isConcurrentMode = function () {\n return !1;\n};\n\nexports.isContextConsumer = function (a) {\n return y(a) === h;\n};\n\nexports.isContextProvider = function (a) {\n return y(a) === g;\n};\n\nexports.isElement = function (a) {\n return \"object\" === typeof a && null !== a && a.$$typeof === b;\n};\n\nexports.isForwardRef = function (a) {\n return y(a) === k;\n};\n\nexports.isFragment = function (a) {\n return y(a) === d;\n};\n\nexports.isLazy = function (a) {\n return y(a) === p;\n};\n\nexports.isMemo = function (a) {\n return y(a) === n;\n};\n\nexports.isPortal = function (a) {\n return y(a) === c;\n};\n\nexports.isProfiler = function (a) {\n return y(a) === f;\n};\n\nexports.isStrictMode = function (a) {\n return y(a) === e;\n};\n\nexports.isSuspense = function (a) {\n return y(a) === l;\n};\n\nexports.isValidElementType = function (a) {\n return \"string\" === typeof a || \"function\" === typeof a || a === d || a === f || a === v || a === e || a === l || a === m || a === w || \"object\" === typeof a && null !== a && (a.$$typeof === p || a.$$typeof === n || a.$$typeof === g || a.$$typeof === h || a.$$typeof === k || a.$$typeof === u || a.$$typeof === q || a[0] === r) ? !0 : !1;\n};\n\nexports.typeOf = y;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}","var QueryHandler = require('./QueryHandler');\n\nvar each = require('./Util').each;\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\n\n\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n var self = this;\n\n this.listener = function (mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n constuctor: MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler: function addHandler(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler: function removeHandler(handler) {\n var handlers = this.handlers;\n each(handlers, function (h, i) {\n if (h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i, 1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches: function matches() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear: function clear() {\n each(this.handlers, function (handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess: function assess() {\n var action = this.matches() ? 'on' : 'off';\n each(this.handlers, function (handler) {\n handler[action]();\n });\n }\n};\nmodule.exports = MediaQuery;","var MediaQuery = require('./MediaQuery');\n\nvar Util = require('./Util');\n\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\n\nfunction MediaQueryDispatch() {\n if (!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n constructor: MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register: function register(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if (!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n } //normalise to object in an array\n\n\n if (isFunction(options)) {\n options = {\n match: options\n };\n }\n\n if (!isArray(options)) {\n options = [options];\n }\n\n each(options, function (handler) {\n if (isFunction(handler)) {\n handler = {\n match: handler\n };\n }\n\n queries[q].addHandler(handler);\n });\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister: function unregister(q, handler) {\n var query = this.queries[q];\n\n if (query) {\n if (handler) {\n query.removeHandler(handler);\n } else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\nmodule.exports = MediaQueryDispatch;","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n constructor: QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup: function setup() {\n if (this.options.setup) {\n this.options.setup();\n }\n\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on: function on() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off: function off() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy: function destroy() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals: function equals(target) {\n return this.options === target || this.options.match === target;\n }\n};\nmodule.exports = QueryHandler;","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for (i; i < length; i++) {\n cont = fn(collection[i], i);\n\n if (cont === false) {\n break; //allow early exit\n }\n }\n}\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\n\n\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\n\n\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction: isFunction,\n isArray: isArray,\n each: each\n};","var MediaQueryDispatch = require('./MediaQueryDispatch');\n\nmodule.exports = new MediaQueryDispatch();","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function isDimension(feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function obj2mq(obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature); // Add px to dimension features\n\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n\n if (index < features.length - 1) {\n mq += ' and ';\n }\n });\n return mq;\n};\n\nvar json2mq = function json2mq(query) {\n var mq = '';\n\n if (typeof query === 'string') {\n return query;\n } // Handling array of media queries\n\n\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n\n if (index < query.length - 1) {\n mq += ', ';\n }\n });\n return mq;\n } // Handling single media query\n\n\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used as references for various `Number` constants. */\n\nvar NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\nvar now = function now() {\n return root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = debounce;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NextArrow = exports.PrevArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this; // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n\n\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n} // given specifications/props for a slide, fetch all the classes that need to be applied to the slide\n\n\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clamp = clamp;\nexports.canUseDOM = exports.slidesOnLeft = exports.slidesOnRight = exports.siblingDirection = exports.getTotalSlides = exports.getPostClones = exports.getPreClones = exports.getTrackLeft = exports.getTrackAnimateCSS = exports.getTrackCSS = exports.checkSpecKeys = exports.getSlideCount = exports.checkNavigable = exports.getNavigableIndexes = exports.swipeEnd = exports.swipeMove = exports.swipeStart = exports.keyHandler = exports.changeSlide = exports.slideHandler = exports.initializedState = exports.extractObject = exports.canGoNext = exports.getSwipeDirection = exports.getHeight = exports.getWidth = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.lazyStartIndex = exports.getRequiredLazySlides = exports.getOnDemandLazySlides = exports.safePreventDefault = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding; // returns no of slides on the right of active slide\n\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding; // returns no of slides on the left of active slide\n\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n\n\n function getIndex(arr, key) {\n var result = -1;\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n return true;\n }\n\n return false;\n });\n return result;\n }\n\n return (\n /** @class */\n function () {\n function class_1() {\n this.__entries__ = [];\n }\n\n Object.defineProperty(class_1.prototype, \"size\", {\n /**\r\n * @returns {boolean}\r\n */\n get: function get() {\n return this.__entries__.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n\n class_1.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n return entry && entry[1];\n };\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n /**\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n\n\n class_1.prototype.forEach = function (callback, ctx) {\n if (ctx === void 0) {\n ctx = null;\n }\n\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\n var entry = _a[_i];\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n return class_1;\n }()\n );\n}();\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\n\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document; // Returns global object of a current environment.\n\nvar global$1 = function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n } // eslint-disable-next-line no-new-func\n\n\n return Function('return this')();\n}();\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\n\n\nvar requestAnimationFrame$1 = function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) {\n return setTimeout(function () {\n return callback(Date.now());\n }, 1000 / 60);\n };\n}(); // Defines minimum timeout before adding a trailing call.\n\n\nvar trailingTimeout = 2;\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\n\nfunction throttle(callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n\n\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n\n\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n } // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n\n\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n} // Minimum delay before invoking the update of observers.\n\n\nvar REFRESH_DELAY = 20; // A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\n\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight']; // Check if MutationObserver is available.\n\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\n\nvar ResizeObserverController =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\n function ResizeObserverController() {\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\n this.connected_ = false;\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\n\n this.mutationEventsAdded_ = false;\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n this.mutationsObserver_ = null;\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\n\n this.observers_ = [];\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n }\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n } // Add listeners if they haven't been added yet.\n\n\n if (!this.connected_) {\n this.connect_();\n }\n };\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer); // Remove observer if it's present in registry.\n\n if (~index) {\n observers.splice(index, 1);\n } // Remove listeners if controller has no connected observers.\n\n\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n };\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_(); // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n\n if (changesDetected) {\n this.refresh();\n }\n };\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\n\n\n ResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n }); // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n\n activeObservers.forEach(function (observer) {\n return observer.broadcastActive();\n });\n return activeObservers.length > 0;\n };\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n } // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n\n\n document.addEventListener('transitionend', this.onTransitionEnd_);\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n };\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n };\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\n\n\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\n var _b = _a.propertyName,\n propertyName = _b === void 0 ? '' : _b; // Detect whether transition may affect dimensions of an element.\n\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n };\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n };\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n ResizeObserverController.instance_ = null;\n return ResizeObserverController;\n}();\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\n\n\nvar defineConfigurable = function defineConfigurable(target, props) {\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n var key = _a[_i];\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n};\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\n\n\nvar getWindowOf = function getWindowOf(target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; // Return the local global object if it's not possible extract one from\n // provided element.\n\n return ownerGlobal || global$1;\n}; // Placeholder of an empty content rectangle.\n\n\nvar emptyRect = createRectInit(0, 0, 0, 0);\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\n\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\n\n\nfunction getBordersSize(styles) {\n var positions = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n positions[_i - 1] = arguments[_i];\n }\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n return size + toFloat(value);\n }, 0);\n}\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\n\n\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\n var position = positions_1[_i];\n var value = styles['padding-' + position];\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth,\n clientHeight = target.clientHeight; // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom; // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n\n var width = toFloat(styles.width),\n height = toFloat(styles.height); // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n } // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the itself neither has\n // rendered scroll bars nor it can be clipped.\n\n\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight; // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nvar isSVGGraphicsElement = function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) {\n return target instanceof getWindowOf(target).SVGGraphicsElement;\n };\n } // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n\n\n return function (target) {\n return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function';\n };\n}();\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\n\n\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\n\n\nfunction createReadOnlyRect(_a) {\n var x = _a.x,\n y = _a.y,\n width = _a.width,\n height = _a.height; // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype); // Rectangle's properties are not writable and non-enumerable.\n\n defineConfigurable(rect, {\n x: x,\n y: y,\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n return rect;\n}\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\n\n\nfunction createRectInit(x, y, width, height) {\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n}\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\n\n\nvar ResizeObservation =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\n function ResizeObservation(target) {\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\n this.broadcastWidth = 0;\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\n\n this.broadcastHeight = 0;\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n this.target = target;\n }\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n this.contentRect_ = rect;\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n };\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\n\n\n ResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n return rect;\n };\n\n return ResizeObservation;\n}();\n\nvar ResizeObserverEntry =\n/** @class */\nfunction () {\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\n function ResizeObserverEntry(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit); // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n\n defineConfigurable(this, {\n target: target,\n contentRect: contentRect\n });\n }\n\n return ResizeObserverEntry;\n}();\n\nvar ResizeObserverSPI =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\n function ResizeObserverSPI(callback, controller, callbackCtx) {\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\n this.activeObservations_ = [];\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\n\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is already being observed.\n\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this); // Force the update of observations.\n\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is not being observed.\n\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_; // Create ResizeObserverEntry instance for every active observation.\n\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n\n return ResizeObserverSPI;\n}(); // Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\n\n\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\n\nvar ResizeObserver =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n\n return ResizeObserver;\n}(); // Expose public methods of ResizeObserver.\n\n\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\n\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n}();\n\nexport default index;","var camel2hyphen = function camel2hyphen(str) {\n return str.replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n }).toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Card, CardActionArea, CardContent, Grid, Typography } from '@material-ui/core';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForwardIos';\n\nimport LinkNoStyle from '../LinkNoStyle/LinkNoStyle';\nimport { graphql, useStaticQuery } from 'gatsby';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tbackgroundColor: '#FFFFFF',\n\t\tpadding: theme.spacing(3),\n\t\tjustifyContent: 'center'\n\t},\n\tcard: {\n\t\twidth: '100%',\n\t\tborderRadius: '20px',\n\t\tborderColor: 'rgba(201, 96, 255, 0.3)',\n\t\tboxShadow: '0 1px 20px rgba(201, 96, 255, 0.6)',\n\t\tbackground: 'linear-gradient(90deg, #CA32FF, #FF5F96, #CA32FF, #FF5F96)',\n\t\tposition: 'relative',\n\t\tanimation: `$swipe 3s linear infinite`\n\t},\n\t'@keyframes swipe': {\n\t\t'0%': {\n\t\t\tbackgroundSize: '300%',\n\t\t\tbackgroundPosition: '100% 0'\n\t\t},\n\t\t'100%': {\n\t\t\tbackgroundSize: '300%',\n\t\t\tbackgroundPosition: '0 0'\n\t\t}\n\t},\n\tcontent: {\n\t\ttextAlign: 'center',\n\t\tcolor: 'white',\n\t\tpaddingTop: theme.spacing(2.5),\n\t\t'&:last-child': {\n\t\t\tpaddingBottom: theme.spacing(2.5)\n\t\t}\n\t},\n\tforwardArrow: {\n\t\tfontSize: theme.typography.fontSize,\n\t\tmarginLeft: theme.spacing(2),\n\t\tmarginTop: theme.spacing(0.5),\n\t\tfontWeight: 700\n\t},\n\tgrid: {\n\t\tdirection: 'row',\n\t\tjustifyContent: 'center',\n\t\talignItems: 'center'\n\t},\n\titem: {\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: '75%'\n\t\t}\n\t},\n\ttext: {\n\t\tfontWeight: 700\n\t}\n});\n\n\nfunction Announcement({ classes }) {\n\tconst data = useStaticQuery(graphql`\n\tquery getInternBlogPost {\n\t\tallMarkdownRemark(\n\t\t\tfilter: {fields: {slug: {regex: \"/.*hey-future-interns.*/\"}}}\n\t\t) {\n\t\t nodes {\n\t\t\tfields {\n\t\t\t slug\n\t\t\t}\n\t\t\tid\n\t\t }\n\t\t}\n\t }\n\t`);\n\n\tconst url = data.allMarkdownRemark.nodes[0].fields.slug;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tWant to learn more about our internship program? Check out this blog post!\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nAnnouncement.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(Announcement);\n","var _g, _g2, _g3, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRightbanner(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 499 801\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n opacity: 0.09,\n fillRule: \"evenodd\",\n clipRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M453.299 98.5c0 7.456-6.044 13.5-13.5 13.5H358.5c-7.456 0-13.5-6.044-13.5-13.5S351.044 85 358.5 85h81.299c7.456 0 13.5 6.044 13.5 13.5zM221.792 653.913c0 7.456-6.045 13.5-13.501 13.5H36.944c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5H208.29c7.456 0 13.501 6.044 13.501 13.5zm41.773-151.589c0 7.456-6.044 13.5-13.5 13.5h-45.49c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h45.49c7.456 0 13.5 6.044 13.5 13.5zm163.531-101.058c0 7.455-6.044 13.5-13.5 13.5H242.248c-7.456 0-13.5-6.045-13.5-13.5 0-7.456 6.044-13.5 13.5-13.5h171.348c7.456 0 13.5 6.044 13.5 13.5zm-236.021-50.531c0 7.456-6.044 13.5-13.5 13.5h-65.872c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h65.872c7.456 0 13.5 6.044 13.5 13.5zm97.737-202.117c0 7.456-6.044 13.5-13.5 13.5H155.734c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h119.578c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"#942EFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.411 199.147c0 7.456-6.045 13.5-13.5 13.5H86.563c-7.456 0-13.5-6.044-13.5-13.5 0-7.455 6.044-13.5 13.5-13.5H257.91c7.455 0 13.5 6.045 13.5 13.5zM66.022 502.324c0 7.456-6.044 13.5-13.5 13.5H33.104c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h19.418c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"#FB4469\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M242.196 552.853c0 7.456-6.044 13.501-13.5 13.501H28.642c-7.456 0-13.5-6.045-13.5-13.501 0-7.455 6.044-13.5 13.5-13.5h200.054c7.456 0 13.5 6.045 13.5 13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint0_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M250.954 98.089c0 7.456-6.044 13.5-13.5 13.5H107.019c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h130.435c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint1_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M430.396 47.56c0 7.455-6.045 13.5-13.501 13.5H245.548c-7.456 0-13.501-6.045-13.501-13.5 0-7.456 6.045-13.5 13.501-13.5h171.347c7.456 0 13.501 6.044 13.501 13.5z\",\n fill: \"#FB4469\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.609 754.971c0 7.456-6.044 13.5-13.5 13.5H13.5c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h77.61c7.455 0 13.499 6.044 13.499 13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint2_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M232.048 704.442c0 7.456-6.044 13.5-13.5 13.5h-89.37c-7.456 0-13.5-6.044-13.5-13.5s6.044-13.5 13.5-13.5h89.37c7.456 0 13.5 6.044 13.5 13.5z\",\n fill: \"#FB4469\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.668 300.206c0-7.456 6.045-13.5 13.5-13.5h144.449c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5H142.168c-7.455 0-13.5-6.044-13.5-13.5z\",\n fill: \"#C960FF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M300.117 249.678c0-7.456 6.044-13.5 13.5-13.5h171.348c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5H313.617c-7.456 0-13.5-6.044-13.5-13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint3_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.404 401.266c0-7.456 6.044-13.5 13.5-13.5h88.379c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5h-88.379c-7.456 0-13.5-6.044-13.5-13.5z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint4_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M263.565 451.795c0-7.456 6.044-13.5 13.5-13.5h171.348c7.456 0 13.5 6.044 13.5 13.5s-6.044 13.5-13.5 13.5H277.065c-7.456 0-13.5-6.044-13.5-13.5z\",\n fill: \"#C960FF\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#rightbanner_svg__rightbanner_svg__filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 216.67,\n height: 396.522,\n rx: 33.516,\n transform: \"matrix(0 1 1 0 76.487 139)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint5_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 207.586,\n height: 390.473,\n rx: 30.723,\n transform: \"matrix(0 1 1 0 79.512 143.539)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint6_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 187.651,\n height: 371.336,\n rx: 19.551,\n transform: \"matrix(0 1 1 0 88.67 153.51)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint7_linear)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#481330\",\n d: \"M81.91 298.404V195.731h11.214v102.673z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#481330\",\n d: \"M81.91 288.378V205.76h20.767v82.62z\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 93.124,\n cy: 288.377,\n rx: 10.028,\n ry: 9.552,\n transform: \"rotate(-90 93.124 288.377)\",\n fill: \"#481330\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 93.124,\n cy: 205.759,\n rx: 10.028,\n ry: 9.552,\n transform: \"rotate(-90 93.124 205.759)\",\n fill: \"#481330\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 90.371,\n y: 275.758,\n width: 42.315,\n height: 3.846,\n rx: 1.923,\n transform: \"rotate(-90 90.371 275.758)\",\n fill: \"#1B1615\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 92.294,\n cy: 220.122,\n rx: 3.873,\n ry: 3.624,\n transform: \"rotate(-90 92.294 220.122)\",\n fill: \"#1A1A1A\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 92.436,\n cy: 220.247,\n rx: 2.108,\n ry: 1.916,\n transform: \"rotate(-90 92.436 220.247)\",\n fill: \"#525252\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 92.294,\n cy: 220.248,\n rx: 3.873,\n ry: 3.624,\n transform: \"rotate(-90 92.294 220.248)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint8_radial)\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 90.676,\n cy: 221.509,\n rx: 0.408,\n ry: 0.334,\n transform: \"rotate(-90 90.676 221.509)\",\n fill: \"#fff\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#rightbanner_svg__rightbanner_svg__filter1_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 274.749,\n y: 318.474,\n width: 143.516,\n height: 142.275,\n rx: 11.211,\n transform: \"rotate(180 274.749 318.474)\",\n fill: \"#FFF3F4\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 90.228,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 251.072 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint9_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 63.975,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 237.905 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint10_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 80.841,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 224.738 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint11_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 46.381,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 182.138 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint12_linear)\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n width: 46.381,\n height: 7.931,\n rx: 3.966,\n transform: \"matrix(0 -1 -1 0 168.972 291.809)\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint13_linear)\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n rx: 9.31,\n ry: 8.768,\n transform: \"matrix(0 -1 -1 0 199.472 282.499)\",\n fill: \"#FFA38A\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n rx: 9.31,\n ry: 8.768,\n transform: \"matrix(0 -1 -1 0 199.472 256.909)\",\n fill: \"#FFA38A\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n rx: 9.31,\n ry: 8.768,\n transform: \"matrix(0 -1 -1 0 199.472 231.319)\",\n fill: \"#FFA38A\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.71,\n d: \"M65.976 197.134c0-5.526-4.267-10.006-9.531-10.006l-.057.001H52v-22.621C52 153.734 60.226 145 70.373 145h333.771c10.147 0 18.373 8.734 18.373 19.508v148.221c0 10.774-8.226 19.508-18.373 19.508H70.374c-10.148 0-18.374-8.734-18.374-19.508v-23.154h4.444c5.264 0 9.531-4.479 9.532-10.004v-82.437z\",\n fill: \"url(#rightbanner_svg__rightbanner_svg__paint14_linear)\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#rightbanner_svg__rightbanner_svg__filter2_d)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 485,\n y: 737.1,\n width: 423,\n height: 295.099,\n rx: 17,\n transform: \"rotate(-180 485 737.1)\",\n fill: \"#2D2236\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 78.958,\n cy: 457.498,\n rx: 4.377,\n ry: 4.006,\n fill: \"#FF4040\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 93.361,\n cy: 457.498,\n rx: 4.377,\n ry: 4.006,\n fill: \"#FFC635\"\n }), /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 107.764,\n cy: 457.498,\n rx: 4.377,\n ry: 4.006,\n fill: \"#5BFF40\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 484.851,\n width: 334.012,\n height: 10.312,\n rx: 5.156,\n fill: \"#4E3952\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 502.938,\n width: 218.747,\n height: 10.312,\n rx: 5.156,\n fill: \"#4E3952\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 557.197,\n width: 18.667,\n height: 10.312,\n rx: 5.156,\n fill: \"#4B78BB\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 112.14,\n y: 557.197,\n width: 165.457,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 575.283,\n width: 74.513,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 221.232,\n y: 575.283,\n width: 33.045,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 204.1,\n y: 575.283,\n width: 11.167,\n height: 10.312,\n rx: 5.156,\n fill: \"#FF4B6B\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 593.37,\n width: 55.127,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 611.456,\n width: 35.437,\n height: 10.312,\n rx: 5.156,\n fill: \"#4B78BB\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 165.969,\n y: 611.456,\n width: 115.219,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 122.568,\n y: 628.721,\n width: 150.536,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 277.598,\n y: 646.799,\n width: 70.991,\n height: 10.312,\n rx: 5.156,\n fill: \"#D2D2D2\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 521.263,\n width: 44.183,\n height: 10.312,\n rx: 5.156,\n fill: \"#FF4B77\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 140.287,\n y: 521.263,\n width: 98.9,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 539.35,\n width: 44.183,\n height: 10.312,\n rx: 5.156,\n fill: \"#FF4B6B\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 140.287,\n y: 539.35,\n width: 62.282,\n height: 10.312,\n rx: 5.156,\n fill: \"#DBC1D5\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 88.984,\n y: 650.095,\n width: 76.292,\n height: 10.312,\n rx: 5.156,\n fill: \"#D2D2D2\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint0_linear\",\n x1: 241.592,\n y1: 551.853,\n x2: 16.202,\n y2: 551.853,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint1_linear\",\n x1: 250.536,\n y1: 97.088,\n x2: 94.254,\n y2: 97.088,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint2_linear\",\n x1: 104.331,\n y1: 753.97,\n x2: 0.489,\n y2: 753.97,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint3_linear\",\n x1: 300.644,\n y1: 250.679,\n x2: 497.538,\n y2: 250.679,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint4_linear\",\n x1: 88.711,\n y1: 402.267,\n x2: 203.244,\n y2: 402.267,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF4789\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C548FF\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint5_linear\",\n x1: 108.335,\n y1: 0,\n x2: 108.335,\n y2: 396.522,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FFA5C5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.094,\n stopColor: \"#ED6A91\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.839,\n stopColor: \"#BC3997\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C0229D\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint6_linear\",\n x1: 103.793,\n y1: 0,\n x2: 33.856,\n y2: 393.366,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#481330\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.297,\n stopColor: \"#8E285F\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#481330\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint7_linear\",\n x1: 93.825,\n y1: 0,\n x2: 93.825,\n y2: 371.336,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#F3AEFF\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#C1BBFE\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint9_linear\",\n x1: 0,\n y1: 3.966,\n x2: 93.83,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF67CC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF9178\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint10_linear\",\n x1: 0,\n y1: 3.966,\n x2: 66.529,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF67CC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF9178\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint11_linear\",\n x1: 0,\n y1: 3.966,\n x2: 84.068,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF67CC\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF9178\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint12_linear\",\n x1: 0,\n y1: 3.966,\n x2: 48.232,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF878A\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#D090E4\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint13_linear\",\n x1: 0,\n y1: 3.966,\n x2: 48.232,\n y2: 3.966,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#FF878A\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#D090E4\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint14_linear\",\n x1: 52.001,\n y1: 238.619,\n x2: 422.517,\n y2: 238.619,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#FDA6FF\",\n stopOpacity: 0.13\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.25,\n stopColor: \"#ECE3FF\",\n stopOpacity: 0.46\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#AFBCFF\",\n stopOpacity: 0.47\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"rightbanner_svg__rightbanner_svg__filter0_d\",\n x: 28.67,\n y: 115.67,\n width: 467.669,\n height: 263.329,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n \"in\": \"SourceAlpha\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", null), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 11.665\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0.154715 0 0 0 0 0.0969792 0 0 0 0 0.175 0 0 0 0.43 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n \"in\": \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"rightbanner_svg__rightbanner_svg__filter1_d\",\n x: 113.645,\n y: 167.954,\n width: 178.69,\n height: 177.449,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n \"in\": \"SourceAlpha\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 9.343\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 8.793\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0.254133 0 0 0 0 0.11 0 0 0 0 0.266667 0 0 0 0.24 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n \"in\": \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"filter\", {\n id: \"rightbanner_svg__rightbanner_svg__filter2_d\",\n x: 15,\n y: 435,\n width: 481,\n height: 353.1,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n \"in\": \"SourceAlpha\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dx: -18,\n dy: 22\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 14.5\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n values: \"0 0 0 0 0.183333 0 0 0 0 0.0863195 0 0 0 0 0.127065 0 0 0 0.42 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n \"in\": \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"rightbanner_svg__rightbanner_svg__paint8_radial\",\n cx: 0,\n cy: 0,\n r: 1,\n gradientUnits: \"userSpaceOnUse\",\n gradientTransform: \"matrix(1.38995 3.62382 -3.81126 1.46185 90.904 220.248)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#fff\",\n stopOpacity: 0.31\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#fff\",\n stopOpacity: 0\n })))));\n}\n\nexport default __webpack_public_path__ + \"static/rightbanner-6b7316feac0926c26187df4f67a8cf83.svg\";\nexport { SvgRightbanner as ReactComponent };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Container from '@material-ui/core/Container';\n\nimport leftBanner from './leftbanner.svg';\nimport rightBanner from './rightbanner.svg';\nimport wordmark from '../../images/logo-wordmark-gradient.svg';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tbackgroundColor: '#FADDFF'\n\t},\n\tcontent: {\n\t\tdisplay: 'flex',\n\t\tposition: 'relative',\n\t\talignItems: 'center',\n\t\tmargin: 'auto',\n\t\toverflow: 'unset',\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tmaxWidth: '370px'\n\t\t}\n\t},\n\tleftBanner: {\n\t\twidth: 310,\n\t\t[theme.breakpoints.down('sm')]: {\n\t\t\twidth: 240\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: 180\n\t\t}\n\t},\n\twordmark: {\n\t\twidth: 310,\n\t\toverflow: 'auto',\n\t\t[theme.breakpoints.down('sm')]: {\n\t\t\twidth: 240\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: 180,\n\t\t\tdisplay: 'block'\n\t\t}\n\t},\n\trightBanner: {\n\t\twidth: 310,\n\t\t[theme.breakpoints.down('sm')]: {\n\t\t\twidth: 240\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\twidth: 180,\n\t\t\tdisplay: 'none'\n\t\t}\n\t}\n});\n\nfunction LeftBanner({ classes }) {\n\treturn (\n\t\t\n\t);\n}\n\nLeftBanner.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nfunction RightBanner({ classes }) {\n\treturn (\n\t\t\n\t);\n}\n\nRightBanner.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nfunction Wordmark({ classes }) {\n\treturn (\n\t\t\n\t);\n}\n\nWordmark.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nfunction Banner({ classes }) {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\n\t);\n}\n\nBanner.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(Banner);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Typography } from '@material-ui/core';\n\nimport { StaticImage } from 'gatsby-plugin-image';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tbackgroundColor: '#ffffff',\n\t\tpadding: theme.spacing(2, 0)\n\t},\n\tcontent: {\n\t\tdisplay: 'flex',\n\t\tjustifyContent: 'space-between',\n\t\tflexDirection: 'row-reverse',\n\t\talignItems: 'center'\n\t},\n\tdescription: {\n\t\ttextAlign: 'justify',\n\t\tflexBasis: '80%',\n\t\tflexGrow: 1\n\t},\n\ttitle: {\n\t\tfontFamily: theme.typography.fontFamily,\n\t\tfontWeight: 'bold',\n\t\tmargin: theme.spacing(2, 0)\n\t},\n\tlogo: {\n\t\tflexBasis: '15%',\n\t\tmarginLeft: theme.spacing(8),\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tdisplay: 'none'\n\t\t}\n\t}\n});\n\nconst hackDescription = `We are a student-run organization whose mission is to\nempower the community by providing the means to build amazing things and explore\nwhat is possible through code. We teach quarterly workshops and host events for\nstudents to expand their knowledge and apply their creativity to projects. Our\nevents are for coders of all skills levels, so whether you've been to 10 hackathons\n or you just learned \"Hello World,\" we're happy to have you.`;\n\nclass HackDescription extends React.Component {\n\trender() {\n\t\tconst { classes } = this.props;\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\tWhat is Hack?\n\t\t\t\t\t\n\t\t\t\t\t{hackDescription}\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n}\n\nHackDescription.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(HackDescription);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport LinkNoStyle from '../LinkNoStyle/LinkNoStyle';\n\nimport { Card, CardActionArea, CardContent, Typography } from '@material-ui/core';\n\nconst styles = theme => ({\n\tcard: {\n\t\theight: '100%'\n\t},\n\tlink: {\n\t\theight: 'inherit'\n\t},\n\tcardActionArea: {\n\t\theight: 'inherit'\n\t},\n\ttitle: {\n\t\tcolor: '#000000',\n\t\tfontFamily: ['Poppins', 'sans-serif'],\n\t\tfontSize: theme.typography.fontSize * 1.3,\n\t\tlineHeight: 1.2,\n\t\tfontWeight: 600\n\t},\n\tsubtitle: {\n\t\tcolor: '#000000',\n\t\tfontFamily: ['Poppins', 'sans-serif'],\n\t\tfontSize: theme.typography.fontSize * 0.9,\n\t\tlineHeight: 1.3\n\t},\n\texcerpt: {\n\t\tfontSize: theme.typography.fontSize * 0.9,\n\t\tcolor: '#0000008A'\n\t},\n\tinfo: {\n\t\tfontSize: theme.typography.fontSize * 0.9,\n\t\tcolor: '#0000008A',\n\t\tpadding: theme.spacing(1, 0, 0)\n\t}\n});\n\nfunction BlogListItem({ post, classes }) {\n\tconst { frontmatter, fields } = post;\n\treturn (\n\t\t/*\n\t\t\tTODO:\n\t\t\t\t- Remove shadow over button\n\t\t*/\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{frontmatter.title}\n\t\t\t\t\t\t{frontmatter.subtitle}\n\t\t\t\t\t\t{post.excerpt}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{frontmatter.date} | {post.timeToRead} min read\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nBlogListItem.propTypes = {\n\tpost: PropTypes.object.isRequired,\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(BlogListItem);\n\n\n","import { graphql, useStaticQuery } from 'gatsby';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport BlogListItem from './BlogListItem';\n\nconst styles = {\n\tlistItem: {\n\t\toverflowWrap: 'break-word'\n\t}\n};\n\nfunction BlogList({ classes }) {\n\tconst data = useStaticQuery(graphql`\n\t\tquery BlogListInfo {\n\t\t\tallMarkdownRemark(sort: {order: DESC, fields: frontmatter___date}, limit: 4) {\n\t\t\t\tnodes {\n\t\t\t\t\texcerpt(pruneLength: 120)\n\t\t\t\t\ttimeToRead\n\t\t\t\t\tfrontmatter {\n\t\t\t\t\t\tdate(formatString: \"MMMM D, YYYY\")\n\t\t\t\t\t\tsubtitle\n\t\t\t\t\t\ttitle\n\t\t\t\t\t}\n\t\t\t\t\tfields {\n\t\t\t\t\t\tslug\n\t\t\t\t\t}\n\t\t\t\t\tid\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`);\n\n\treturn \n\t\t{data.allMarkdownRemark.nodes.map(post =>\n\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t;\n}\n\nBlogList.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(BlogList);\n","import React from 'react';\nimport Grid from '@material-ui/core/Grid';\nimport { withStyles } from '@material-ui/core/styles';\nimport PropTypes from 'prop-types';\n\nimport EventCard from '../EventCard/EventCard';\n\nconst styles = theme => ({\n\tcontainer: {\n\t\tmarginLeft: theme.spacing(-2),\n\t\tmarginRight: theme.spacing(-2),\n\t\toverflowX: 'auto',\n\t\t// This enables momentum scrolling on iOS.\n\t\t// Read more about it in this link:\n\t\t// https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling\n\t\t'-webkit-overflow-scrolling': 'touch'\n\t},\n\titem: {\n\t\tposition: 'relative',\n\t\twidth: '260px',\n\t\theight: '420px',\n\t\tmargin: theme.spacing(2),\n\t\t// no grow and no shrink, meaning the component will stay the same width\n\t\tflex: '0 0 auto'\n\t}\n});\n\nfunction ScrollableEvents({\n\tclasses,\n\tevents\n}) {\n\tconst eventCards = events.map(e =>\n\t\t\n\t\t\t\n\t\t);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t{eventCards}\n\t\t\t\n\t\t
\n\t);\n}\n\nScrollableEvents.propTypes = {\n\tclasses: PropTypes.object.isRequired,\n\tevents: PropTypes.arrayOf(Object).isRequired\n};\n\nexport default withStyles(styles)(ScrollableEvents);\n","import { graphql, useStaticQuery } from 'gatsby';\nimport React from 'react';\n\nimport EmptyEventMessage from '../EmptyEventMessage/EmptyEventMessage';\nimport ScrollableEvents from '../ScrollableEvents/ScrollableEvents';\n\nfunction EventList() {\n\tconst data = useStaticQuery(graphql`\n\t\t{\n\t\t\tupcomingEvents: allHackEvent(sort: {fields: date}, filter: {past: {eq: false}}, limit: 3) {\n\t\t\t\tnodes {\n\t\t\t\t\t...HackEventForEventGrid\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t`);\n\tconst topEvents = data.upcomingEvents.nodes;\n\treturn topEvents.length === 0 ?\n\t\t :\n\t\t;\n}\n\nexport default EventList;\n","import { graphql, useStaticQuery } from 'gatsby';\nimport React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { GatsbyImage } from 'gatsby-plugin-image';\nimport PropTypes from 'prop-types';\nimport Slider from 'react-slick';\nimport 'slick-carousel/slick/slick.css';\nimport 'slick-carousel/slick/slick-theme.css';\nimport './gallery.css';\n\nconst styles = theme => ({\n\tcarouselImage: {\n\t\theight: '400px',\n\t\tposition: 'center',\n\t\tdisplay: 'block',\n\t\tmarginRight: 'auto',\n\t\tmarginLeft: 'auto',\n\t\tborderRadius: theme.shape.borderRadius * 2,\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\theight: '300px'\n\t\t}\n\t},\n\tcarouselContainer: {\n\t\tposition: 'center'\n\t}\n});\n\nfunction PhotoCarousel({ classes }) {\n\tconst data = useStaticQuery(graphql`{\n carouselPhotos: allFile(filter: {relativePath: {glob: \"carousel/*\"}}) {\n nodes {\n id\n childImageSharp {\n gatsbyImageData(layout: FULL_WIDTH)\n }\n }\n }\n}\n`);\n\n\tconst settings = {\n\t\tdots: true,\n\t\tinfinite: true,\n\t\tspeed: 800,\n\t\tslidesToShow: 1,\n\t\tslidesToScroll: 1,\n\t\tclassName: 'slides'\n\t};\n\n\tconst images = data.carouselPhotos.nodes.map(node => {\n\t\treturn (\n\t\t\t\n\t\t);\n\t});\n\n\treturn (\n\t\t\n\t\t\t{images}\n\t\t\n\t);\n}\n\nPhotoCarousel.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(PhotoCarousel);\n\n\n","var _defs, _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPigeon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 956.62 550.52\"\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient\",\n x1: 285,\n y1: 57.53,\n x2: 91.9,\n y2: 58.89,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#c137d8\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.3,\n stopColor: \"#c23bdc\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.64,\n stopColor: \"#c449e9\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.98,\n stopColor: \"#c95efe\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#c960ff\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-2\",\n x1: 340,\n y1: 92.53,\n x2: 146.9,\n y2: 93.89,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-3\",\n x1: 366.49,\n y1: 128.68,\n x2: 203.56,\n y2: 129.83,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-4\",\n x1: 369.09,\n y1: 164.87,\n x2: 243.04,\n y2: 165.76,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-5\",\n x1: 372.77,\n y1: 201.09,\n x2: 288.96,\n y2: 201.68,\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-6\",\n x1: 399.34,\n y1: 42.05,\n x2: 217.85,\n y2: 43.33,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-7\",\n x1: 451.03,\n y1: 74.95,\n x2: 269.55,\n y2: 76.22,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-8\",\n x1: 475.93,\n y1: 108.93,\n x2: 322.8,\n y2: 110,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-9\",\n x1: 478.37,\n y1: 142.94,\n x2: 359.9,\n y2: 143.77,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-10\",\n x1: 481.83,\n y1: 176.98,\n x2: 403.06,\n y2: 177.53,\n gradientTransform: \"scale(-1 1) rotate(7 -195.86 -9020.34)\",\n xlinkHref: \"#pigeon_svg__pigeon_svg__linear-gradient\"\n }), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-11\",\n x1: 411.95,\n y1: 60.08,\n x2: 513.74,\n y2: 362.47,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.11,\n stopColor: \"#c960ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.36,\n stopColor: \"#c65dfc\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.59,\n stopColor: \"#be52f1\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.79,\n stopColor: \"#b041df\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#9c29c6\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#9c28c5\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"pigeon_svg__pigeon_svg__linear-gradient-12\",\n x1: 385.16,\n y1: 393.65,\n x2: 385.16,\n y2: 257.65,\n gradientTransform: \"rotate(-12.37 472.643 400.108)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ff477e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#c137d8\"\n })), /*#__PURE__*/React.createElement(\"style\", null, \".pigeon_svg__pigeon_svg__cls-2{fill:#c137d8}\"))), /*#__PURE__*/React.createElement(\"g\", {\n style: {\n isolation: \"isolate\"\n }\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"pigeon_svg__pigeon_svg__Layer_2\",\n \"data-name\": \"Layer 2\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"pigeon_svg__pigeon_svg__Layer_5\",\n \"data-name\": \"Layer 5\"\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"pigeon_svg__pigeon_svg__cls-2\",\n d: \"M206 40.84c4.58 0 107.59-3 122.09 0s43.5 42.63 58 56.51 44.26 25.78 59.6 25.13c0 0 4.5 91.86-23.74 128.54 0 0-55-18.91-72.49-39.65L206 40.84\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 40.52h288v36H136.35c15.3 0-136.35 0-136.35-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 75.52h288v36H191.35c15.3 0-136.35 0-136.35-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-2)\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126 111.52h243v36H241.05c12.95 0-115.05 0-115.05-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-3)\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M183 147.52h188v36h-99c10 0-89 0-89-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-4)\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249 183.52h125v36h-65.82c6.64 0-59.18 0-59.18-36z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-5)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"pigeon_svg__pigeon_svg__cls-2\",\n d: \"M764.39 23.85c-4.27.53-100.72 9.53-113.9 14s-35.7 44.74-47.64 59.35-38.35 29.11-52.74 30.25c0 0 6.31 86.21 36.85 117.21 0 0 49.18-23.94 63.09-45.29L764.39 23.85\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M956.53 0L687.85 32.93 692 66.51l141.44-17.34C819.17 50.92 960.64 33.58 956.53 0z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-6)\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M909.22 38.94L640.55 71.87l4.11 33.58 141.47-17.34c-14.26 1.75 127.21-15.59 123.09-49.17z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-7)\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M847.1 80.64l-226.69 27.78 4.11 33.58 119.37-14.63c-12.04 1.48 107.33-13.14 103.21-46.73z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-8)\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M798 120.74l-175.38 21.5 4.11 33.58 92.35-11.32c-9.27 1.14 83.08-10.17 78.92-43.76z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-9)\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M740.59 161.87L624 176.16l4.12 33.59 61.4-7.53c-6.22.78 55.18-6.76 51.07-40.35z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-10)\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M357.5 409c94.69 3.26 227.81-41 240.82-149.26C604 212.5 586.58 174.7 559.5 137c-32.68-45.47-42.43-70.8 23-81-31.08-6.21-27.2-53.81-67-54-42.74-.2-64 42.49-67.19 78.19-5.55 61.79-.91 127-33.81 170.81 0 0-30 32-55 33z\",\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-11)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n width: 431,\n height: 361,\n transform: \"translate(161 189.52)\",\n xlinkHref: \"data:image/png;base64,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\",\n style: {\n mixBlendMode: \"multiply\"\n },\n opacity: 0.2\n }), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n transform: \"rotate(-12.37 376.606 370.094)\",\n fill: \"#9c28c5\",\n d: \"M238 277.52h277v185H238z\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"pigeon_svg__pigeon_svg__cls-2\",\n d: \"M261.04 490.05l270.56-59.36-115.18-64.57-77.97 17.1-77.41 106.83z\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#pigeon_svg__pigeon_svg__linear-gradient-12)\",\n d: \"M386.31 412.4L221.4 309.35l270.56-59.36L386.31 412.4z\"\n }))))));\n}\n\nexport default __webpack_public_path__ + \"static/pigeon-be8b99d597787fda8646b6c256d3bfb9.svg\";\nexport { SvgPigeon as ReactComponent };","import React from 'react';\nimport Pigeon from './pigeon.svg';\n\nfunction HackPigeon(props) {\n\treturn (\n\t\t
\n\t\t\t\"\"\n\t\t
\n\t);\n}\n\nexport default HackPigeon;\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles } from '@material-ui/core/styles';\nimport StayConnectedBtn from './StayConnectedBtn';\nimport HackPigeon from './HackPigeon';\n\nconst useStyles = makeStyles(theme => ({\n\tbanner: {\n\t\tpadding: theme.spacing(5, 0)\n\t},\n\tdescription: {\n\t\tmarginBottom: theme.spacing(2)\n\t},\n\tpigeonContainer: {\n\t\tposition: 'relative'\n\t},\n\tpigeon: {\n\t\tposition: 'absolute',\n\t\ttop: '50%',\n\t\tleft: '50%',\n\t\ttransform: 'translate(-40%, -50%)',\n\t\twidth: '100%'\n\t},\n\tjoinButton: {\n\t\tmarginBottom: theme.spacing(5)\n\t}\n}));\n\nconst discordDescription = 'Join the ACM Hack Discord to get live announcements about upcoming events';\nconst discordLink = 'https://discord.gg/3GSPECbCnE';\nconst discordBtnText = 'Join The ACM Hack Discord';\n\nfunction StayConnectedBanner() {\n\tconst classes = useStyles();\n\treturn (\n\t\t
\n\t\t\tStay Connected\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{discordDescription}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n}\n\nexport default StayConnectedBanner;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { withStyles } from '@material-ui/core/styles';\nimport useTheme from '@material-ui/core/styles/useTheme';\nimport Box from '@material-ui/core/Box';\nimport Container from '@material-ui/core/Container';\nimport Link from '@material-ui/core/Link';\nimport Typography from '@material-ui/core/Typography';\nimport MuiAccordion from '@material-ui/core/Accordion';\nimport MuiAccordionSummary from '@material-ui/core/AccordionSummary';\nimport MuiAccordionDetails from '@material-ui/core/AccordionDetails';\nimport makeStyles from '@material-ui/core/styles/makeStyles';\n\nimport Add from '@material-ui/icons/Add';\nimport Remove from '@material-ui/icons/Remove';\n\n\nconst Accordion = withStyles(theme => ({\n\troot: {\n\t\tbackgroundColor: theme.palette.grey[50],\n\t\tboxShadow: 'none',\n\t\tborderColor: theme.palette.grey[400],\n\t\tborderTopWidth: 2,\n\t\tborderTopStyle: 'solid',\n\t\t'&:last-child': {\n\t\t\tborderBottomWidth: 2,\n\t\t\tborderBottomStyle: 'solid'\n\t\t},\n\t\t'&::before': {\n\t\t\tdisplay: 'none'\n\t\t},\n\t\t'&$expanded': {\n\t\t\tmargin: 0\n\t\t}\n\t},\n\texpanded: {}\n}))(MuiAccordion);\n\nconst AccordionSummary = withStyles(theme => ({\n\troot: {\n\t\tminHeight: 'auto',\n\t\t'&$expanded': {\n\t\t\tminHeight: 'auto'\n\t\t},\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tpaddingLeft: theme.spacing(1),\n\t\t\tpaddingRight: theme.spacing(1)\n\t\t}\n\t},\n\tcontent: {\n\t\tmargin: '12px 0',\n\t\t'&$expanded': {\n\t\t\tmargin: '12px 0'\n\t\t}\n\t},\n\texpanded: {}\n}))(MuiAccordionSummary);\n\nconst AccordionDetails = withStyles(theme => ({\n\troot: {\n\t\tpaddingBottom: theme.spacing(6),\n\t\t[theme.breakpoints.down('xs')]: {\n\t\t\tpaddingBottom: theme.spacing(4),\n\t\t\tpaddingLeft: theme.spacing(1),\n\t\t\tpaddingRight: theme.spacing(1)\n\t\t}\n\t}\n}))(MuiAccordionDetails);\n\nconst useStyles = makeStyles(theme => ({\n\tquestion: {\n\t\tfontWeight: theme.typography.fontWeightMedium,\n\t\tcolor: theme.palette.secondary.main,\n\t\tfontFamily: theme.typography.fontFamily\n\t}\n}));\n\nfunction AccordionQA({ index, question, answer }) {\n\tconst [expanded, setExpanded] = useState(false);\n\tconst classes = useStyles();\n\tconst panelName = 'faqPanel' + index;\n\tconst theme = useTheme();\n\n\treturn (\n\t\t setExpanded(e => !e)}>\n\t\t\t : }\n\t\t\t\taria-controls={panelName + '-content'}\n\t\t\t\tid={panelName + '-header'}>\n\t\t\t\t\n\t\t\t\t\t{question}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{answer}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nAccordionQA.propTypes = {\n\tquestion: PropTypes.node.isRequired,\n\tanswer: PropTypes.node.isRequired,\n\tindex: PropTypes.number.isRequired\n};\n\nfunction FAQSection() {\n\tconst faqs = [\n\t\t{\n\t\t\tquestion: `Where do I find the ACM YouTube channel?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tWe post all recordings of our workshops on the ACM YouTube channel, which can be found here!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `How do I participate?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tWe recommend attending some of our events or asking us questions in\n\t\t\t\t\tthe ACM Hack Discord. Check\n\t\t\t\t\tout the events page for more information about the events we're holding this quarter.\n\t\t\t\t\tEveryone is welcome!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `Your past workshops seem interesting, how can I learn more?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tCheck out the archive page, where\n\t\t\t\t\twe keep a record of all of our past workshops!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `How do I join your team?`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tWe start recruitment for internship positions every\n\t\t\t\t\tfall, following the ACM general meeting (which you should attend)!\n\t\t\t\t\tAfter a quarter of shadowing officers, interns\n\t\t\t\t\tmay have the opportunity to become full-time officers.\n\t\t\t\t\tAll of our current officers started as interns and we\n\t\t\t\t\thighly encourage you to look out for applications in the fall!\n\t\t\t\t\n\t\t},\n\t\t{\n\t\t\tquestion: `I have some other questions.`,\n\t\t\tanswer:\n\t\t\t\t<>\n\t\t\t\t\tSend us an email at hack@uclaacm.com or\n\t\t\t\t\tmessage us through the ACM Hack Discord!\n\t\t\t\t\n\t\t}\n\t];\n\n\tconst theme = useTheme();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFAQ\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tFrequently Asked Questions\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{faqs.map((faq, i) => )}\n\t\t\t\n\t\t\n\t);\n}\n\nexport default FAQSection;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Button, Container, Typography } from '@material-ui/core';\nimport { withStyles } from '@material-ui/core/styles';\nimport TalkBubbleIcon from '@material-ui/icons/ModeCommentTwoTone';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForwardIos';\nimport EventAvailableIcon from '@material-ui/icons/EventAvailableTwoTone';\n\nimport LinkNoStyle from '../LinkNoStyle/LinkNoStyle';\nimport Announcement from './Announcement';\nimport Banner from './Banner';\nimport HackDescription from './HackDescription';\nimport BlogList from './BlogList';\nimport EventList from './EventList';\nimport Carousel from './Carousel';\nimport StayConnectedBanner from './StayConnectedBanner';\nimport FAQSection from './FAQSection';\n\nconst styles = theme => ({\n\theading: {\n\t\tmargin: theme.spacing(4, 0, 0, 0),\n\t\tfontFamily: theme.typography.fontFamily,\n\t\tfontWeight: 'bold',\n\t\t// align icon with text\n\t\tdisplay: 'flex',\n\t\talignItems: 'center'\n\t},\n\theadingIcon: {\n\t\tmarginRight: theme.spacing(1),\n\t\tfontSize: 'inherit'\n\t},\n\tforwardArrow: {\n\t\tmarginLeft: theme.spacing(1),\n\t\tfontSize: theme.typography.fontSize * 0.75\n\t},\n\tviewAllBtn: {\n\t\tmargin: theme.spacing(2, 0)\n\t},\n\twhiteContainer: {\n\t\tpadding: theme.spacing(2, 0),\n\t\toverflow: 'hidden',\n\t\tbackgroundColor: '#ffffff'\n\t},\n\ttransparentContainer: {\n\t\tpadding: theme.spacing(2, 0),\n\t\toverflow: 'hidden'\n\t}\n});\n\nfunction HomePageComponent({ classes }) {\n\tconst IconHeading = ({ Icon, children }) =>\n\t\t\n\t\t\t\n\t\t\t{children}\n\t\t;\n\tIconHeading.propTypes = {\n\t\tIcon: PropTypes.elementType.isRequired,\n\t\tchildren: PropTypes.node\n\t};\n\n\tconst ViewAllButton = ({ to, children }) =>\n\t\t\n\t\t\t\n\t\t;\n\tViewAllButton.propTypes = {\n\t\tto: PropTypes.string.isRequired,\n\t\tchildren: PropTypes.node\n\t};\n\n\tconst Container1 = props =>\n\t\t
\n\t\t\t\n\t\t
;\n\n\tconst Container2 = props =>\n\t\t
\n\t\t\t\n\t\t
;\n\n\treturn \n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\n\n\t\t\n\t\t\tEvents\n\t\t\tView all events\n\t\t\t\n\t\t\n\n\t\t\n\t\t\tBlog posts\n\t\t\tView all blog posts\n\t\t\t\n\t\t\n\n\t\t\n\t\t\t\n\t\t\n\t\t\n\n\t;\n}\n\nHomePageComponent.propTypes = {\n\tclasses: PropTypes.object.isRequired\n};\n\nexport default withStyles(styles)(HomePageComponent);\n","import React from 'react';\n\nimport HeadFooter from '../components/HeadFooter/HeadFooter';\nimport HomePageComponent from '../components/HomePage/HomePage';\nimport SEO from '../components/SEO';\n\nfunction HomePage() {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}\n\nexport default HomePage;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;"],"names":["Object","defineProperty","exports","value","_default","A100","A200","A400","A700","black","white","CardActionArea","props","ref","children","classes","className","focusVisibleClassName","other","root","focusVisible","focusHighlight","theme","display","textAlign","width","opacity","palette","action","hoverOpacity","overflow","pointerEvents","position","top","right","bottom","left","borderRadius","backgroundColor","transition","transitions","create","duration","short","name","hexToRgb","rgbToHex","color","indexOf","values","decomposeColor","concat","map","n","hex","toString","length","join","hslToRgb","recomposeColor","getContrastRatio","foreground","background","lumA","getLuminance","lumB","Math","max","min","emphasize","coefficient","arguments","undefined","darken","lighten","fade","alpha","_utils","clamp","substr","re","RegExp","colors","match","index","parseInt","round","h","s","l","a","f","k","type","rgb","push","charAt","marker","substring","Error","formatMuiErrorMessage","split","parseFloat","i","val","pow","Number","toFixed","_interopRequireDefault","breakpoints","_breakpoints$values","xs","sm","md","lg","xl","_breakpoints$unit","unit","_breakpoints$step","step","_objectWithoutProperties2","default","up","key","between","start","end","endIndex","keys","_extends2","down","upperbound","only","spacing","mixins","_toolbar","_extends3","gutters","styles","console","warn","paddingLeft","paddingRight","_defineProperty2","toolbar","minHeight","_palette$primary","primary","light","_indigo","main","dark","_palette$secondary","secondary","_pink","_palette$error","error","_red","_palette$warning","warning","_orange","_palette$info","info","_blue","_palette$success","success","_green","_palette$type","_palette$contrastThre","contrastThreshold","_palette$tonalOffset","tonalOffset","getContrastText","_colorManipulator","text","augmentColor","mainShade","lightShade","darkShade","_formatMuiErrorMessage","JSON","stringify","addLightOrDark","contrastText","types","deepmerge","common","_common","grey","_grey","disabled","hint","divider","paper","active","hover","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","icon","intent","direction","shade","tonalOffsetLight","tonalOffsetDark","hasOwnProperty","spacingInput","mui","transform","_system","createUnarySpacing","_len","args","Array","_key","argument","output","get","createMuiTheme","createTheme","apply","_createBreakpoints","_createMixins","_createPalette","_createTypography","_shadows","_shape","_createSpacing","_transitions","_zIndex","options","_options$breakpoints","breakpointsInput","_options$mixins","mixinsInput","_options$palette","paletteInput","_options$typography","typography","typographyInput","muiTheme","overrides","shadows","shape","zIndex","reduce","acc","_ref","_ref$fontFamily","fontFamily","defaultFontFamily","_ref$fontSize","fontSize","_ref$fontWeightLight","fontWeightLight","_ref$fontWeightRegula","fontWeightRegular","_ref$fontWeightMedium","fontWeightMedium","_ref$fontWeightBold","fontWeightBold","_ref$htmlFontSize","htmlFontSize","allVariants","pxToRem2","pxToRem","coef","size","buildVariant","fontWeight","lineHeight","letterSpacing","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caseAllCaps","caption","overline","roundWithDeprecationWarning","clone","textTransform","_styles","_defaultTheme","stylesOrCreator","makeStyles","defaultTheme","createShadow","easing","easeInOut","easeOut","easeIn","sharp","shortest","shorter","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","_options$duration","durationOption","_options$easing","easingOption","_options$delay","delay","isArray","animatedProp","getAutoHeightDuration","height","constant","useTheme","mobileStepper","speedDial","appBar","drawer","modal","snackbar","tooltip","_interopRequireWildcard","React","createElement","d","Fragment","chainPropTypes","propType1","propType2","elementAcceptingRef","isRequired","exactProp","propTypes","fnNameMatchRegex","getFunctionName","fn","getFunctionComponentName","Component","fallback","displayName","getWrappedName","outerType","innerType","wrapperName","functionName","getDisplayName","$$typeof","ForwardRef","render","Memo","HTMLElementType","propName","componentName","location","propFullName","window","self","Function","b","c","e","g","m","p","q","r","u","v","w","Symbol","for","x","y","t","B","C","D","E","F","G","H","I","module","QueryHandler","each","MediaQuery","query","isUnconditional","this","handlers","mql","matchMedia","listener","currentTarget","assess","addListener","prototype","constuctor","addHandler","handler","qh","matches","on","removeHandler","equals","destroy","splice","clear","removeListener","Util","isFunction","MediaQueryDispatch","queries","browserIsIncapable","constructor","register","shouldDegrade","unregister","deferSetup","setup","initialised","off","unmatch","target","collection","camel2hyphen","obj2mq","obj","mq","features","forEach","feature","test","isDimension","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","now","Date","isObject","toNumber","isObjectLike","call","isSymbol","valueOf","replace","isBinary","slice","func","wait","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","thisArg","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","clearTimeout","flush","NextArrow","PrevArrow","_react","_classnames","_innerSliderUtils","__esModule","_typeof","iterator","_extends","assign","source","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","configurable","writable","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","getPrototypeOf","_React$PureComponent","_super","preventDefault","clickHandler","prevClasses","prevHandler","bind","message","infinite","currentSlide","slideCount","slidesToShow","prevArrowProps","style","onClick","customProps","prevArrow","cloneElement","PureComponent","_React$PureComponent2","_super2","nextClasses","nextHandler","canGoNext","nextArrowProps","nextArrow","accessibility","adaptiveHeight","afterChange","appendDots","dots","arrows","autoplay","autoplaySpeed","beforeChange","centerMode","centerPadding","cssEase","customPaging","dotsClass","draggable","edgeFriction","focusOnSelect","initialSlide","lazyLoad","onEdge","onInit","onLazyLoadError","onReInit","pauseOnDotsHover","pauseOnFocus","pauseOnHover","responsive","rows","rtl","slide","slidesPerRow","slidesToScroll","speed","swipe","swipeEvent","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","waitForAnimate","Dots","spec","_this$props","onMouseEnter","onMouseOver","onMouseLeave","dotCount","ceil","mouseEvents","_rightBound","rightBound","_leftBound","leftBound","dotOptions","animating","autoplaying","currentDirection","currentLeft","dragging","edgeDragged","initialized","lazyLoadedList","listHeight","listWidth","scrolling","slideHeight","slideWidth","swipeLeft","swiped","swiping","touchObject","startX","startY","curX","curY","trackStyle","trackWidth","targetSlide","InnerSlider","_initialState","_lodash","_track","_dots","_arrows","_resizeObserverPolyfill","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_React$Component","_this","list","track","elem","querySelector","state","getHeight","slidesToLoad","getOnDemandLazySlides","setState","prevState","onLazyLoad","listRef","trackRef","updateState","adaptHeight","autoPlay","lazyLoadTimer","setInterval","progressiveLazyLoad","ro","onWindowResized","callbackTimers","observe","document","querySelectorAll","onfocus","onSlideFocus","onblur","onSlideBlur","addEventListener","attachEvent","animationEndCallback","clearInterval","timer","removeEventListener","detachEvent","autoplayTimer","disconnect","prevProps","checkImagesLoad","setTrackStyle","didPropsChange","Children","count","changeSlide","pause","debouncedResize","resizeWindow","isTrackMounted","Boolean","node","callback","updatedState","initializedState","slideIndex","targetLeft","getTrackLeft","getTrackCSS","_trackWidth","_trackLeft","childrenWidths","preClones","getPreClones","postClones","getPostClones","child","_i","_i2","_trackStyle","currentWidth","childrenCount","trackLeft","images","imagesCount","loadedCount","image","onclick","prevClickHandler","parentNode","onload","onerror","_index","dontAnimate","asNavFor","_slideHandler","slideHandler","nextState","asNavForIndex","innerSlider","firstBatch","nodes","clickable","stopPropagation","dir","keyHandler","ontouchmove","event","returnValue","verticalSwiping","disableBodyScroll","swipeStart","swipeMove","swipeEnd","triggerSlideHandler","enableBodyScroll","isNaN","nextIndex","playType","play","pauseType","trackProps","extractObject","onTrackOver","onTrackLeave","selectHandler","dotProps","onDotsLeave","onDotsOver","arrowProps","verticalHeightStyle","centerPaddingStyle","padding","listStyle","listProps","onMouseDown","onMouseMove","onMouseUp","onTouchStart","onTouchMove","onTouchEnd","touchEnd","onTouchCancel","onKeyDown","innerSliderProps","unslick","listRefHandler","Track","trackRefHandler","ssrState","ssrInit","_i3","_Object$keys","_innerSlider","_json2mq","_defaultProps","enquire","canUseDOM","Slider","slickPrev","slickNext","slickGoTo","breakpoint","_responsiveMediaHandlers","_this2","breakpt","sort","bQuery","minWidth","maxWidth","media","settings","newProps","_this3","resp","toArray","trim","newChildren","newSlide","j","row","tabIndex","innerSliderRefHandler","getSlideClasses","slickActive","slickCenter","slickCloned","centerOffset","floor","getKey","fallbackKey","renderSlides","slides","preCloneSlides","postCloneSlides","startIndex","lazyStartIndex","lazyEndIndex","childOnClickOptions","childStyle","getSlideStyle","slideClass","slideClasses","outline","preCloneNo","reverse","handleRef","slidesOnLeft","slidesOnRight","siblingDirection","getTotalSlides","getTrackAnimateCSS","checkSpecKeys","getSlideCount","checkNavigable","getNavigableIndexes","getSwipeDirection","getWidth","lazySlidesOnRight","lazySlidesOnLeft","getRequiredLazySlides","safePreventDefault","number","lowerBound","upperBound","includes","_reactName","onDemandSlides","requiredSlides","offsetWidth","offsetHeight","xDist","yDist","swipeAngle","atan2","PI","abs","canGo","newObject","listNode","trackNode","centerPaddingAdj","finalSlide","animationLeft","finalLeft","animationSlide","indexOffset","previousInt","slideOffset","previousTargetSlide","tagName","keyCode","touches","pageX","clientX","pageY","clientY","curLeft","swipeLength","sqrt","verticalSwipeLength","positionOffset","swipeDirection","touchSwipeLength","onSwipe","minSwipe","activeSlide","counter","indexes","navigables","prevNavigable","swipedSlide","slickList","from","every","offsetTop","offsetLeft","currentIndex","dataset","keysArray","trackHeight","trackChildren","WebkitTransition","WebkitTransform","msTransform","marginTop","marginLeft","slidesToOffset","targetSlideIndex","trackElem","childNodes","_ref2","hasOwn","classNames","arg","argType","inner","MapShim","Map","getIndex","arr","some","entry","class_1","__entries__","set","delete","entries","has","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","requestAnimationFrame","transitionKeys","mutationObserverSupported","MutationObserver","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","throttle","addObserver","observer","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","attributes","childList","characterData","subtree","_b","propertyName","getInstance","instance_","defineConfigurable","getWindowOf","ownerDocument","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","clientWidth","clientHeight","getComputedStyle","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","documentElement","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","rect","broadcastRect","ResizeObserverEntry","rectInit","Constr","contentRect","DOMRectReadOnly","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","Element","observations","unobserve","clearActive","observation","WeakMap","ResizeObserver","method","str","toLowerCase","withStyles","container","justifyContent","card","borderColor","boxShadow","animation","backgroundSize","backgroundPosition","content","paddingTop","paddingBottom","forwardArrow","grid","alignItems","item","url","useStaticQuery","allMarkdownRemark","fields","slug","Grid","Card","variant","LinkNoStyle","to","CardContent","Typography","LeftBanner","leftBanner","src","RightBanner","rightBanner","Wordmark","wordmark","margin","Container","HackDescription","S","logo","placeholder","quality","alt","description","title","flexDirection","flexBasis","flexGrow","link","cardActionArea","subtitle","excerpt","post","frontmatter","date","timeToRead","listItem","overflowWrap","data","id","marginRight","overflowX","flex","eventCards","events","EventCard","wrap","gridList","topEvents","upcomingEvents","EmptyEventMessage","carouselImage","carouselContainer","carouselPhotos","childImageSharp","gatsbyImageData","Pigeon","useStyles","banner","marginBottom","pigeonContainer","pigeon","joinButton","paragraph","StayConnectedBtn","Accordion","borderTopWidth","borderTopStyle","borderBottomWidth","borderBottomStyle","expanded","MuiAccordion","AccordionSummary","MuiAccordionSummary","AccordionDetails","MuiAccordionDetails","question","AccordionQA","answer","useState","setExpanded","panelName","square","onChange","expandIcon","Remove","Add","faqs","Link","href","Box","component","paddingY","bgcolor","faq","heading","headingIcon","viewAllBtn","whiteContainer","transparentContainer","IconHeading","Icon","ViewAllButton","Button","Container1","Container2","Carousel","EventAvailableIcon","TalkBubbleIcon","HeadFooter","SEO","HomePage","objectWithoutPropertiesLoose"],"sourceRoot":""} \ No newline at end of file diff --git a/events/index.html b/events/index.html index a9295e0dd..ecc39f280 100644 --- a/events/index.html +++ b/events/index.html @@ -48,7 +48,7 @@ } } }) -

HackEvents

+

HackEvents

Hack offers workshops that focus on practical application, such as web development and mobile development. We also host fun one-time activities such as UCLA's biggest beginner-friendly Hackathon, Hack on the Hill. Regardless of @@ -67,4 +67,4 @@ connections with people of similar interests, play games, and learn from each other. Whether you're looking for mentorship or a community, Hack Fam is the pick of the patch! -

Can't wait to hack with us?

See our event schedule 📅

Upcoming

Hackschool #3: Events and State

Thursday at 6:00 PM · Kaplan Hall A65

Hackschool #4: Navigation

11/02/2023 · Kaplan Hall A65

Hackschool #5: Servers

11/09/2023 · Kaplan Hall A65

Gaming Social

11/15/2023 · Ackerman Bruin Reception Room

Hackschool #6: APIs + Copilot / GPT

11/16/2023 · Kaplan Hall A65

Hackschool #7: Showcase

11/30/2023 · Kaplan Hall A65

Closing Ceremony

12/06/2023 · Ackerman Bruin Reception Room

Past

Arts and Crafts Social

Yesterday at 2:00 PM · Ouside of Saxon Lounge

Hackschool #2: Intro to React

Last Thursday at 6:00 PM · Kaplan Hall A65

Hackschool #1: Intro to HTML/CSS/JS

10/12/2023 · Kaplan Hall A65

Hack Fam Head Reveal

10/09/2023 · Ackerman Bruin Reception Room

Meet the Hack Fam Heads

10/06/2023 · Courtyard in front of Royce Hall

ACM Hack Fall GM

10/05/2023 · Kaplan Hall A65
\ No newline at end of file +

Can't wait to hack with us?

See our event schedule 📅

Upcoming

Hackschool #3: Events and State

Thursday at 6:00 PM · Kaplan Hall A65

Hackschool #4: Navigation

11/02/2023 · Kaplan Hall A65

Hackschool #5: Servers

11/09/2023 · Kaplan Hall A65

Gaming Social

11/15/2023 · Ackerman Bruin Reception Room

Hackschool #6: APIs + Copilot / GPT

11/16/2023 · Kaplan Hall A65

Hackschool #7: Showcase

11/30/2023 · Kaplan Hall A65

Closing Ceremony

12/06/2023 · Ackerman Bruin Reception Room

Past

Arts and Crafts Social

Yesterday at 2:00 PM · Ouside of Saxon Lounge

Hackschool #2: Intro to React

Last Thursday at 6:00 PM · Kaplan Hall A65

Hackschool #1: Intro to HTML/CSS/JS

10/12/2023 · Kaplan Hall A65

Hack Fam Head Reveal

10/09/2023 · Ackerman Bruin Reception Room

Meet the Hack Fam Heads

10/06/2023 · Courtyard in front of Royce Hall

ACM Hack Fall GM

10/05/2023 · Kaplan Hall A65
\ No newline at end of file diff --git a/index.html b/index.html index d1725c7f9..a41a1c465 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Home | UCLA ACM HackHome | UCLA ACM Hack
Hack Logo

What is Hack?

We are a student-run organization whose mission is to +

Hack Logo

What is Hack?

We are a student-run organization whose mission is to empower the community by providing the means to build amazing things and explore what is possible through code. We teach quarterly workshops and host events for students to expand their knowledge and apply their creativity to projects. Our events are for coders of all skills levels, so whether you've been to 10 hackathons - or you just learned "Hello World," we're happy to have you.

Stay Connected

Join the ACM Hack Discord to get live announcements about upcoming events

Join The ACM Hack Discord

Events

Hackschool #3: Events and State

Thursday at 6:00 PM · Kaplan Hall A65

Hackschool #4: Navigation

11/02/2023 · Kaplan Hall A65

Hackschool #5: Servers

11/09/2023 · Kaplan Hall A65

FAQ

Frequently Asked Questions

We post all recordings of our workshops on the ACM YouTube channel, which can be found here!

We recommend attending some of our events or asking us questions in the ACM Hack Discord. Check out the events page for more information about the events we're holding this quarter. Everyone is welcome!

Check out the archive page, where we keep a record of all of our past workshops!

We start recruitment for internship positions every fall, following the ACM general meeting (which you should attend)! After a quarter of shadowing officers, interns may have the opportunity to become full-time officers. All of our current officers started as interns and we highly encourage you to look out for applications in the fall!

Send us an email at hack@uclaacm.com or message us through the ACM Hack Discord!

\ No newline at end of file + or you just learned "Hello World," we're happy to have you.

Stay Connected

Join the ACM Hack Discord to get live announcements about upcoming events

Join The ACM Hack Discord

Events

Hackschool #3: Events and State

Thursday at 6:00 PM · Kaplan Hall A65

Hackschool #4: Navigation

11/02/2023 · Kaplan Hall A65

Hackschool #5: Servers

11/09/2023 · Kaplan Hall A65

FAQ

Frequently Asked Questions

We post all recordings of our workshops on the ACM YouTube channel, which can be found here!

We recommend attending some of our events or asking us questions in the ACM Hack Discord. Check out the events page for more information about the events we're holding this quarter. Everyone is welcome!

Check out the archive page, where we keep a record of all of our past workshops!

We start recruitment for internship positions every fall, following the ACM general meeting (which you should attend)! After a quarter of shadowing officers, interns may have the opportunity to become full-time officers. All of our current officers started as interns and we highly encourage you to look out for applications in the fall!

Send us an email at hack@uclaacm.com or message us through the ACM Hack Discord!

\ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index 824be71f0..b2471f28c 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"e7fbc49423630b570032"} +{"webpackCompilationHash":"8468633e734c75d5f7f4"} diff --git a/posts/fall2018/hackschool-session-1/index.html b/posts/fall2018/hackschool-session-1/index.html index c562947b5..3b46aea4b 100644 --- a/posts/fall2018/hackschool-session-1/index.html +++ b/posts/fall2018/hackschool-session-1/index.html @@ -48,7 +48,7 @@ } } }) -

Hackschool: Intro to Web Development

Session 1

October 10, 2018

Location: Covel 227 +

Hackschool: Intro to Web Development

Session 1

October 10, 2018

Location: Covel 227 Time: 6-8pm

Teachers

    @@ -617,4 +617,4 @@

    example and its source code.

    The goal of the challenge is to play around and get a feel for HTML, CSS, and JavaScript. We didn’t cover anything in depth, so you’ll probably come across a lot of “Why is this happening??” moments. Those would be good times to ask mentors/submit questions so we can address it in the future.

    -

    The world of web development is really big, and the goal of this workshop was to understand what front-end web development, HTML, CSS, and JavaScript are. It takes a lot longer than just one workshop to learn web development, but we hope to give you a good foundation so you can develop your skills in the future--both throughout this quarter and beyond :)

\ No newline at end of file +

The world of web development is really big, and the goal of this workshop was to understand what front-end web development, HTML, CSS, and JavaScript are. It takes a lot longer than just one workshop to learn web development, but we hope to give you a good foundation so you can develop your skills in the future--both throughout this quarter and beyond :)

\ No newline at end of file diff --git a/posts/fall2018/hackschool-session-2/index.html b/posts/fall2018/hackschool-session-2/index.html index 8115e9f5c..2b207d065 100644 --- a/posts/fall2018/hackschool-session-2/index.html +++ b/posts/fall2018/hackschool-session-2/index.html @@ -48,7 +48,7 @@ } } }) -

Hackschool: Intro to Backend Development

Session 2

October 17, 2018

Location: Covel 227, UCLA

+ \ No newline at end of file +

Try changing app.listen(3000) to app.listen(8080). Now, we can only access our page at http://localhost:8080/mypage.

\ No newline at end of file diff --git a/posts/fall2018/hackschool-session-3-backend/index.html b/posts/fall2018/hackschool-session-3-backend/index.html index 0b1238435..52bc86548 100644 --- a/posts/fall2018/hackschool-session-3-backend/index.html +++ b/posts/fall2018/hackschool-session-3-backend/index.html @@ -48,7 +48,7 @@ } } }) -
\ No newline at end of file +

You have just written your first API!

\ No newline at end of file diff --git a/posts/fall2018/hackschool-session-3-frontend/index.html b/posts/fall2018/hackschool-session-3-frontend/index.html index fb668a6d8..c989e836e 100644 --- a/posts/fall2018/hackschool-session-3-frontend/index.html +++ b/posts/fall2018/hackschool-session-3-frontend/index.html @@ -48,7 +48,7 @@ } } }) -

Hackschool: Javascript and the DOM

Session 3 Frontend

October 24, 2018

Introduction

+

Hackschool: Javascript and the DOM

Session 3 Frontend

October 24, 2018

Introduction

This session we'll be making a super cool web page that shows a clock that changes color based on the current time. But first we need to understand exactly what this "DOM" thing is.

@@ -610,4 +610,4 @@

\ No newline at end of file +

Oh and by the way, do you happen to have the time? hahahahahaha

\ No newline at end of file diff --git a/posts/fall2019/js-chat-1/index.html b/posts/fall2019/js-chat-1/index.html index 4339b177b..d822cac6e 100644 --- a/posts/fall2019/js-chat-1/index.html +++ b/posts/fall2019/js-chat-1/index.html @@ -48,7 +48,7 @@ } } }) -
\ No newline at end of file +
\ No newline at end of file diff --git a/posts/fall2019/js-chats-2/index.html b/posts/fall2019/js-chats-2/index.html index bc9ba50bf..da32d6c75 100644 --- a/posts/fall2019/js-chats-2/index.html +++ b/posts/fall2019/js-chats-2/index.html @@ -48,7 +48,7 @@ } } }) -

Asynchronous JavaScript

JavaScript Chats with ACM Hack Session 2

October 14, 2019

    +
    \ No newline at end of file +amazing things they do.

\ No newline at end of file diff --git a/posts/fall2019/js-chats-3/index.html b/posts/fall2019/js-chats-3/index.html index 636b265f6..9782025f3 100644 --- a/posts/fall2019/js-chats-3/index.html +++ b/posts/fall2019/js-chats-3/index.html @@ -48,7 +48,7 @@ } } }) -

A Gentle Introduction to React Hooks

JavaScript Chats with ACM Hack Session 3

October 21, 2019

    +
    \ No newline at end of file +can also takes a function as a parameter.

\ No newline at end of file diff --git a/posts/fall2019/js-chats-4/index.html b/posts/fall2019/js-chats-4/index.html index 05aeb5854..9e33cdd07 100644 --- a/posts/fall2019/js-chats-4/index.html +++ b/posts/fall2019/js-chats-4/index.html @@ -48,7 +48,7 @@ } } }) -

Optimizing Frontend and React Apps

JavaScript Chats with ACM Hack Session 4

November 4, 2019

    +
    \ No newline at end of file +
\ No newline at end of file diff --git a/posts/fall2019/js-chats-5/index.html b/posts/fall2019/js-chats-5/index.html index 4056e8c04..5418ff6d2 100644 --- a/posts/fall2019/js-chats-5/index.html +++ b/posts/fall2019/js-chats-5/index.html @@ -48,7 +48,7 @@ } } }) -

Multi-threading in JavaScript: Worker Threads

JavaScript Chats with ACM Hack Session 5

November 11, 2019

    +
    \ No newline at end of file +to the main thread at once.

\ No newline at end of file diff --git a/posts/fall2019/js-chats-6/index.html b/posts/fall2019/js-chats-6/index.html index bd9bb5bb7..a8db9cf55 100644 --- a/posts/fall2019/js-chats-6/index.html +++ b/posts/fall2019/js-chats-6/index.html @@ -48,7 +48,7 @@ } } }) -

Introduction to Testing with JavaScript

JavaScript Chats with ACM Hack Session 6

November 19, 2019

In this session of JavaScript Chats, we will introduce +

Introduction to Testing with JavaScript

JavaScript Chats with ACM Hack Session 6

November 19, 2019

In this session of JavaScript Chats, we will introduce the concepts used in testing through JavaScript. The example that we used is not complex or fancy, but the point is to introduce the concept.

@@ -672,4 +672,4 @@

\ No newline at end of file +we can know what is wrong quickly.

\ No newline at end of file diff --git a/posts/fall2019/js-chats-summary/index.html b/posts/fall2019/js-chats-summary/index.html index 64d248c96..a5b7f7632 100644 --- a/posts/fall2019/js-chats-summary/index.html +++ b/posts/fall2019/js-chats-summary/index.html @@ -48,7 +48,7 @@ } } }) -

JavaScript Chats Fall 2019

Find all resources and links here

November 20, 2019

What is JavaScript Chats?

+

JavaScript Chats Fall 2019

Find all resources and links here

November 20, 2019

What is JavaScript Chats?

“After you learn JavaScript, you should learn more JavaScript”

@@ -97,4 +97,4 @@

Introduction to Testing with JavaScript

-

See slides here: Slides

\ No newline at end of file +

See slides here: Slides

\ No newline at end of file diff --git a/posts/fall2019/welcome/index.html b/posts/fall2019/welcome/index.html index b47b07ea5..d2b742298 100644 --- a/posts/fall2019/welcome/index.html +++ b/posts/fall2019/welcome/index.html @@ -48,7 +48,7 @@ } } }) -

Welcome to ACM Hack

September 7, 2019

Hi! Welcome to ACM Hack's official website. Thank you for coming and appreciating the hard work it took to build it :)

+

Welcome to ACM Hack

September 7, 2019

Hi! Welcome to ACM Hack's official website. Thank you for coming and appreciating the hard work it took to build it :)

We have lots of events every quarter, from weekly workshop series to one-off events, designed to let you apply your new skills and have fun. We welcome students of all interests, majors, and experience levels. If you're looking for a place to learn how to code, or meet a community of people that are also learning (and struggling), then you've come to the right place.

Check out the events tab to see our past events and what we're currently planning! Make sure to follow our Facebook page to get the most up to date information as well :)

To get a better idea of what we teach at our weekly workshops, check out the blog section, or our Github.

@@ -65,4 +65,4 @@
// Java
 System.out.println("Love, Hack");
💭Emojicode
-😀 🔤Love, Hack🔤❗️
\ No newline at end of file +😀 🔤Love, Hack🔤❗️
\ No newline at end of file diff --git a/posts/fall2023/hey-future-interns/index.html b/posts/fall2023/hey-future-interns/index.html index 402a16bb2..85bba4014 100644 --- a/posts/fall2023/hey-future-interns/index.html +++ b/posts/fall2023/hey-future-interns/index.html @@ -48,7 +48,7 @@ } } }) -

Hey Future Interns!

An Overview of the ACM Hack Internship Program as Told by Our Most Recent Interns

September 1, 2023

By Nathan Zhang and James Wu

It’s Fall quarter! That means ACM Hack is preparing to recruit our new batch of interns! To help shed some light on the experience, we (James and Nathan, the Hack Co-Presidents for 2023 - 2024) decided to ask our most recent intern class some questions about their experience the past year for a small blog post! :)

+

Hey Future Interns!

An Overview of the ACM Hack Internship Program as Told by Our Most Recent Interns

September 1, 2023

By Nathan Zhang and James Wu

It’s Fall quarter! That means ACM Hack is preparing to recruit our new batch of interns! To help shed some light on the experience, we (James and Nathan, the Hack Co-Presidents for 2023 - 2024) decided to ask our most recent intern class some questions about their experience the past year for a small blog post! :)

Hack meetings typically start with various icebreaker questions—some notable examples have included: “Who would win, a guy who can control every squirrel at UCLA or 30 bird scooterers?” as well as “Who here do you think you could take in a fight?” Naturally, we started our calls by asking our previous interns: “Who is your favorite CPrez, James or Nathan?” While some were reluctant to give an answer as it was either James or Nathan asking them the question, most of them gave one. The winner: whoever was asking them the question, with the exception of Jenna and Abigail, who both elected to go with “Christina,” our previous CPrez. Very safe answers…

Now that the most important question is out of the way, we can get into the less-important questions (just kidding, we know this next bit is why you are reading this).

The Questions

@@ -153,4 +153,4 @@


With <3,
Nathan and James
-Co-Presidents

\ No newline at end of file +Co-Presidents

\ No newline at end of file diff --git a/posts/spring2021/js-chats-2/index.html b/posts/spring2021/js-chats-2/index.html index 9899d270f..6893e9a07 100644 --- a/posts/spring2021/js-chats-2/index.html +++ b/posts/spring2021/js-chats-2/index.html @@ -48,7 +48,7 @@ } } }) -

Node.js Profiling

JavaScript Chats Hack Session 2 Spring 2021

April 10, 2021

In the previous JS Chats on optimization, we took +

Node.js Profiling

JavaScript Chats Hack Session 2 Spring 2021

April 10, 2021

In the previous JS Chats on optimization, we took a peek at the Chrome DevTools and how we can use the Performance tools to profile our web application loading time. Since both Node.js and Chromium both rely on the V8 engine and adhere to the Chrome DevTools @@ -424,4 +424,4 @@

The complete implementation of the optimized program can be found in the following repository:

https://github.com/uclaacm/js-chats-s21/tree/main/node-profile

-

\ No newline at end of file +
\ No newline at end of file diff --git a/posts/spring2021/js-chats-4/index.html b/posts/spring2021/js-chats-4/index.html index 462f38e7e..efb3c85dc 100644 --- a/posts/spring2021/js-chats-4/index.html +++ b/posts/spring2021/js-chats-4/index.html @@ -48,7 +48,7 @@ } } }) -

Introduction to WebRTC

JavaScript Chats Hack Session 4 Spring 2021

April 25, 2021

What is WebRTC?

+

Introduction to WebRTC

JavaScript Chats Hack Session 4 Spring 2021

April 25, 2021

What is WebRTC?

WebRTC (Web Real-Time Communication) is an open-source project to develop technology that enables websites and web apps to have peer-to-peer (P2P) communication with video, audio, and other arbitrary data.

@@ -616,4 +616,4 @@

-

This is the benefit brought by WebRTC, super cool right?

\ No newline at end of file +

This is the benefit brought by WebRTC, super cool right?

\ No newline at end of file diff --git a/posts/spring2021/js-chats-5-wasm/index.html b/posts/spring2021/js-chats-5-wasm/index.html index 6ad93059b..4fae0c50a 100644 --- a/posts/spring2021/js-chats-5-wasm/index.html +++ b/posts/spring2021/js-chats-5-wasm/index.html @@ -48,7 +48,7 @@ } } }) -

Introduction to WebAssembly

JavaScript Chats Hack Session 5, Spring 2021

May 3, 2021

We usually associate the browser with the language JavaScript. The browser, +

Introduction to WebAssembly

JavaScript Chats Hack Session 5, Spring 2021

May 3, 2021

We usually associate the browser with the language JavaScript. The browser, such as Google Chrome, takes the JS code and then executes its instructions such as performing calculations or manipulating elements of the DOM. For Chrome, the "engine" that executes JavaScript is called V8. But V8 is not @@ -464,4 +464,4 @@

as much as possible in the source/compiled language, and to minimize -the interface between JavaScript and WebAssembly.

\ No newline at end of file +the interface between JavaScript and WebAssembly.

\ No newline at end of file diff --git a/posts/spring2021/js-chats-6-hooks/index.html b/posts/spring2021/js-chats-6-hooks/index.html index 632cacecb..990627db8 100644 --- a/posts/spring2021/js-chats-6-hooks/index.html +++ b/posts/spring2021/js-chats-6-hooks/index.html @@ -48,7 +48,7 @@ } } }) -

Advanced React Hooks

JavaScript Chats Hack Session 6, Spring 2021

May 17, 2021

By Tristan Que

+
\ No newline at end of file +

https://overreacted.io/a-complete-guide-to-useeffect/

\ No newline at end of file diff --git a/posts/spring2021/js-chats-7-typescript/index.html b/posts/spring2021/js-chats-7-typescript/index.html index d809748f5..622276af3 100644 --- a/posts/spring2021/js-chats-7-typescript/index.html +++ b/posts/spring2021/js-chats-7-typescript/index.html @@ -48,7 +48,7 @@ } } }) -

TypeScript - What is it and why should I care?

JavaScript Chats Hack Session 7, Spring 2021

May 24, 2021

By Omer Demirkan

+

TypeScript - What is it and why should I care?

JavaScript Chats Hack Session 7, Spring 2021

May 24, 2021

By Omer Demirkan

This blog post is written by one of JS Chat's participant Omer Demirkan. You can find Omer on...

  • Website: https://omerdemirkan.com
  • @@ -334,4 +334,4 @@

    Wrapping it all up

    We've gone through the motivations behind type safety, the fundamentals of what TypeScript is and what it isn't, a handful of features that TypeScript has to offer, and its interaction with external packages.

    Whether you find the features provided by TypeScript compelling or not, it's a tool that has won the hearts of JavaScript developers that have tried it, and is slowly winning over industry. At the very least, TypeScript stands as a technology to watch in the coming years.

    -

    If you're looking for detailed explanations of TypeScript's feature set, or you're a nerd, feel free to look into the TypeScript documentation for other features such as namespaces, interface inheritance and composition, tuples, OOP support, decorators, enumerations, and much more.

\ No newline at end of file +

If you're looking for detailed explanations of TypeScript's feature set, or you're a nerd, feel free to look into the TypeScript documentation for other features such as namespaces, interface inheritance and composition, tuples, OOP support, decorators, enumerations, and much more.

\ No newline at end of file diff --git a/posts/spring2021/year-in-review/index.html b/posts/spring2021/year-in-review/index.html index 36606aa62..47dd4b0a4 100644 --- a/posts/spring2021/year-in-review/index.html +++ b/posts/spring2021/year-in-review/index.html @@ -48,7 +48,7 @@ } } }) -

2020-2021 year: a reflection

a look back on the past year in quarantine

July 29, 2021

By Jody Lin

I had been mulling over the idea of a fun blog post here for a while now and finally just decided to go for it. Although our existing blogs are technical masterpieces written for our JSChats series (a deep dive into advanced JavaScript), I am using my remaining executive powers from my previous term as VP to inject a fun blog recapping the past year. If this doesn't serve as a record of what our club did this year, then it'll serve as a love letter from me to the officers in Hack that have been my family for the past 3 years.

+

2020-2021 year: a reflection

a look back on the past year in quarantine

July 29, 2021

By Jody Lin

I had been mulling over the idea of a fun blog post here for a while now and finally just decided to go for it. Although our existing blogs are technical masterpieces written for our JSChats series (a deep dive into advanced JavaScript), I am using my remaining executive powers from my previous term as VP to inject a fun blog recapping the past year. If this doesn't serve as a record of what our club did this year, then it'll serve as a love letter from me to the officers in Hack that have been my family for the past 3 years.

Resurrecting my inner dead writer because UCLA engineering writing courses are not as good as they could be absolute trash.

the events

The pandemic really Thanos snapped many of the clubs at UCLA, but we got spared. I look back at all the events we've held this year and am amazed by how we managed to thrive despite pandemic sending the world virtual. We've held a total of 9 events from fall to spring quarter, continuing some of our classic workshop series and trying out new ones (with great success too!).

@@ -592,4 +592,4 @@

Either way, the school year has ended and fall brings a new beginning for us. Will it be a disaster? honestly yes who knows? But we can finally put the last year behind us and look ahead towards the ✨ future ✨. Whatever it will bring, I'm grateful I have this wonderful family by my side.

So with that I'd like to bid our farewell to the 2020-2021 school year.

-
❤️

\ No newline at end of file +
❤️
\ No newline at end of file diff --git a/webpack-runtime-0c1e8743946bec832d47.js b/webpack-runtime-6f904ed80b6918ace331.js similarity index 96% rename from webpack-runtime-0c1e8743946bec832d47.js rename to webpack-runtime-6f904ed80b6918ace331.js index 5639c1cf7..c6a54605e 100644 --- a/webpack-runtime-0c1e8743946bec832d47.js +++ b/webpack-runtime-6f904ed80b6918ace331.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,r,o,a,c,f={},i={};function u(e){var t=i[e];if(void 0!==t)return t.exports;var n=i[e]={exports:{}};return f[e].call(n.exports,n,n.exports,u),n.exports}u.m=f,e=[],u.O=function(t,n,r,o){if(!n){var a=1/0;for(s=0;s=o)&&Object.keys(u.O).every((function(e){return u.O[e](n[f])}))?n.splice(f--,1):(c=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},u.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);u.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=n(c))Object.getOwnPropertyNames(c).forEach((function(t){a[t]=function(){return e[t]}}));return a.default=function(){return e},u.d(o,a),o},u.d=function(e,t){for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.f={},u.e=function(e){return Promise.all(Object.keys(u.f).reduce((function(t,n){return u.f[n](e,t),t}),[]))},u.u=function(e){return({116:"component---src-components-archive-page-archive-page-template-js",161:"3718bca735a7212e927c8699df94b74e88db6123",206:"component---src-components-blog-page-blog-page-template-js",337:"component---src-components-archive-page-tag-page-template-js",351:"commons",410:"component---src-components-post-post-template-js",532:"styles",551:"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969",651:"component---src-pages-events-js",678:"component---src-pages-index-js",682:"component---src-pages-about-js",810:"14351faf3f75868bece722acaed3370a99381df5",862:"405fca37",883:"component---src-pages-404-js"}[e]||e)+"-"+{116:"990363316e8b6453d78e",161:"349e99493e1ca146715c",175:"2a1a7f112ced7f7d8190",206:"a7f46e096d66f2b4568c",231:"063daa183491d366ebd9",337:"208b66ece16b94c2b77a",351:"03240105ba494b36651b",410:"1e4cd9472b5c526b3901",503:"42af8a0203d4c1b988f5",532:"43c21bea8209994eb981",551:"cbbf6d100c29ab6649b8",651:"66f9341d92d7515aac07",678:"c0a89fb77a0fba629888",682:"b0fa1224e581148d6e1b",810:"77821780472cb6f8a3ce",862:"22c9a25e673322c0d9c4",883:"09633c62b79dae1ec0aa"}[e]+".js"},u.miniCssF=function(e){return"styles.269e26275ec14579dc49.css"},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="hack.uclaacm.com:",u.l=function(e,t,n,a){if(r[e])r[e].push(t);else{var c,f;if(void 0!==n)for(var i=document.getElementsByTagName("script"),s=0;s=o)&&Object.keys(u.O).every((function(e){return u.O[e](n[f])}))?n.splice(f--,1):(c=!1,o0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[n,r,o]},u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},u.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);u.r(o);var a={};t=t||[null,n({}),n([]),n(n)];for(var c=2&r&&e;"object"==typeof c&&!~t.indexOf(c);c=n(c))Object.getOwnPropertyNames(c).forEach((function(t){a[t]=function(){return e[t]}}));return a.default=function(){return e},u.d(o,a),o},u.d=function(e,t){for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.f={},u.e=function(e){return Promise.all(Object.keys(u.f).reduce((function(t,n){return u.f[n](e,t),t}),[]))},u.u=function(e){return({116:"component---src-components-archive-page-archive-page-template-js",161:"3718bca735a7212e927c8699df94b74e88db6123",206:"component---src-components-blog-page-blog-page-template-js",337:"component---src-components-archive-page-tag-page-template-js",351:"commons",410:"component---src-components-post-post-template-js",532:"styles",551:"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969",651:"component---src-pages-events-js",678:"component---src-pages-index-js",682:"component---src-pages-about-js",810:"14351faf3f75868bece722acaed3370a99381df5",862:"405fca37",883:"component---src-pages-404-js"}[e]||e)+"-"+{116:"990363316e8b6453d78e",161:"349e99493e1ca146715c",175:"2a1a7f112ced7f7d8190",206:"a7f46e096d66f2b4568c",231:"063daa183491d366ebd9",337:"208b66ece16b94c2b77a",351:"03240105ba494b36651b",410:"1e4cd9472b5c526b3901",503:"42af8a0203d4c1b988f5",532:"43c21bea8209994eb981",551:"cbbf6d100c29ab6649b8",651:"66f9341d92d7515aac07",678:"2854e1544b1f257b833f",682:"b0fa1224e581148d6e1b",810:"77821780472cb6f8a3ce",862:"22c9a25e673322c0d9c4",883:"09633c62b79dae1ec0aa"}[e]+".js"},u.miniCssF=function(e){return"styles.269e26275ec14579dc49.css"},u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="hack.uclaacm.com:",u.l=function(e,t,n,a){if(r[e])r[e].push(t);else{var c,f;if(void 0!==n)for(var i=document.getElementsByTagName("script"),s=0;s 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"hack.uclaacm.com:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"116\":\"component---src-components-archive-page-archive-page-template-js\",\"161\":\"3718bca735a7212e927c8699df94b74e88db6123\",\"206\":\"component---src-components-blog-page-blog-page-template-js\",\"337\":\"component---src-components-archive-page-tag-page-template-js\",\"351\":\"commons\",\"410\":\"component---src-components-post-post-template-js\",\"532\":\"styles\",\"551\":\"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969\",\"651\":\"component---src-pages-events-js\",\"678\":\"component---src-pages-index-js\",\"682\":\"component---src-pages-about-js\",\"810\":\"14351faf3f75868bece722acaed3370a99381df5\",\"862\":\"405fca37\",\"883\":\"component---src-pages-404-js\"}[chunkId] || chunkId) + \"-\" + {\"116\":\"990363316e8b6453d78e\",\"161\":\"349e99493e1ca146715c\",\"175\":\"2a1a7f112ced7f7d8190\",\"206\":\"a7f46e096d66f2b4568c\",\"231\":\"063daa183491d366ebd9\",\"337\":\"208b66ece16b94c2b77a\",\"351\":\"03240105ba494b36651b\",\"410\":\"1e4cd9472b5c526b3901\",\"503\":\"42af8a0203d4c1b988f5\",\"532\":\"43c21bea8209994eb981\",\"551\":\"cbbf6d100c29ab6649b8\",\"651\":\"66f9341d92d7515aac07\",\"678\":\"c0a89fb77a0fba629888\",\"682\":\"b0fa1224e581148d6e1b\",\"810\":\"77821780472cb6f8a3ce\",\"862\":\"22c9a25e673322c0d9c4\",\"883\":\"09633c62b79dae1ec0aa\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"269e26275ec14579dc49\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhack_uclaacm_com\"] = self[\"webpackChunkhack_uclaacm_com\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-6f904ed80b6918ace331.js","mappings":"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","sources":["webpack://hack.uclaacm.com/webpack/runtime/chunk loaded","webpack://hack.uclaacm.com/webpack/runtime/create fake namespace object","webpack://hack.uclaacm.com/webpack/runtime/load script","webpack://hack.uclaacm.com/webpack/runtime/css loading","webpack://hack.uclaacm.com/webpack/bootstrap","webpack://hack.uclaacm.com/webpack/runtime/compat get default export","webpack://hack.uclaacm.com/webpack/runtime/define property getters","webpack://hack.uclaacm.com/webpack/runtime/ensure chunk","webpack://hack.uclaacm.com/webpack/runtime/get javascript chunk filename","webpack://hack.uclaacm.com/webpack/runtime/get mini-css chunk filename","webpack://hack.uclaacm.com/webpack/runtime/global","webpack://hack.uclaacm.com/webpack/runtime/hasOwnProperty shorthand","webpack://hack.uclaacm.com/webpack/runtime/make namespace object","webpack://hack.uclaacm.com/webpack/runtime/publicPath","webpack://hack.uclaacm.com/webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"hack.uclaacm.com:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"116\":\"component---src-components-archive-page-archive-page-template-js\",\"161\":\"3718bca735a7212e927c8699df94b74e88db6123\",\"206\":\"component---src-components-blog-page-blog-page-template-js\",\"337\":\"component---src-components-archive-page-tag-page-template-js\",\"351\":\"commons\",\"410\":\"component---src-components-post-post-template-js\",\"532\":\"styles\",\"551\":\"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969\",\"651\":\"component---src-pages-events-js\",\"678\":\"component---src-pages-index-js\",\"682\":\"component---src-pages-about-js\",\"810\":\"14351faf3f75868bece722acaed3370a99381df5\",\"862\":\"405fca37\",\"883\":\"component---src-pages-404-js\"}[chunkId] || chunkId) + \"-\" + {\"116\":\"990363316e8b6453d78e\",\"161\":\"349e99493e1ca146715c\",\"175\":\"2a1a7f112ced7f7d8190\",\"206\":\"a7f46e096d66f2b4568c\",\"231\":\"063daa183491d366ebd9\",\"337\":\"208b66ece16b94c2b77a\",\"351\":\"03240105ba494b36651b\",\"410\":\"1e4cd9472b5c526b3901\",\"503\":\"42af8a0203d4c1b988f5\",\"532\":\"43c21bea8209994eb981\",\"551\":\"cbbf6d100c29ab6649b8\",\"651\":\"66f9341d92d7515aac07\",\"678\":\"2854e1544b1f257b833f\",\"682\":\"b0fa1224e581148d6e1b\",\"810\":\"77821780472cb6f8a3ce\",\"862\":\"22c9a25e673322c0d9c4\",\"883\":\"09633c62b79dae1ec0aa\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"269e26275ec14579dc49\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0,\n\t532: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhack_uclaacm_com\"] = self[\"webpackChunkhack_uclaacm_com\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index de5aedcd8..aeb611ef6 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"polyfill":{"name":"polyfill","assets":[{"name":"webpack-runtime-0c1e8743946bec832d47.js","size":5757},{"name":"polyfill-be533f60f5ee6427c8fd.js","size":83499}],"filteredAssets":0,"assetsSize":89256,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":229037},"app":{"name":"app","assets":[{"name":"webpack-runtime-0c1e8743946bec832d47.js","size":5757},{"name":"styles.269e26275ec14579dc49.css","size":23011},{"name":"framework-fb9a76370d127a7a27e2.js","size":129754},{"name":"app-ee81dc7c85a8936cd7d9.js","size":132659}],"filteredAssets":0,"assetsSize":291181,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":947579},"component---src-components-archive-page-archive-page-template-js":{"name":"component---src-components-archive-page-archive-page-template-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","size":8724},{"name":"3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","size":18930},{"name":"component---src-components-archive-page-archive-page-template-js-990363316e8b6453d78e.js","size":2522}],"filteredAssets":0,"assetsSize":145013,"filteredAuxiliaryAssets":10,"auxiliaryAssetsSize":587528},"component---src-components-archive-page-tag-page-template-js":{"name":"component---src-components-archive-page-tag-page-template-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","size":8724},{"name":"3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","size":18930},{"name":"component---src-components-archive-page-tag-page-template-js-208b66ece16b94c2b77a.js","size":2431}],"filteredAssets":0,"assetsSize":144922,"filteredAuxiliaryAssets":10,"auxiliaryAssetsSize":587247},"component---src-components-blog-page-blog-page-template-js":{"name":"component---src-components-blog-page-blog-page-template-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-components-blog-page-blog-page-template-js-a7f46e096d66f2b4568c.js","size":10886}],"filteredAssets":0,"assetsSize":125723,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":510538},"component---src-components-post-post-template-js":{"name":"component---src-components-post-post-template-js","assets":[{"name":"styles.269e26275ec14579dc49.css","size":23011},{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-components-post-post-template-js-1e4cd9472b5c526b3901.js","size":7921}],"filteredAssets":0,"assetsSize":145769,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":498334},"component---src-pages-404-js":{"name":"component---src-pages-404-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-pages-404-js-09633c62b79dae1ec0aa.js","size":2547}],"filteredAssets":0,"assetsSize":117384,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":476201},"component---src-pages-about-js":{"name":"component---src-pages-about-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-pages-about-js-b0fa1224e581148d6e1b.js","size":17444}],"filteredAssets":0,"assetsSize":132281,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":519467},"component---src-pages-events-js":{"name":"component---src-pages-events-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","size":22804},{"name":"component---src-pages-events-js-66f9341d92d7515aac07.js","size":5841}],"filteredAssets":0,"assetsSize":143482,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":565500},"component---src-pages-index-js":{"name":"component---src-pages-index-js","assets":[{"name":"styles.269e26275ec14579dc49.css","size":23011},{"name":"405fca37-22c9a25e673322c0d9c4.js","size":256},{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","size":8724},{"name":"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","size":22804},{"name":"component---src-pages-index-js-c0a89fb77a0fba629888.js","size":100499}],"filteredAssets":0,"assetsSize":270131,"filteredAuxiliaryAssets":15,"auxiliaryAssetsSize":1562272}},"assetsByChunkName":{"polyfill":["webpack-runtime-0c1e8743946bec832d47.js","polyfill-be533f60f5ee6427c8fd.js"],"app":["webpack-runtime-0c1e8743946bec832d47.js","styles.269e26275ec14579dc49.css","framework-fb9a76370d127a7a27e2.js","app-ee81dc7c85a8936cd7d9.js"],"component---src-components-archive-page-archive-page-template-js":["commons-03240105ba494b36651b.js","14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","component---src-components-archive-page-archive-page-template-js-990363316e8b6453d78e.js"],"component---src-components-archive-page-tag-page-template-js":["commons-03240105ba494b36651b.js","14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","component---src-components-archive-page-tag-page-template-js-208b66ece16b94c2b77a.js"],"component---src-components-blog-page-blog-page-template-js":["commons-03240105ba494b36651b.js","component---src-components-blog-page-blog-page-template-js-a7f46e096d66f2b4568c.js"],"component---src-components-post-post-template-js":["styles.269e26275ec14579dc49.css","commons-03240105ba494b36651b.js","component---src-components-post-post-template-js-1e4cd9472b5c526b3901.js"],"component---src-pages-404-js":["commons-03240105ba494b36651b.js","component---src-pages-404-js-09633c62b79dae1ec0aa.js"],"component---src-pages-about-js":["commons-03240105ba494b36651b.js","component---src-pages-about-js-b0fa1224e581148d6e1b.js"],"component---src-pages-events-js":["commons-03240105ba494b36651b.js","1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","component---src-pages-events-js-66f9341d92d7515aac07.js"],"component---src-pages-index-js":["styles.269e26275ec14579dc49.css","405fca37-22c9a25e673322c0d9c4.js","commons-03240105ba494b36651b.js","14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","component---src-pages-index-js-c0a89fb77a0fba629888.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"polyfill":{"name":"polyfill","assets":[{"name":"webpack-runtime-6f904ed80b6918ace331.js","size":5757},{"name":"polyfill-be533f60f5ee6427c8fd.js","size":83499}],"filteredAssets":0,"assetsSize":89256,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":229037},"app":{"name":"app","assets":[{"name":"webpack-runtime-6f904ed80b6918ace331.js","size":5757},{"name":"styles.269e26275ec14579dc49.css","size":23011},{"name":"framework-fb9a76370d127a7a27e2.js","size":129754},{"name":"app-ee81dc7c85a8936cd7d9.js","size":132659}],"filteredAssets":0,"assetsSize":291181,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":947579},"component---src-components-archive-page-archive-page-template-js":{"name":"component---src-components-archive-page-archive-page-template-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","size":8724},{"name":"3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","size":18930},{"name":"component---src-components-archive-page-archive-page-template-js-990363316e8b6453d78e.js","size":2522}],"filteredAssets":0,"assetsSize":145013,"filteredAuxiliaryAssets":10,"auxiliaryAssetsSize":587528},"component---src-components-archive-page-tag-page-template-js":{"name":"component---src-components-archive-page-tag-page-template-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","size":8724},{"name":"3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","size":18930},{"name":"component---src-components-archive-page-tag-page-template-js-208b66ece16b94c2b77a.js","size":2431}],"filteredAssets":0,"assetsSize":144922,"filteredAuxiliaryAssets":10,"auxiliaryAssetsSize":587247},"component---src-components-blog-page-blog-page-template-js":{"name":"component---src-components-blog-page-blog-page-template-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-components-blog-page-blog-page-template-js-a7f46e096d66f2b4568c.js","size":10886}],"filteredAssets":0,"assetsSize":125723,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":510538},"component---src-components-post-post-template-js":{"name":"component---src-components-post-post-template-js","assets":[{"name":"styles.269e26275ec14579dc49.css","size":23011},{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-components-post-post-template-js-1e4cd9472b5c526b3901.js","size":7921}],"filteredAssets":0,"assetsSize":145769,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":498334},"component---src-pages-404-js":{"name":"component---src-pages-404-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-pages-404-js-09633c62b79dae1ec0aa.js","size":2547}],"filteredAssets":0,"assetsSize":117384,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":476201},"component---src-pages-about-js":{"name":"component---src-pages-about-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"component---src-pages-about-js-b0fa1224e581148d6e1b.js","size":17444}],"filteredAssets":0,"assetsSize":132281,"filteredAuxiliaryAssets":8,"auxiliaryAssetsSize":519467},"component---src-pages-events-js":{"name":"component---src-pages-events-js","assets":[{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","size":22804},{"name":"component---src-pages-events-js-66f9341d92d7515aac07.js","size":5841}],"filteredAssets":0,"assetsSize":143482,"filteredAuxiliaryAssets":9,"auxiliaryAssetsSize":565500},"component---src-pages-index-js":{"name":"component---src-pages-index-js","assets":[{"name":"styles.269e26275ec14579dc49.css","size":23011},{"name":"405fca37-22c9a25e673322c0d9c4.js","size":256},{"name":"commons-03240105ba494b36651b.js","size":114837},{"name":"14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","size":8724},{"name":"1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","size":22804},{"name":"component---src-pages-index-js-2854e1544b1f257b833f.js","size":100499}],"filteredAssets":0,"assetsSize":270131,"filteredAuxiliaryAssets":15,"auxiliaryAssetsSize":1562278}},"assetsByChunkName":{"polyfill":["webpack-runtime-6f904ed80b6918ace331.js","polyfill-be533f60f5ee6427c8fd.js"],"app":["webpack-runtime-6f904ed80b6918ace331.js","styles.269e26275ec14579dc49.css","framework-fb9a76370d127a7a27e2.js","app-ee81dc7c85a8936cd7d9.js"],"component---src-components-archive-page-archive-page-template-js":["commons-03240105ba494b36651b.js","14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","component---src-components-archive-page-archive-page-template-js-990363316e8b6453d78e.js"],"component---src-components-archive-page-tag-page-template-js":["commons-03240105ba494b36651b.js","14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","3718bca735a7212e927c8699df94b74e88db6123-349e99493e1ca146715c.js","component---src-components-archive-page-tag-page-template-js-208b66ece16b94c2b77a.js"],"component---src-components-blog-page-blog-page-template-js":["commons-03240105ba494b36651b.js","component---src-components-blog-page-blog-page-template-js-a7f46e096d66f2b4568c.js"],"component---src-components-post-post-template-js":["styles.269e26275ec14579dc49.css","commons-03240105ba494b36651b.js","component---src-components-post-post-template-js-1e4cd9472b5c526b3901.js"],"component---src-pages-404-js":["commons-03240105ba494b36651b.js","component---src-pages-404-js-09633c62b79dae1ec0aa.js"],"component---src-pages-about-js":["commons-03240105ba494b36651b.js","component---src-pages-about-js-b0fa1224e581148d6e1b.js"],"component---src-pages-events-js":["commons-03240105ba494b36651b.js","1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","component---src-pages-events-js-66f9341d92d7515aac07.js"],"component---src-pages-index-js":["styles.269e26275ec14579dc49.css","405fca37-22c9a25e673322c0d9c4.js","commons-03240105ba494b36651b.js","14351faf3f75868bece722acaed3370a99381df5-77821780472cb6f8a3ce.js","1dc822b36bc9cb8d8b94a539c5b6e4c9b8f2b969-cbbf6d100c29ab6649b8.js","component---src-pages-index-js-2854e1544b1f257b833f.js"]},"childAssetsByChunkName":{}} \ No newline at end of file