diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..dda18e4 --- /dev/null +++ b/404.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
+ +
+
+ + diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..c3b0c91 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +www.mfrashad.com \ No newline at end of file diff --git a/CV-MUHAMMAD-FATHY-RASHAD.pdf b/CV-MUHAMMAD-FATHY-RASHAD.pdf new file mode 100644 index 0000000..96564c7 Binary files /dev/null and b/CV-MUHAMMAD-FATHY-RASHAD.pdf differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..0f42060 --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +
+

+ + Logo + + +

www.mfrashad.com

+ +

+ Rashad's Personal Website +
+ Explore the docs » +
+
+ View Demo + · + Report Bug + · + Request Feature +

+

+ + + +## About The Project + +A portfolio website for Muhammad Fathy Rashad + +### Built With + +* [Jekyll](https://jekyllrb.com/) + + + + +## Getting Started + +### Prerequisites + +The website is built with jekyll, hence jekyll and ruby need to be installed for development. +- [Install Jekyll and ruby](https://jekyllrb.com/docs/installation/) + + + +### Installation + +After installing jekyll, you can proceed to clone the project: +``` +$ git clone https://github.com/mfrashad/mfrashad.github.io.git +``` + +To run the website, use the following command in the root directory of the project: +``` +$ bundle exec jekyll serve +``` +Note: just running `$ jekyll serve` command is enough sometimes depending your installation + +The website will run on port 4000 by default, open `localhost:4000` on your browser to see the website. + + + + +## Documentation + +The structure of the project looks something like this: +``` +. +├── config.yml +├── _site # Dont touch this folder, it should be regenerated by jekyll +├── _data +| └── experience.yml # edit experience details here +| └── person.yml # edit skills data and about me here +| └── portfolio.yml # edit project details here +| └── testimonials.yml # edit testimonials here +├── _includes +├── _layouts +├── img # put all images here +├── style # put css or styling files here +├── scripts # put js files here +└── index.html # Root page of this folder +└── CV.pdf # CV to be hosted +``` + +### Index Page +To make changes on the index page, go to `index.html` in the root directory. Do note that some part have been modularized and separatated into files in `_includes` directory. Also, the `index.html` is using `_layouts/default.html` layout. + +### Update CV +Replace CV.pdf with the latest CV. + + +## Contributing + +Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. + +1. Fork the Project / Clone the project (For members that have been given access) +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + + + + +## License + +Distributed under the MIT License. See `LICENSE` for more information. + + + + +## Contact + +You can drop me a message on my [Website](https://www.mfrashad.com/). + + + + + +## Acknowledgements +* [Img Shields](https://shields.io) +* [GitHub Pages](https://pages.github.com) +* [Font Awesome](https://fontawesome.com) \ No newline at end of file diff --git a/about/index.html b/about/index.html new file mode 100644 index 0000000..ebc6e0a --- /dev/null +++ b/about/index.html @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + About + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at jekyllrb.com

+ +

You can find the source code for Minima at GitHub: +jekyll / +minima

+ +

You can find the source code for Jekyll at GitHub: +jekyll / +jekyll

+ + +
+
+ + diff --git a/annual-review-2023.html b/annual-review-2023.html new file mode 100644 index 0000000..e27f82c --- /dev/null +++ b/annual-review-2023.html @@ -0,0 +1,536 @@ + + + + + + + + + + + + + + + + + + + + My Annual Review 2023: Travel & Habits + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ My Annual Review 2023: Travel & Habits +
+ +
+
+ Published at 11/01/2024 +

My Annual Review 2023

+ +

+ +

2023 was my year of transitioning from chaotic adventures to habits and routines.

+ +

I spent the first half of 2023 continuing my bucket list phase from 2022. A phase where I constantly try new things. Ticking off my childhood dreams one by one .

+ +

Whether it’s skydiving, co-piloting, scuba diving, freediving, surfing, windsurfing, glassblowing, sandboarding, snowboarding, or skiing — I tried it all. It was chaotic phase full of spontaneous adventure, but ultimately satisfying.

+ +

I ended the phase in July 2023, when I then shifted to a more organized life. I spent the latter part of the year building routines and forming the habits that I want.

+ +

Starting a journaling habit was actually the trigger of how this post came to be. I’ve always wanted to write an annual review since years ago but something always stopped me. Journaling and having a clear record of what happened in 2023 makes writing this a lot easier.

+ +
+

Many people think they lack motivation when what they really lack is clarity
+— James Clear, Atomic Habits

+
+ +

This review will be structured in 3 sections:

+ + +

I will first reflect what went well and what I learned from it. Then, identify what I could improve from things that didn’t go well. Finally, I will share my goals and how I would achieve it for 2024.

+ +

+What Went Well?

+ +

+I. Travel & Adventure

+ +

In April, I went on a solo trip to Japan and Philippines. I had been aiming to go there specifically because I wanted to tick off my bucket list on snow sports and diving.

+ +

The plan was actually almost cancelled after getting ill near the planned date. But I recovered barely in time before winter ends and pushed for the trip. It also means I had to travel during fasting month of Ramadhan, which is an interesting experience by itself (I saved a lot of money on food & had iftaar at Japan mosques).

+ +

+Japan: Snow, Sand, and Sakura

+ +

I had many first experiences in Japan. From experiencing my first snowfall and sakura blossoms, snowboarding and skiing, trying out glassblowing. Seeing so much sand for the first time in sand dune and riding a camel. Yes, sand dune. Not many people know there is a desert in Japan. I even tried sandboarding on the sand dune.

+ +

+ +

Some memorable social interactions also happened in the trip. My favorite one was hiking together with a stranger after we helped each other take pictures. We even got a sakura flavored ice cream together at the end!

+ +

I learned many things about traveling from the trip:

+ + +

I also made many mistakes that became lessons and fond memories now. From sleeping in the airport after missing the last train and finding out it’s not so bad after all. Or dropping off train at the wrong small village, that turns into a nice photoshoot sessions with train tracks and mountains.

+ +

I learned to be more comfortable in spontaneity. And to practice the habit of seeing the upsides in misfortune and viewing them as possible lesson and serendipity.

+ +
+

Looking for the positive side of every challenge can become a habit, and so can finding the cloud in every silver lining.
+— Jeff Olson, The Slight Edge

+
+ +

There were many other anecdotes that’d be too long to include. Instead, you can checkout my Japan trip post for more details on the activities, costs, etc.

+ +

+Philippines: Whale Shark and Sardines

+ +

After Japan, I went to Cebu in Philippines. My main goals were to swim with the Whale Shark and dive amongst millions of fish in a sardine run. Both were majestic experiences. One left me in awe with the vastness of size and the other with the number of lives swimming around me. I wish to see an even bigger animal like the blue whale one day.

+ +

+ +

The trip was also the pivotal moment where I started to really enjoy diving. My previous dives before this was the diving course. I did my diving course in rough weather during monsoon, where I’m constantly stressed with learning the skills in low visibility and rough waves. The dives in the Philippines were the moment where I could truly relax and explore.

+ +

+Family Dive and Underwater Volcano

+ +

Few days after the trip. I celebrated Eid Fitri with my family in Sabang (The Weh Island), Indonesia. A fond memory where my whole family tried diving together with Discover Scuba over there.

+ +

Sabang surprisingly has many fish. But the corals suffered a lot due to the tsunami. +There is also an underwater volcano in Sabang. A unique albeit quite underwhelming experience. It’s mainly small holes with bubbles, where the surrounding water are warm.

+ +

+ +

+Rescue Diver Course and Night Diving

+ +

Still not satisfied with diving, I went on another diving trip to Perhentian Island where I took Adv + Rescue Diver course.

+ +

The course took 1 week and gave me many new diving experience. One of my favorite course was the search & recovery specialization where the instructor hide a small item like a bracelet in the sea, and we are supposed to search it. We also practiced on real situation where we volunteered to search a missing fin by another diver.

+ +

Besides that, the roleplay element on the rescue course was also fun. Watching the girls’ distressed acting can be very entertaining. And we also learned CPR and other life saving skills in the course.

+ +

While still in the island, I also went on my first night dive which became one of my favorite. I loved the silence during the night. The limited light by the diving torch also makes me fully focus and be present on certain spot.

+ +

+ +

Seeing bioluminescence during the night always left me in awe. The first bioluminescence I saw was a cuttlefish with a glowing belly. The second was glowing red and blue planktons swarming our torch light.

+ +

Another favorite creature I discovered was ghost shrimps, a shrimp with transparent body. I also encountered many sea creatures that I never see during the day. I remember noticing many sea urchins — and they were moving! The only cons of night diving to me was the blurry videos I got due to the low light.

+ +

+Freediving

+ +

+ +

My final adventure was a freediving trip in Tenggol island.

+ +

I’ve had few classes on freediving in the city and only need to do some final practice on the open water for the certificate. We would swim from the beach a bit far to the sea , with a life buoy on tow. Then we’ll lower down a line from the buoy. The line will be used as assistance when freediving to the bottom. We will take turns freediving one by one. While we take our rest gasping for breaths, the instructor is diving tirelessly for our safety

+ +

On my first day, I struggled to equalize my ear. Equalizing your ear means pushing out air from your ear to balance the ear pressure to the water pressure at depth. I had no problem doing this normally, but cannot do so when I’m upside down.

+ +

I managed to do it on the second day after using this trick of sucking my nose & mask before equalizing. But I also end up popping blood vessels in my eye and nose by doing so. By sucking the air from my mask air pocket, it also pressurize my mask, which proved to be too much pressure for my blood vessels. Thus, I had bloody eyes and nose after the dive.

+ +

+ +

Luckily, there was a doctor amongst the student and he relieved me by saying it’s not fatal and will be gone in few weeks. My eyes continued to be completely blood red for about 2 weeks before it recovers.

+ +

Anyway, I was happy I got my Molchanovs freediving cert with my best depth at 15m. Despite the exhausting training during the trip, I find the sport aspect of pushing yourself in freediving and the trip enjoyable. Although I still prefer scuba diving for recreational sea exploration.

+ +

Overall, after constantly pushing myself to near-drowning, I definitely become more confident in being underwater.

+ +

+II. Self-Improvement

+ +

After all my traveling and diving, I started to run low on money.

+ +

I decided that it’s finally enough and I should focus on work again. However, shifting from constantly having fun with novel experiences back to daily grind of work proves to be quite challenging. I end up spending my days on my phone constantly looking for dopamine and barely able to put any work hours in.

+ +

I realized I need to restructure my life. Then, I remembered about Atomic Habits. I didn’t apply the book on forming habits previously with the excuse that my life is too chaotic when I constantly try new things and I wanted to experience life full of spontaneity for a while. But now that I ended my bucket list phase, I had no excuse anymore.

+ +

+Habits

+ +

So, I started to fully apply the Atomic Habit lessons. Starting with my phone or dopamine addiction.

+ +

Make it difficult — I deleted my social media apps.

+ +

Make it unattractive — I put my screen time in my home screen, so I’m always reminded how much time I wasted on phone.

+ +

Then, I replaced the instant gratification activities with reading non-fiction books. And it worked. Most of my time spent on phone was then spent on reading non-fictions on my kindle instead.

+ +

Next, I started forming other basic habits: waking up early & Tahajud prayer, lifting weights, journaling, eating enough calories, and reading before sleep.

+ +

Make it easy — I searched for tools I’d enjoy the most and make it the easiest for me. I chose Diarium for journaling.

+ +

Keep track of progress — I use Habit Loop for tracking habits, Strava to track running distance, Smashrun for running achievements & statistic, and Rize for time tracking.

+ +

+ +

Tracking habits and keeping my streaks was the biggest motivator that kept me consistent with my habits. Despite a few early failures, I was able to keep my habits for about 2-4 weeks.

+ +

However, one day after completing a stressful project, I celebrated by playing a game. This became my downfall as I spiraled into binge gaming for about 1 and half months. I couldn’t stop playing Baldur Gate 3 and The Outer Wild once I started it. This was the caveat of streaks, one relapse can easily snowballs to more once I lose my streak.

+ +

+ +

After completing the games, I was able to restart my habits again. Thus, I started adding new habits week by week. I had this idea of applying the book I read as a new habit.

+ +

For example, I was inspired to run and seek discomfort after reading Can’t Hurt Me by David Goggins. So I added a habit of doing chores, running, and stretching everyday. And I stacked the habits as part of the morning routine.

+ +

Then, I was inspired in donating more after reading Doing Good Better: Effective Altruism. So I started a donation habit. And I did the same for several other books.

+ +

In the end, I managed to kept the habits until the end of the year. Which is why I considered as a success. It became easier once I passed the 30+ days streak.

+ +

+III. Fitness

+ +

Fitness was the only thing I was able to keep fairly consistent over the full year.

+ +

Even during the least productive period or binging sessions, I would still do a short exercise once in 2 week at minimum. Having a home gym equipment like pull-up bar, dumbells, and gymnastic rings were the game changer on making this possible.

+ +

It’s about reducing the friction to workout as much as possible. Doing a pull up or a ring dip would only take a few seconds every time I walked around the house.

+ +

However, I noticed that my posture is getting worse despite all the exercise I did. I had a slight Anterior Pelvic Tilt (APT). Although prolonged sitting may have affected this, I also suspected muscle imbalance may play a role. I thought so because I didn’t do a full-body balanced workout routine.

+ +

My home workout mainly focused on weighted pull ups, with some ring dips, overhead press, and occasional pistol squats on the side. Thus, I have overdeveloped lats, minimal leg muscles, and less developed lower traps and rear delts.

+ +

+ +

APT is often associated with weak glutes, tight hip flexors, weak abdominals, and tight back. Although I don’t have severe case of any of them, the combination of my less developed glutes, overdeveloped lats, and my prolonged sitting probably adds up and caused the slight APT.

+ +

+Gym

+ +

To fix my posture, I started going to the gym to train deadlift and squat around June.

+ +

There is a small local gym near me within 10 min of walking. It used to be too far for me. But I became a lot more comfortable in walking far distance after my trip from Japan. Thus, I had no problem walking to the gym regularly.

+ +

Why did I switch to gym? Training legs is quite difficult with just bodyweight. After I can do few pistol squats, I find it hard to progress further. My other calisthenic exercises have also stalled. Weight training on the contrary is a lot easier to progress:

+
    +
  1. I can add heavier weight than my bodyweight,
  2. +
  3. I can add smaller increment in weights
  4. +
  5. I can keep track of the weights more accurately.
  6. +
+ +

Despite all that, the main reason that convinced me was because I kept hearing how beneficial deadlift and squat exercises are. Like the testosterone boosts or how functional the movement is.

+ +

Anyway, I focused on 3 main lifts in the gym: Deadlift, Squat, Overhead Press, and Row. I also do accessories exercise like face pull & lateral raise at the end of workout.

+ +

By the end of the year, my posture improved. I believe it was mainly due to doing deadlift, rows, and face pull as it strengthen my weak muscles — glutes, hamstring, lower back, traps and rear delts.

+ +

Here are my best lifts over the year:

+ + +

I also successfully gained weight close to my bulking goal. I gained 9kg this year, from 60kg to 69kg. My target was 70kg, with minimal fat gain. So I consider the 90% completion rate as a success.

+ +

+Running

+ +

Besides building muscle, I also started my running streak this year. I was inspired to run everyday after reading Can’t Hurt Me by David Goggins. I’m aware that running daily without rest day may not be the most optimal for improving my running. However, my goal is more about achieving self-discipline and mental toughness instead of solely improving running. I was inspired by David Goggin’s mental toughness, not his cardio health.

+ +

I’m also aware that chance of injury will increase by running everyday. So I made few rules to ensure the intensity is manageable:

+
    +
  1. My minimum run is 1 mile or 1.6km
  2. +
  3. I can run at extremely slow pace (e.g 8-9min/km) or alternate run/walk during rest day.
  4. +
  5. I can just walk the distance when I’m sick or injured
  6. +
  7. Keep the pace slow most of the time. Only push hard once or twice a week.
  8. +
  9. Slow down or do the minimum distance if I start feeling any slight pain
  10. +
+ +

With those rules, I managed to keep a 33 day run streak from 29 Nov until the end of the year.

+ +

+

+What didn’t go well this year

+ +

+I. Writing

+ +

I set a goal of writing 1 tech article every month in my medium blog at the start of the year. How much did I write this year? Zero.

+ +

Why didn’t I write anything?

+ +

I suspect it’s because my interest was more focused on travel and self improvement this year. But, I kept telling myself to write AI or tech articles.

+ +

I had gained a small followers on Medium by solely writing tech articles. So I was afraid I’d lose them if I write things on other topics. In the end, I did not write anything.

+ +

Now that I think about it, the loss of potential new readers by not writing anything probably exceeds the loss of disappointing my current small followers anyway.

+ +

What can I improve in the future?

+
    +
  1. Setup a separate blog for other topics or niches (which is why I setup this blog). Or post it on Medium anyway regardless of the niches or why the followers followed me.
  2. +
  3. Start writing atomic notes of whatever I learned and use that as a starting point. I discovered about Personal Knowledge System and the Zettelkasen method this year. They showed me the power of notes and how it can make writing easier by not starting from a blank page.
  4. +
  5. Start a writing habit. Set aside a small time everyday to write my article.
  6. +
+ +

+II. Health

+ +

Many of my plans and goals started to derail in February.

+ +

In that month, I got an unexpected infection that hospitalized me for a few days and required a minor surgery. The doctor left the surgery with an open wound instead of stitching it. So I had to live with the pain of having a gaping wound for a month until it recovers. Simple activities like driving, sitting down, and walking becomes unpleasant, or even painful. To make it worse, I also have to visit a clinic to change the wound dressing, every day.

+ +

The unexpected medical issue was a frustrating and humbling experience. Especially since I exercise regularly and thought that I have a fairly healthy lifestyle.

+ +

The experience reminds me about the unpredictability of life and to be more grateful. It was a reminder that my plans can be derailed at any moment and that my health is a gift that shouldn’t be taken for granted.

+ +

+III. Work

+ +

With the medical issue in February and March. I had problem focusing at work with all the discomfort and pain. So I ended my contracted works. Thinking of just restarting the contract or finding new clients altogether once I recover.

+ +

Once I recovered and finished my break. I started working again in July. But I spiraled into binge consumption again in September. Only then I realized that the lack of structure in my schedule is negatively affecting my productivity. I’ve entered the situation Jeff Olson described in his book.

+ +
+

Serving as your own boss, and doing so successfully, consistently, day in and day out, takes an uncommon degree of slight edge integrity, and frankly many business owners just don’t have it. They become intoxicated by the freedom of being their own boss and fail to maintain the kind of structure it takes to become successful.
+— Jeff Olson, The Slight Edge

+
+ +

In summary, I only worked for about 6 months this year. A significant decrease of productivity than last year. I was also quite motivated to try launching a SaaS business this year after reading The Millionaire Fastlane book. Although, I did build few prototypes. I did not ship anything. I lacked the bias for action on top of my productivity issue.

+ +

What can I improve in the future?

+
    +
  1. Schedule and time block deep work sessions. Make it a habit.
  2. +
  3. Keep track of progress like work hours and streaks.
  4. +
  5. Block all distractions during work sessions. Use tool like Rize.
  6. +
  7. Consciously practice bias for action.
  8. +
+ +

+IV. Social Life

+ +

My first month was full with social interactions.

+ +

I started the new year with a Genting trip with friends to celebrate Marylin’s birthday. We counted down new year, walked around the theme park, played in arcade, tumbled in kids area, and took a lot of photos.

+ +

Late in January, I also had my first house visit since secondary school! I went to dinner party in Alina’s house to celebrate Melissa’s birthday. We had boardgames, dinner, dances, and whole lot of fun!

+ +

+ +

My social activities stopped when I got ill. I appreciated all my friends that checked in me. But when I’m ill, I like to escape to fantasy land to forget my discomfort.

+ +

Thus, I have this tendency to self-isolate and binge on games and books when I’m sick. Having to check my socials and reply to messages just reminds me of the real world. So I tend to reply very late or not at all. Eventually, we just stopped interacting all together as I continued being a hermit even after I recovered.

+ +

The fact that I don’t really feel lonely didn’t help my social life either. Once I’ve become used to being alone, it’s hard to start the initiative to socialize again. As shown on this study, chronic social isolation can actually cause anti-social behavior.

+ +

In the end, besides my solo trips, I spend the rest of the year mostly staying at home. Although, I think my mental health is fine with my minimal interaction with family. My social skills definitely deteriorated. I know it can’t go on like this. I probably have loss many opportunities because of my lacking social skills and ability to maintain relationship.

+ +

What can I improve in the future?

+ + +

PS: One fortunate event though was discovering Slowly and trying out pen palling in December. I surprisingly had many enjoyable deep conversation from the app. I loved the delayed long-form messaging and writing long letter. It felt like pair journaling. I also noticed that my writing becomes more structured when I’m writing to someone. So I might even be able to reuse it in my blog later.

+ +

+Goals for 2024

+ +

My main goals for 2024 is to keep doing my current habits consistently with the year’s theme as self-discipline.

+ +
+

All the information you need is already there. You’re already doing the actions. All you need to do is choose to have them serve and empower you—and keep on choosing
+— Jeff Olson, The Slight Edge

+
+ +

As the quote says, I think I’ve already known enough on what to do to reach my goals and I may be already doing it. I just need to keep doing it. I should avoid the endless researching trap and actually just do it. Instead, I need more consistency and bias for action for this year.

+ +

Like how I spent 2022 reinforcing my identity as adventurous person by constantly trying new thing. I want to reinforce my identity as disciplined person by doing amazing feat of discipline in 2024. As the evidence grow, hopefully so will my identity.

+ +
+

Your identity is not set in stone. You have a choice in every moment. You can choose the identity you want to reinforce today with the habits you choose today.
+— James Clear, Atomic Habits

+
+ +

Anyway, here are some of my goals for 2024:

+ +

(The way I set goals is I try to set a specific goals with trackable metric and also the a system or daily action to achieve it.)

+ +

+Outcomes

+ + +

+System

+ + +

I realize that it’s a lot of goals and I may need to prioritize. So my main focus would be working, running, reading, and, writing. If I feel overwhelmed at some point, then I may just drop the other goals.

+ + +
+
+ + + diff --git a/assets/main.css b/assets/main.css new file mode 100644 index 0000000..819e0eb --- /dev/null +++ b/assets/main.css @@ -0,0 +1,505 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; } + +/** + * Basic styling + */ +body { + font: 400 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + color: #111; + background-color: #fdfdfd; + -webkit-text-size-adjust: 100%; + -webkit-font-feature-settings: "kern" 1; + -moz-font-feature-settings: "kern" 1; + -o-font-feature-settings: "kern" 1; + font-feature-settings: "kern" 1; + font-kerning: normal; + display: flex; + min-height: 100vh; + flex-direction: column; } + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +.highlight { + margin-bottom: 15px; } + +/** + * `main` element + */ +main { + display: block; + /* Default value of `display` of `main` element is 'inline' in IE 11. */ } + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; } + +/** + * Figures + */ +figure > img { + display: block; } + +figcaption { + font-size: 14px; } + +/** + * Lists + */ +ul, ol { + margin-left: 30px; } + +li > ul, +li > ol { + margin-bottom: 0; } + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: 400; } + +/** + * Links + */ +a { + color: #2a7ae2; + text-decoration: none; } + a:visited { + color: #1756a9; } + a:hover { + color: #111; + text-decoration: underline; } + .social-media-list a:hover { + text-decoration: none; } + .social-media-list a:hover .username { + text-decoration: underline; } + +/** + * Blockquotes + */ +blockquote { + color: #828282; + border-left: 4px solid #e8e8e8; + padding-left: 15px; + font-size: 18px; + letter-spacing: -1px; + font-style: italic; } + blockquote > :last-child { + margin-bottom: 0; } + +/** + * Code formatting + */ +pre, +code { + font-size: 15px; + border: 1px solid #e8e8e8; + border-radius: 3px; + background-color: #eef; } + +code { + padding: 1px 5px; } + +pre { + padding: 8px 12px; + overflow-x: auto; } + pre > code { + border: 0; + padding-right: 0; + padding-left: 0; } + +/** + * Wrapper + */ +.wrapper { + max-width: -webkit-calc(800px - (30px * 2)); + max-width: calc(800px - (30px * 2)); + margin-right: auto; + margin-left: auto; + padding-right: 30px; + padding-left: 30px; } + @media screen and (max-width: 800px) { + .wrapper { + max-width: -webkit-calc(800px - (30px)); + max-width: calc(800px - (30px)); + padding-right: 15px; + padding-left: 15px; } } + +/** + * Clearfix + */ +.wrapper:after, .footer-col-wrapper:after { + content: ""; + display: table; + clear: both; } + +/** + * Icons + */ +.svg-icon { + width: 16px; + height: 16px; + display: inline-block; + fill: #828282; + padding-right: 5px; + vertical-align: text-top; } + +.social-media-list li + li { + padding-top: 5px; } + +/** + * Tables + */ +table { + margin-bottom: 30px; + width: 100%; + text-align: left; + color: #3f3f3f; + border-collapse: collapse; + border: 1px solid #e8e8e8; } + table tr:nth-child(even) { + background-color: #f7f7f7; } + table th, table td { + padding: 10px 15px; } + table th { + background-color: #f0f0f0; + border: 1px solid #dedede; + border-bottom-color: #c9c9c9; } + table td { + border: 1px solid #e8e8e8; } + +/** + * Site header + */ +.site-header { + border-top: 5px solid #424242; + border-bottom: 1px solid #e8e8e8; + min-height: 55.95px; + position: relative; } + +.site-title { + font-size: 26px; + font-weight: 300; + line-height: 54px; + letter-spacing: -1px; + margin-bottom: 0; + float: left; } + .site-title, .site-title:visited { + color: #424242; } + +.site-nav { + float: right; + line-height: 54px; } + .site-nav .nav-trigger { + display: none; } + .site-nav .menu-icon { + display: none; } + .site-nav .page-link { + color: #111; + line-height: 1.5; } + .site-nav .page-link:not(:last-child) { + margin-right: 20px; } + @media screen and (max-width: 600px) { + .site-nav { + position: absolute; + top: 9px; + right: 15px; + background-color: #fdfdfd; + border: 1px solid #e8e8e8; + border-radius: 5px; + text-align: right; } + .site-nav label[for="nav-trigger"] { + display: block; + float: right; + width: 36px; + height: 36px; + z-index: 2; + cursor: pointer; } + .site-nav .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; } + .site-nav .menu-icon > svg { + fill: #424242; } + .site-nav input ~ .trigger { + clear: both; + display: none; } + .site-nav input:checked ~ .trigger { + display: block; + padding-bottom: 5px; } + .site-nav .page-link { + display: block; + padding: 5px 10px; + margin-left: 20px; } + .site-nav .page-link:not(:last-child) { + margin-right: 0; } } + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid #e8e8e8; + padding: 30px 0; } + +.footer-heading { + font-size: 18px; + margin-bottom: 15px; } + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; } + +.footer-col-wrapper { + font-size: 15px; + color: #828282; + margin-left: -15px; } + +.footer-col { + float: left; + margin-bottom: 15px; + padding-left: 15px; } + +.footer-col-1 { + width: -webkit-calc(35% - (30px / 2)); + width: calc(35% - (30px / 2)); } + +.footer-col-2 { + width: -webkit-calc(20% - (30px / 2)); + width: calc(20% - (30px / 2)); } + +.footer-col-3 { + width: -webkit-calc(45% - (30px / 2)); + width: calc(45% - (30px / 2)); } + +@media screen and (max-width: 800px) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (30px / 2)); + width: calc(50% - (30px / 2)); } + + .footer-col-3 { + width: -webkit-calc(100% - (30px / 2)); + width: calc(100% - (30px / 2)); } } +@media screen and (max-width: 600px) { + .footer-col { + float: none; + width: -webkit-calc(100% - (30px / 2)); + width: calc(100% - (30px / 2)); } } +/** + * Page content + */ +.page-content { + padding: 30px 0; + flex: 1; } + +.page-heading { + font-size: 32px; } + +.post-list-heading { + font-size: 28px; } + +.post-list { + margin-left: 0; + list-style: none; } + .post-list > li { + margin-bottom: 30px; } + +.post-meta { + font-size: 14px; + color: #828282; } + +.post-link { + display: block; + font-size: 24px; } + +/** + * Posts + */ +.post-header { + margin-bottom: 30px; } + +.post-title { + font-size: 42px; + letter-spacing: -1px; + line-height: 1; } + @media screen and (max-width: 800px) { + .post-title { + font-size: 36px; } } + +.post-content { + margin-bottom: 30px; } + .post-content h2 { + font-size: 32px; } + @media screen and (max-width: 800px) { + .post-content h2 { + font-size: 28px; } } + .post-content h3 { + font-size: 26px; } + @media screen and (max-width: 800px) { + .post-content h3 { + font-size: 22px; } } + .post-content h4 { + font-size: 20px; } + @media screen and (max-width: 800px) { + .post-content h4 { + font-size: 18px; } } + +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; } + .highlighter-rouge .highlight { + background: #eef; } + .highlight .c { + color: #998; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + font-weight: bold; } + .highlight .o { + font-weight: bold; } + .highlight .cm { + color: #998; + font-style: italic; } + .highlight .cp { + color: #999; + font-weight: bold; } + .highlight .c1 { + color: #998; + font-style: italic; } + .highlight .cs { + color: #999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000; + background-color: #fdd; } + .highlight .gd .x { + color: #000; + background-color: #faa; } + .highlight .ge { + font-style: italic; } + .highlight .gr { + color: #a00; } + .highlight .gh { + color: #999; } + .highlight .gi { + color: #000; + background-color: #dfd; } + .highlight .gi .x { + color: #000; + background-color: #afa; } + .highlight .go { + color: #888; } + .highlight .gp { + color: #555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaa; } + .highlight .gt { + color: #a00; } + .highlight .kc { + font-weight: bold; } + .highlight .kd { + font-weight: bold; } + .highlight .kp { + font-weight: bold; } + .highlight .kr { + font-weight: bold; } + .highlight .kt { + color: #458; + font-weight: bold; } + .highlight .m { + color: #099; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #458; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #900; + font-weight: bold; } + .highlight .nf { + color: #900; + font-weight: bold; } + .highlight .nn { + color: #555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + font-weight: bold; } + .highlight .w { + color: #bbb; } + .highlight .mf { + color: #099; } + .highlight .mh { + color: #099; } + .highlight .mi { + color: #099; } + .highlight .mo { + color: #099; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #099; } diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/attachment/018e0658417462b55fdefec15988097d.webp b/attachment/018e0658417462b55fdefec15988097d.webp new file mode 100644 index 0000000..af0bfe5 Binary files /dev/null and b/attachment/018e0658417462b55fdefec15988097d.webp differ diff --git a/attachment/088be99867dcade04759a69d1e8e34e2.webp b/attachment/088be99867dcade04759a69d1e8e34e2.webp new file mode 100644 index 0000000..1bfdde0 Binary files /dev/null and b/attachment/088be99867dcade04759a69d1e8e34e2.webp differ diff --git a/attachment/1fd8b49a3ef32abdc01512b0068f2f1b.webp b/attachment/1fd8b49a3ef32abdc01512b0068f2f1b.webp new file mode 100644 index 0000000..3fc384b Binary files /dev/null and b/attachment/1fd8b49a3ef32abdc01512b0068f2f1b.webp differ diff --git a/attachment/20367556566557f684a471e8adaf9d6d.webp b/attachment/20367556566557f684a471e8adaf9d6d.webp new file mode 100644 index 0000000..105147a Binary files /dev/null and b/attachment/20367556566557f684a471e8adaf9d6d.webp differ diff --git a/attachment/360c95894a352b0708cec094584839a0.webp b/attachment/360c95894a352b0708cec094584839a0.webp new file mode 100644 index 0000000..ea791f8 Binary files /dev/null and b/attachment/360c95894a352b0708cec094584839a0.webp differ diff --git a/attachment/5b7710ec7c25323c501fb4c856e82373.webp b/attachment/5b7710ec7c25323c501fb4c856e82373.webp new file mode 100644 index 0000000..59e10e2 Binary files /dev/null and b/attachment/5b7710ec7c25323c501fb4c856e82373.webp differ diff --git a/attachment/5bdb73ef9e64c0dc48d2a3cdb8618e99.webp b/attachment/5bdb73ef9e64c0dc48d2a3cdb8618e99.webp new file mode 100644 index 0000000..10c2f9e Binary files /dev/null and b/attachment/5bdb73ef9e64c0dc48d2a3cdb8618e99.webp differ diff --git a/attachment/6219b6be153715a94e8dc77eed5b951c.webp b/attachment/6219b6be153715a94e8dc77eed5b951c.webp new file mode 100644 index 0000000..9001f44 Binary files /dev/null and b/attachment/6219b6be153715a94e8dc77eed5b951c.webp differ diff --git a/attachment/9be2d860a0be2927f817bdbc28bca010.webp b/attachment/9be2d860a0be2927f817bdbc28bca010.webp new file mode 100644 index 0000000..f61a074 Binary files /dev/null and b/attachment/9be2d860a0be2927f817bdbc28bca010.webp differ diff --git a/attachment/a1fe311e91b202918240d2577b2ab99b.webp b/attachment/a1fe311e91b202918240d2577b2ab99b.webp new file mode 100644 index 0000000..e0d30e8 Binary files /dev/null and b/attachment/a1fe311e91b202918240d2577b2ab99b.webp differ diff --git a/attachment/dd8db32dcf4b73c2f7a35a2ff2d2f122.webp b/attachment/dd8db32dcf4b73c2f7a35a2ff2d2f122.webp new file mode 100644 index 0000000..1cded73 Binary files /dev/null and b/attachment/dd8db32dcf4b73c2f7a35a2ff2d2f122.webp differ diff --git a/attachment/effd7af2935dcd77004ebc3d5f37aa69.webp b/attachment/effd7af2935dcd77004ebc3d5f37aa69.webp new file mode 100644 index 0000000..9dd3b09 Binary files /dev/null and b/attachment/effd7af2935dcd77004ebc3d5f37aa69.webp differ diff --git a/attachment/f61977546546e0191942aae83db9215f.webp b/attachment/f61977546546e0191942aae83db9215f.webp new file mode 100644 index 0000000..98570e6 Binary files /dev/null and b/attachment/f61977546546e0191942aae83db9215f.webp differ diff --git a/attachment/habits1.webp b/attachment/habits1.webp new file mode 100644 index 0000000..def22b7 Binary files /dev/null and b/attachment/habits1.webp differ diff --git a/attachment/habits1.webp:Zone.Identifier b/attachment/habits1.webp:Zone.Identifier new file mode 100644 index 0000000..ac5c514 --- /dev/null +++ b/attachment/habits1.webp:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://cloudconvert.com/ +HostUrl=https://eu-central.storage.cloudconvert.com/tasks/86af19f3-4cb0-423c-919d-523f71488eaa/Screenshot_2024-01-11-17-50-28-883_org.isoron.uhabits.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=cloudconvert-production%2F20240111%2Ffra%2Fs3%2Faws4_request&X-Amz-Date=20240111T102743Z&X-Amz-Expires=86400&X-Amz-Signature=ec388494e17e7c2a5923119b91c2744ccd1368dab6c09876cb9705f7777fed65&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22Screenshot_2024-01-11-17-50-28-883_org.isoron.uhabits.webp%22&response-content-type=image%2Fwebp&x-id=GetObject diff --git a/attachment/habits2.webp b/attachment/habits2.webp new file mode 100644 index 0000000..4db5776 Binary files /dev/null and b/attachment/habits2.webp differ diff --git a/attachment/habits2.webp:Zone.Identifier b/attachment/habits2.webp:Zone.Identifier new file mode 100644 index 0000000..4a01641 --- /dev/null +++ b/attachment/habits2.webp:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://cloudconvert.com/ +HostUrl=https://eu-central.storage.cloudconvert.com/tasks/e131ef19-2a35-42d4-a3d4-50e617cdfa71/Screenshot_2024-01-11-18-01-22-419_org.isoron.uhabits.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=cloudconvert-production%2F20240111%2Ffra%2Fs3%2Faws4_request&X-Amz-Date=20240111T102743Z&X-Amz-Expires=86400&X-Amz-Signature=ab6a9c3593e5632874ad1967b879dd5c1e99b20693cb6f903e932edc0c6ef88a&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22Screenshot_2024-01-11-18-01-22-419_org.isoron.uhabits.webp%22&response-content-type=image%2Fwebp&x-id=GetObject diff --git a/attachment/habits3.webp b/attachment/habits3.webp new file mode 100644 index 0000000..2e67d6a Binary files /dev/null and b/attachment/habits3.webp differ diff --git a/attachment/habits3.webp:Zone.Identifier b/attachment/habits3.webp:Zone.Identifier new file mode 100644 index 0000000..012a3c3 --- /dev/null +++ b/attachment/habits3.webp:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://cloudconvert.com/ +HostUrl=https://eu-central.storage.cloudconvert.com/tasks/2593488d-2292-4184-9bae-5537ca25153e/Screenshot_2024-01-11-17-55-50-717_org.isoron.uhabits.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=cloudconvert-production%2F20240111%2Ffra%2Fs3%2Faws4_request&X-Amz-Date=20240111T102745Z&X-Amz-Expires=86400&X-Amz-Signature=6e4eeb791c19b6f939129c2c896651ec9546393b845eb62a735533274ef699f3&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22Screenshot_2024-01-11-17-55-50-717_org.isoron.uhabits.webp%22&response-content-type=image%2Fwebp&x-id=GetObject diff --git a/attachment/life-resources.webp b/attachment/life-resources.webp new file mode 100644 index 0000000..7b48657 Binary files /dev/null and b/attachment/life-resources.webp differ diff --git a/attachment/shadow-hill.webp b/attachment/shadow-hill.webp new file mode 100644 index 0000000..55c2f35 Binary files /dev/null and b/attachment/shadow-hill.webp differ diff --git a/attachment/shadow-hill.webp:Zone.Identifier b/attachment/shadow-hill.webp:Zone.Identifier new file mode 100644 index 0000000..4822c7a --- /dev/null +++ b/attachment/shadow-hill.webp:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://cloudconvert.com/ +HostUrl=https://eu-central.storage.cloudconvert.com/tasks/964c117a-36e3-4eec-a9ab-cd5914a3a13d/IMG_3865.webp?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=cloudconvert-production%2F20240111%2Ffra%2Fs3%2Faws4_request&X-Amz-Date=20240111T104445Z&X-Amz-Expires=86400&X-Amz-Signature=e4c438859fb09e21f03ed154720915937359ff50d8e96b82ecc96371e9f2bd13&X-Amz-SignedHeaders=host&response-content-disposition=attachment%3B%20filename%3D%22IMG_3865.webp%22&response-content-type=image%2Fwebp&x-id=GetObject diff --git a/attachment/time-buckets.webp b/attachment/time-buckets.webp new file mode 100644 index 0000000..eb7d201 Binary files /dev/null and b/attachment/time-buckets.webp differ diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 0000000..742a1c9 --- /dev/null +++ b/blog/index.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +

Bucket List Phase: Practicing Bias for Action in Adventures

+ 15 January 2024 +
+ A 'bucket list phase' is a phase where I try to tick off as many bucket list items as possible in a short time period.I ticked off about 50+ things in my bucket list. From surfing, skydiving, scuba diving, freediving, co-piloting a plane, dancing, rock climbing, snowboarding, skiing, sandboarding, solo traveling etc in 1.5 year. I had three main reasons - to practice bias for action, to optimize experience, and to be adventurous. +
+ +

My Annual Review 2023: Travel & Habits

+ 11 January 2024 +
+ 2023 was my year of transition. Shifting from chaotic adventures to habits and routines. Read more to learn about my diving adventures, Japan trip, and my experience in forming good habits. +
+ + + + +
+
+ + diff --git a/bucket-list-phase.html b/bucket-list-phase.html new file mode 100644 index 0000000..1285186 --- /dev/null +++ b/bucket-list-phase.html @@ -0,0 +1,557 @@ + + + + + + + + + + + + + + + + + + + + Bucket List Phase: Practicing Bias for Action in Adventures + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ Bucket List Phase: Practicing Bias for Action in Adventures +
+ +
+
+ Published at 15/01/2024 +

Bucket List Phase: Practicing Bias for Action in Adventures

+ +

+ +

+What I mean by Bucket List Phase

+ +

A ‘bucket list phase’ is a phase where I try to tick off as many bucket list items as possible in a short time period.

+ +

The phase lasted for 1.5 years, and I ticked off about 50+ things in my bucket list. From surfing, skydiving, scuba diving, freediving, co-piloting a plane, dancing, rock climbing, snowboarding, skiing, sandboarding, solo traveling etc.

+ +

+Why?

+ +

I had three main reasons - to practice bias for action, to optimize experience, and to be adventurous.

+ +

+Practicing Bias For Action

+ +

Most people dreams, but only few people actually does things.

+ +

This is the common problem with bucket list. We list down big dreams and goals. But it stays as ideas. There can be many things that preventing us from taking action, for examples:

+ + +

A bias for action is the ability to overcome all this friction and go into action over inaction.

+ +

Increasing the speed between ideas and execution.

+ +
+

Don’t let fear dictate your decisions. Take risks and embrace the unknown. +Bill Perkins, Die With Zero

+
+ +

Fortunately, we can actually do something to reduce the uncertainty, fear, overthinking, and procrastination. Thus, improving our bias for action. Here are some ideas:

+ + + +
+

“Let go of the need for approval from others. Live life on your own terms.” +— Bill Perkins, Die With Zero

+
+ +

All of this can be practiced as skills and made into habits. That means we can train ourselves to have bias for action.

+ +

So, my solution is to practice all these steps until it becomes ingrained.

+ +

I would try to tick off a bucket list item every week. For each goal, I would research on how to do it, then try to do it as soon as possible.

+ +

For example, there are many times where I saw an interesting activity ad, add it to my bucket list, booked the earliest possible date, and actually doing it — all in one week, or even a day.

+ +

+Optimizing for Experience

+ +

The idea to not delay my ‘bucket list’ anymore came to me after learning about time-bucket concept from the Die with Zero book.

+ +

The book argues that certain experience can be better enjoyed at certain period of our life.

+ +

Skiing in our 60s might not be as enjoyable as skiing in our 20s with healthy knees. Backpacking might be more suitable while you are young, where you are at similar age with other travelers, more comfortable with discomfort, and may be broke. Luxury travel might be preferred when you are older, richer, and used to luxury.

+ +

This is because we have varying life resources (time, money, health) at different part of our life.

+ +

+ +

So in order to optimize the benefits and cost from the experiences. We should list all the experience we want to have, and set the best time period to have them based on our resources. This is what we call ‘time-bucketing’ our experiences.

+ +

+ +

For me personally, my early adulthood bucketlist would be trying extreme sports, backpacking, and start a business while I’m still young, fit, and have little commitment.

+ +

But, everyone’s resources and timeline may be different, so make plans based on your own.

+ +

When I started this, I felt like my timing was perfect. I just recently graduated with no other commitment, my freelancing were going well, I have a lot of time and flexibility.

+ +

Note that it also doesn’t necessarily mean it’s too late to start something that is better done when you are younger. Time-bucketing is about optimizing your future experience. Doing it late is still better than never doing it at all.

+ +

You may also want to consider other factors beside time, money, and health. For example, let’s say a family might not be around in 3-5 years. So you might want to spend more time with them early on. Or if there is a place you want to visit that will be destroyed in a few years. You might want to travel there early even when you don’t have much time at that period.

+ +
+

People often delay their dreams too long until the point where they aren’t even physically capable of doing it anymore.

+
+ +

+Being Adventurous

+ +

The third reason is because I wanted to be adventurous.

+ +

It may have stemmed from my childhood dream of being a polymath. I’ve always wanted to learn and experience everything. My bucket list was full of trying new things.

+ +

However, the reality is different. The past 5 years before I started this, I always stuck with programming. It’s likely my fear of looking stupid at trying new things. But I also justified that I need to focus on programming.

+ +

Although my focus helped me succeed in programming, it also brings disadvantages. I had a hard time relating with others. Unless we have a common interest in programming, I’d have nothing to talk about and I was too narrow minded to be interested in their interest. My lack of social skills also didn’t help me in asking questions.

+ +

I also realized that my narrow focus can cause me to have tunnel vision in my career and programming.

+ +

Creative ideas often comes from intersection between two seemingly unrelated areas. A study shows Nobel prize winners are 2.85 times more likely to have artistic or craft hobbies. Many other studies also shows the importance of pastime and diverse interest. Thus, being adventurous and having various experience might actually help me becomes a better researcher or engineer.

+ +

So, once I graduated, I decided to be more adventurous.

+ +

In order to do that, I followed James Clear’s advice.

+ +
+

Every action you take is a vote for the type of person you wish to become. No single instance will transform your beliefs, but as the votes build up, so does the evidence of your new identity. +– James Clear, Atomic Habits

+
+ +

Each new thing I tried every week becomes a vote in reinforcing my identity as being adventurous. As the experience and evidence builds up, I’ve become more confident in embodying that identity.

+ +

+Avoiding Pitfalls

+ +

There are few things I did when planning my bucket list phase: setting a time limit to get off the hedonic treadmill and optimizing for new experience rather than new locations.

+ +

+Set a time limit to get off the hedonic treadmill

+ +

Use hedonic treadmill to your advantage.

+ +

Once your every week is full of thrilling and exciting adventure. Your baseline for happiness will increase. You will keep craving for next novel experience to stay happy. I use this craving as powerful motivator in taking actions for the next goal. However, when uncontrolled, you may end up endlessly seeking new experiences while ignoring other priorities in life.

+ +
+

The world has an effectively infinite number of experiences to offer, so getting a handful of them under your belt brings you no closer to a sense of having feasted on life’s possibilities. Instead, you find yourself pitched straight back into the efficiency trap. The more wonderful experiences you succeed in having, the more additional wonderful experiences you start to feel you could have, or ought to have, on top of all those you’ve already had,

+
    +
  • Oliver Burkeman, Four Thousand Weeks
  • +
+
+ +

My solution is to set a time limit.

+ +

I decided to spend a year, or at most two years in case of unplanned events. Then, I’d have to focus back on my other priorities.

+ +

By setting a short time limit, I’d also have to select bucket list items that can be done in a short time. For example, doing a PhD is not a suitable for this as that would take years. But skydiving, surfing, or diving makes sense as they would only take few days to do.

+ +

Be aware though that stopping will be hard. You will feel the craving for dopamine and adventures. But it will pass. Your happiness baseline will eventually return to normal. And you will be able to focus on routine work again. I’d suggest doing a dopamine detox to help reset your baseline.

+ +

+Optimize new experience rather than locations

+ +

We often want to travel to experience new things.

+ +

However, a new location doesn’t necessarily give an entirely new experience. Some will have fairly similar culture, buildings, language, etc.

+ +

Traveling is expensive, so we want to be sure on what new experience we will be getting on the location. Avoid traveling to new country just to post that Instagram picture or so we can tell people that we’re wanderlust.

+ +

Instead I’d search for activities I want to try or a specific place I really want to visit. If I can do it locally, I’d do it locally since it’s often cheaper. If not, I’d find the closest place to save the cost.

+ +

For example, I can find painting, diving, surfing, or rock climbing class locally. However, I can’t find snow sports, skydiving or shooting range (without needing license). So I went to the closest country where I can do that instead.

+ +

My favorite adventurous activity would be diving since it gives you a totally different experience. The way you move, the way you breath, the trees, and the animals are all different than in land.

+ +

+Activities I tried

+ +

To give some ideas on what activities you can try, here are what I crossed off in that 1.5 year:

+ + + +

+What did I gain?

+ +

+Satisfaction

+ +

I used to feel envy every time I see the lifestyle influencers showing off their adventurous life like diving, surfing, traveling, etc. Endlessly wondering how it felt like and questioning my own choices.

+ +

Now when I see them, I can actually reminisce my own memories, relive them, and be satisfied. At most, I’d just thought, oh I might do that again later.

+ +

Of course you can be satisfied with just simple experiences. However, I find it difficult in the digital age when other people best adventures are constantly shoved into your face.

+ +

It’s much easier for me to actually just do all these experiences.

+ +

+More common interest with people

+ +

Finding a common interest with people is a lot easier if you’ve tried many things.

+ +

They would at least have a hobby on things I’ve tried before. I would have the minimal knowledge on the topic to ask questions. And I can share their own excitement and struggle with my own experience. This hopefully help me form relationship faster as shared experience is one of the biggest factor in forming bonds with people.

+ +

+Increased bias for action and openness to try new things

+ +

Although I didn’t have a measured metric, I believe I’ve improved my bias to take action. This doesn’t just mean being impulsive; rather, it’s about thoughtful decisiveness. Instead of merely daydreaming about what could be, I’ve hopefully transitioned into someone who takes concrete steps to make things happen.

+ +

It was a gradual process, fueled by each new experience. Every time I checked an item off my list, I reinforced a powerful internal narrative: I am someone who acts on my dreams. This mindset has been transformative, extending beyond adventure-seeking into my professional and personal life.

+ +

Moreover, this journey has significantly broadened my openness to new experiences. Previously, I might have hesitated or outright refused certain opportunities due to fear or uncertainty. Now, I find myself more willing to embrace unfamiliar situations. This isn’t recklessness; it’s a newfound appreciation for the richness and diversity of life’s experiences.

+ +

+The Challenges I Faced

+ +

One significant challenge was the planning and coordination required for each activity while still working to finance my activities. I had to put less focus on my career, taking less projects and working less hours to have the time do all my activities.

+ +

There were times when I felt overwhelmed. Juggling multiple activities, along with my regular responsibilities. However, these challenges were integral to the learning process, teaching me valuable lessons in time management, resilience, and the importance of rest and recovery.

+ +

+Reflections and Future Plans

+ +

Reflecting on this phase, I realize that I’ve not only accumulated a wealth of experiences but also grown immensely as a person. My perspectives have broadened, and my approach to life has become more proactive and dynamic.

+ +

As I move forward, my focus will shift slightly.

+ +

While I’ll continue to embrace new experiences, I also plan to delve deeper into a few select areas. This means potentially revisiting some past activities and honing my skills further, be it in a particular sport, art form, or any other domain that piqued my interest.

+ +

+Final Thoughts

+ +

If you’re considering embarking on your own bucket list journey, my advice is to start small and gradually expand your horizons. It’s not about ticking off a list for the sake of it, but about the growth and joy that comes from these experiences.

+ +

Remember, it’s never too late to start. Whether you’re in your 20s, 40s, or even older, there’s a world of experiences waiting for you. So, what’s on your bucket list? Start planning, set achievable goals, and most importantly, take action. Your future self will thank you for the memories, skills, and growth that come from living a life full of adventure and learning.

+ +
+
+ + + diff --git a/cuberunner-privacy-policy.html b/cuberunner-privacy-policy.html new file mode 100644 index 0000000..be47d21 --- /dev/null +++ b/cuberunner-privacy-policy.html @@ -0,0 +1,114 @@ + + + + + + Privacy Policy + + + + Privacy Policy

+ Muhammad Fathy Rashad built the Cube Runner app as + an Ad Supported app. This SERVICE is provided by + Muhammad Fathy Rashad at no cost and is intended for use as + is. +

+ This page is used to inform visitors regarding my + policies with the collection, use, and disclosure of Personal + Information if anyone decided to use my Service. +

+ If you choose to use my Service, then you agree to + the collection and use of information in relation to this + policy. The Personal Information that I collect is + used for providing and improving the Service. I will not use or share your information with + anyone except as described in this Privacy Policy. +

+ The terms used in this Privacy Policy have the same meanings + as in our Terms and Conditions, which is accessible at + Cube Runner unless otherwise defined in this Privacy Policy. +

Information Collection and Use

+ For a better experience, while using our Service, I + may require you to provide us with certain personally + identifiable information, including but not limited to Advertising ID. The information that + I request will be retained on your device and is not collected by me in any way. +

+ The app does use third party services that may collect + information used to identify you. +

+ Link to privacy policy of third party service providers used + by the app +

Log Data

+ I want to inform you that whenever you + use my Service, in a case of an error in the app + I collect data and information (through third party + products) on your phone called Log Data. This Log Data may + include information such as your device Internet Protocol + (“IP”) address, device name, operating system version, the + configuration of the app when utilizing my Service, + the time and date of your use of the Service, and other + statistics. +

Cookies

+ Cookies are files with a small amount of data that are + commonly used as anonymous unique identifiers. These are sent + to your browser from the websites that you visit and are + stored on your device's internal memory. +

+ This Service does not use these “cookies” explicitly. However, + the app may use third party code and libraries that use + “cookies” to collect information and improve their services. + You have the option to either accept or refuse these cookies + and know when a cookie is being sent to your device. If you + choose to refuse our cookies, you may not be able to use some + portions of this Service. +

Service Providers

+ I may employ third-party companies and + individuals due to the following reasons: +

+ I want to inform users of this Service + that these third parties have access to your Personal + Information. The reason is to perform the tasks assigned to + them on our behalf. However, they are obligated not to + disclose or use the information for any other purpose. +

Security

+ I value your trust in providing us your + Personal Information, thus we are striving to use commercially + acceptable means of protecting it. But remember that no method + of transmission over the internet, or method of electronic + storage is 100% secure and reliable, and I cannot + guarantee its absolute security. +

Links to Other Sites

+ This Service may contain links to other sites. If you click on + a third-party link, you will be directed to that site. Note + that these external sites are not operated by me. + Therefore, I strongly advise you to review the + Privacy Policy of these websites. I have + no control over and assume no responsibility for the content, + privacy policies, or practices of any third-party sites or + services. +

Children’s Privacy

+ These Services do not address anyone under the age of 13. + I do not knowingly collect personally + identifiable information from children under 13. In the case + I discover that a child under 13 has provided + me with personal information, I immediately + delete this from our servers. If you are a parent or guardian + and you are aware that your child has provided us with + personal information, please contact me so that + I will be able to do necessary actions. +

Changes to This Privacy Policy

+ I may update our Privacy Policy from + time to time. Thus, you are advised to review this page + periodically for any changes. I will + notify you of any changes by posting the new Privacy Policy on + this page. +

This policy is effective as of 2020-05-10

Contact Us

+ If you have any questions or suggestions about my + Privacy Policy, do not hesitate to contact me at m.fathyrashad@gmail.com. +

+ This privacy policy page was created at + privacypolicytemplate.net + and modified/generated by + App Privacy Policy Generator

+ + + \ No newline at end of file diff --git a/deploy b/deploy new file mode 100755 index 0000000..c1e37a3 --- /dev/null +++ b/deploy @@ -0,0 +1,59 @@ +#!/bin/bash + +# Stop on error +set -e +# Fail on pipe errors +set -o pipefail + +# Variables +BRANCH="gh-pages" +BRANCH_FROM="master" +DEPLOY_CONFIG="_config-deploy.yml" + +# Get the current Git repository URL +URL=$(git config --get remote.origin.url) +if [ -z "$URL" ]; then + echo "Error: Not a Git repository or no remote set." + exit 1 +fi + +# Get the current working directory as the source +SRC=$(pwd) + +# Create a temporary directory +TEMP=$(mktemp -d -t jgd-XXX) + +# Function to clean up temporary directory on exit +function cleanup { + rm -rf "$TEMP" +} +trap cleanup EXIT + +# Clone and copy directories +CLONE="$TEMP/clone" +# echo -e 'Cloning Github repository:' +# git clone -b "$BRANCH_FROM" "$URL" "$CLONE" + +# Build Jekyll site + +echo -e '\nBuilding Jekyll site:' +# rm -rf _site +if [ -r "$SRC/$DEPLOY_CONFIG" ]; then + bundle exec jekyll build --config "$SRC/$DEPLOY_CONFIG" +else + bundle exec jekyll build +fi + +cp -r _site "$CLONE" +cd "$CLONE" + +# Push _site to gh-pages branch +touch .nojekyll +git init +git remote add origin "$URL" +git checkout -b "$BRANCH" +git add . +git commit -m "Deploy Jekyll site" +git push -u origin "$BRANCH" --force + +# echo "Jekyll site deployed to $BRANCH branch." \ No newline at end of file diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..01abb46 Binary files /dev/null and b/favicon.png differ diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..757a0b6 --- /dev/null +++ b/feed.xml @@ -0,0 +1,665 @@ +Jekyll2024-01-15T17:18:09+08:00/feed.xmlYour awesome titleWrite an awesome description for your new site here. You can edit this line in _config.yml. It will appear in your document head meta (for Google search results) and in your feed.xml site description.Bucket List Phase: Practicing Bias for Action in Adventures2024-01-15T13:11:15+08:002024-01-15T13:11:15+08:00/bucket-list-phaseBucket List Phase: Practicing Bias for Action in Adventures + +

+ +

What I mean by Bucket List Phase

+ +

A ‘bucket list phase’ is a phase where I try to tick off as many bucket list items as possible in a short time period.

+ +

The phase lasted for 1.5 years, and I ticked off about 50+ things in my bucket list. From surfing, skydiving, scuba diving, freediving, co-piloting a plane, dancing, rock climbing, snowboarding, skiing, sandboarding, solo traveling etc.

+ +

Why?

+ +

I had three main reasons - to practice bias for action, to optimize experience, and to be adventurous.

+ +

Practicing Bias For Action

+ +

Most people dreams, but only few people actually does things.

+ +

This is the common problem with bucket list. We list down big dreams and goals. But it stays as ideas. There can be many things that preventing us from taking action, for examples:

+
    +
  • Uncertainty — We don’t know how to accomplish it so it feels distant and impossible.
  • +
  • Fear — We fear uncertainty, and we don’t even try because we’re afraid of failing
  • +
  • Overthinking — We think all the excuses why it cannot be done like time and money (without actually researching).
  • +
  • Procrastination — We decide we will do it later (but actually never).
  • +
+ +

A bias for action is the ability to overcome all this friction and go into action over inaction.

+ +

Increasing the speed between ideas and execution.

+ +
+

Don’t let fear dictate your decisions. Take risks and embrace the unknown. +Bill Perkins, Die With Zero

+
+ +

Fortunately, we can actually do something to reduce the uncertainty, fear, overthinking, and procrastination. Thus, improving our bias for action. Here are some ideas:

+ +
    +
  • Uncertainty +
      +
    • Gain clarity by planning and researching on how to do it.
    • +
    • Break the goal into small steps and plan the specific like when and where to do it.
    • +
    +
  • +
  • Fear +
      +
    • Identify the fear and inspect whether it is rational or irrational. We often have many bias that exaggerate the fear.
    • +
    • If it’s valid fear, take a calculated risk and decide whether you actually want to do it.
    • +
    • Face your fear gradually as exposure therapy
    • +
    +
  • +
  • Overthinking +
      +
    • Overthinking is often caused by fear and uncertainty. Identifying and resolving both with the above can help
    • +
    • Clear & organize your thought with journaling. Avoid repetitive thinking and structure your thoughts. Then reflect on your thoughts whether it’s rational or biased by emotion.
    • +
    +
  • +
  • Procrastination +
      +
    • We often procrastinate due to lack of clarity.
    • +
    • Plan where and when to do it and commit.
    • +
    • If you still never get motivated to do it. Then maybe you don’t actually want to do it and just following what other people think it’s cool. Re-evaluate your goals again.
    • +
    +
  • +
+ +
+

“Let go of the need for approval from others. Live life on your own terms.” +— Bill Perkins, Die With Zero

+
+ +

All of this can be practiced as skills and made into habits. That means we can train ourselves to have bias for action.

+ +

So, my solution is to practice all these steps until it becomes ingrained.

+ +

I would try to tick off a bucket list item every week. For each goal, I would research on how to do it, then try to do it as soon as possible.

+ +

For example, there are many times where I saw an interesting activity ad, add it to my bucket list, booked the earliest possible date, and actually doing it — all in one week, or even a day.

+ +

Optimizing for Experience

+ +

The idea to not delay my ‘bucket list’ anymore came to me after learning about time-bucket concept from the Die with Zero book.

+ +

The book argues that certain experience can be better enjoyed at certain period of our life.

+ +

Skiing in our 60s might not be as enjoyable as skiing in our 20s with healthy knees. Backpacking might be more suitable while you are young, where you are at similar age with other travelers, more comfortable with discomfort, and may be broke. Luxury travel might be preferred when you are older, richer, and used to luxury.

+ +

This is because we have varying life resources (time, money, health) at different part of our life.

+ +

+ +

So in order to optimize the benefits and cost from the experiences. We should list all the experience we want to have, and set the best time period to have them based on our resources. This is what we call ‘time-bucketing’ our experiences.

+ +

+ +

For me personally, my early adulthood bucketlist would be trying extreme sports, backpacking, and start a business while I’m still young, fit, and have little commitment.

+ +

But, everyone’s resources and timeline may be different, so make plans based on your own.

+ +

When I started this, I felt like my timing was perfect. I just recently graduated with no other commitment, my freelancing were going well, I have a lot of time and flexibility.

+ +

Note that it also doesn’t necessarily mean it’s too late to start something that is better done when you are younger. Time-bucketing is about optimizing your future experience. Doing it late is still better than never doing it at all.

+ +

You may also want to consider other factors beside time, money, and health. For example, let’s say a family might not be around in 3-5 years. So you might want to spend more time with them early on. Or if there is a place you want to visit that will be destroyed in a few years. You might want to travel there early even when you don’t have much time at that period.

+ +
+

People often delay their dreams too long until the point where they aren’t even physically capable of doing it anymore.

+
+ +

Being Adventurous

+ +

The third reason is because I wanted to be adventurous.

+ +

It may have stemmed from my childhood dream of being a polymath. I’ve always wanted to learn and experience everything. My bucket list was full of trying new things.

+ +

However, the reality is different. The past 5 years before I started this, I always stuck with programming. It’s likely my fear of looking stupid at trying new things. But I also justified that I need to focus on programming.

+ +

Although my focus helped me succeed in programming, it also brings disadvantages. I had a hard time relating with others. Unless we have a common interest in programming, I’d have nothing to talk about and I was too narrow minded to be interested in their interest. My lack of social skills also didn’t help me in asking questions.

+ +

I also realized that my narrow focus can cause me to have tunnel vision in my career and programming.

+ +

Creative ideas often comes from intersection between two seemingly unrelated areas. A study shows Nobel prize winners are 2.85 times more likely to have artistic or craft hobbies. Many other studies also shows the importance of pastime and diverse interest. Thus, being adventurous and having various experience might actually help me becomes a better researcher or engineer.

+ +

So, once I graduated, I decided to be more adventurous.

+ +

In order to do that, I followed James Clear’s advice.

+ +
+

Every action you take is a vote for the type of person you wish to become. No single instance will transform your beliefs, but as the votes build up, so does the evidence of your new identity. +– James Clear, Atomic Habits

+
+ +

Each new thing I tried every week becomes a vote in reinforcing my identity as being adventurous. As the experience and evidence builds up, I’ve become more confident in embodying that identity.

+ +

Avoiding Pitfalls

+ +

There are few things I did when planning my bucket list phase: setting a time limit to get off the hedonic treadmill and optimizing for new experience rather than new locations.

+ +

Set a time limit to get off the hedonic treadmill

+ +

Use hedonic treadmill to your advantage.

+ +

Once your every week is full of thrilling and exciting adventure. Your baseline for happiness will increase. You will keep craving for next novel experience to stay happy. I use this craving as powerful motivator in taking actions for the next goal. However, when uncontrolled, you may end up endlessly seeking new experiences while ignoring other priorities in life.

+ +
+

The world has an effectively infinite number of experiences to offer, so getting a handful of them under your belt brings you no closer to a sense of having feasted on life’s possibilities. Instead, you find yourself pitched straight back into the efficiency trap. The more wonderful experiences you succeed in having, the more additional wonderful experiences you start to feel you could have, or ought to have, on top of all those you’ve already had,

+
    +
  • Oliver Burkeman, Four Thousand Weeks
  • +
+
+ +

My solution is to set a time limit.

+ +

I decided to spend a year, or at most two years in case of unplanned events. Then, I’d have to focus back on my other priorities.

+ +

By setting a short time limit, I’d also have to select bucket list items that can be done in a short time. For example, doing a PhD is not a suitable for this as that would take years. But skydiving, surfing, or diving makes sense as they would only take few days to do.

+ +

Be aware though that stopping will be hard. You will feel the craving for dopamine and adventures. But it will pass. Your happiness baseline will eventually return to normal. And you will be able to focus on routine work again. I’d suggest doing a dopamine detox to help reset your baseline.

+ +

Optimize new experience rather than locations

+ +

We often want to travel to experience new things.

+ +

However, a new location doesn’t necessarily give an entirely new experience. Some will have fairly similar culture, buildings, language, etc.

+ +

Traveling is expensive, so we want to be sure on what new experience we will be getting on the location. Avoid traveling to new country just to post that Instagram picture or so we can tell people that we’re wanderlust.

+ +

Instead I’d search for activities I want to try or a specific place I really want to visit. If I can do it locally, I’d do it locally since it’s often cheaper. If not, I’d find the closest place to save the cost.

+ +

For example, I can find painting, diving, surfing, or rock climbing class locally. However, I can’t find snow sports, skydiving or shooting range (without needing license). So I went to the closest country where I can do that instead.

+ +

My favorite adventurous activity would be diving since it gives you a totally different experience. The way you move, the way you breath, the trees, and the animals are all different than in land.

+ +

Activities I tried

+ +

To give some ideas on what activities you can try, here are what I crossed off in that 1.5 year:

+ +
    +
  • Slacklining
  • +
  • Obstacle course
  • +
  • Acroyoga
  • +
  • Fishing
  • +
  • Paintball
  • +
  • Surfing
  • +
  • Flowriding
  • +
  • Wakesurfing
  • +
  • Windsurfing
  • +
  • Skateboarding/Surfskating
  • +
  • Snowboarding
  • +
  • Skiing
  • +
  • Sandboarding
  • +
  • Ice skating
  • +
  • Roller skating
  • +
  • DnD Meetup
  • +
  • Rock Climbing Outdoor
  • +
  • Diving +
      +
    • Get PADI license
    • +
    • Dive with sharks
    • +
    • Get PADI Rescue Diver License
    • +
    • Dive in sardine run
    • +
    • Freediving
    • +
    • Night Diving
    • +
    • Wreck Diving
    • +
    +
  • +
  • Swim with whale shark
  • +
  • Learn CPR or take EFR course
  • +
  • Indoor Skydiving
  • +
  • Skydiving
  • +
  • Fly a plane (Co-piloting, one day pilot program)
  • +
  • Split
  • +
  • Backflip +
      +
    • Assisted/trampoline
    • +
    +
  • +
  • Baking class +
      +
    • Bake my own cake for birthday
    • +
    +
  • +
  • BJJ class
  • +
  • gymnastic class
  • +
  • Tennis
  • +
  • Escape room
  • +
  • Start photography & buy a camera
  • +
  • Arts +
      +
    • Acrylic painting
    • +
    • Stained glass painting
    • +
    • Resin Craft
    • +
    • Jewelry Making
    • +
    • Tie-dye
    • +
    • Face painting
    • +
    • Pottery
    • +
    • VR sculpting
    • +
    • Grafitti
    • +
    • 3D arts
    • +
    • Pixel arts
    • +
    • Crochet (Tried but kinda failed)
    • +
    • Cotton candy making
    • +
    • Glassblowing
    • +
    +
  • +
  • Dancing class (Tried 15 different dance classes)
  • +
  • Lockpicking
  • +
  • Golfing
  • +
  • Bowling
  • +
  • Shoot a gun
  • +
  • Buy a VR headset
  • +
  • Music +
      +
    • Play 1-3 song on guitar fingerstyle
    • +
    • Play 1-3 fav song on piano/keyboard
    • +
    • Make music
    • +
    +
  • +
  • Fencing
  • +
  • Cosplay
  • +
  • Stand Up Paddle (SUP) board
  • +
  • See sakura blossoms in Japan
  • +
  • Travel together with a stranger
  • +
  • See a sand dune or desert
  • +
  • Ride a camel
  • +
  • Experience snowfall
  • +
  • Stay on hostel
  • +
  • See Mt. Fuji
  • +
+ +

What did I gain?

+ +

Satisfaction

+ +

I used to feel envy every time I see the lifestyle influencers showing off their adventurous life like diving, surfing, traveling, etc. Endlessly wondering how it felt like and questioning my own choices.

+ +

Now when I see them, I can actually reminisce my own memories, relive them, and be satisfied. At most, I’d just thought, oh I might do that again later.

+ +

Of course you can be satisfied with just simple experiences. However, I find it difficult in the digital age when other people best adventures are constantly shoved into your face.

+ +

It’s much easier for me to actually just do all these experiences.

+ +

More common interest with people

+ +

Finding a common interest with people is a lot easier if you’ve tried many things.

+ +

They would at least have a hobby on things I’ve tried before. I would have the minimal knowledge on the topic to ask questions. And I can share their own excitement and struggle with my own experience. This hopefully help me form relationship faster as shared experience is one of the biggest factor in forming bonds with people.

+ +

Increased bias for action and openness to try new things

+ +

Although I didn’t have a measured metric, I believe I’ve improved my bias to take action. This doesn’t just mean being impulsive; rather, it’s about thoughtful decisiveness. Instead of merely daydreaming about what could be, I’ve hopefully transitioned into someone who takes concrete steps to make things happen.

+ +

It was a gradual process, fueled by each new experience. Every time I checked an item off my list, I reinforced a powerful internal narrative: I am someone who acts on my dreams. This mindset has been transformative, extending beyond adventure-seeking into my professional and personal life.

+ +

Moreover, this journey has significantly broadened my openness to new experiences. Previously, I might have hesitated or outright refused certain opportunities due to fear or uncertainty. Now, I find myself more willing to embrace unfamiliar situations. This isn’t recklessness; it’s a newfound appreciation for the richness and diversity of life’s experiences.

+ +

The Challenges I Faced

+ +

One significant challenge was the planning and coordination required for each activity while still working to finance my activities. I had to put less focus on my career, taking less projects and working less hours to have the time do all my activities.

+ +

There were times when I felt overwhelmed. Juggling multiple activities, along with my regular responsibilities. However, these challenges were integral to the learning process, teaching me valuable lessons in time management, resilience, and the importance of rest and recovery.

+ +

Reflections and Future Plans

+ +

Reflecting on this phase, I realize that I’ve not only accumulated a wealth of experiences but also grown immensely as a person. My perspectives have broadened, and my approach to life has become more proactive and dynamic.

+ +

As I move forward, my focus will shift slightly.

+ +

While I’ll continue to embrace new experiences, I also plan to delve deeper into a few select areas. This means potentially revisiting some past activities and honing my skills further, be it in a particular sport, art form, or any other domain that piqued my interest.

+ +

Final Thoughts

+ +

If you’re considering embarking on your own bucket list journey, my advice is to start small and gradually expand your horizons. It’s not about ticking off a list for the sake of it, but about the growth and joy that comes from these experiences.

+ +

Remember, it’s never too late to start. Whether you’re in your 20s, 40s, or even older, there’s a world of experiences waiting for you. So, what’s on your bucket list? Start planning, set achievable goals, and most importantly, take action. Your future self will thank you for the memories, skills, and growth that come from living a life full of adventure and learning.

]]>
Rashad
My Annual Review 2023: Travel & Habits2024-01-11T19:11:15+08:002024-01-11T19:11:15+08:00/annual-review-2023My Annual Review 2023 + +

+ +

2023 was my year of transitioning from chaotic adventures to habits and routines.

+ +

I spent the first half of 2023 continuing my bucket list phase from 2022. A phase where I constantly try new things. Ticking off my childhood dreams one by one .

+ +

Whether it’s skydiving, co-piloting, scuba diving, freediving, surfing, windsurfing, glassblowing, sandboarding, snowboarding, or skiing — I tried it all. It was chaotic phase full of spontaneous adventure, but ultimately satisfying.

+ +

I ended the phase in July 2023, when I then shifted to a more organized life. I spent the latter part of the year building routines and forming the habits that I want.

+ +

Starting a journaling habit was actually the trigger of how this post came to be. I’ve always wanted to write an annual review since years ago but something always stopped me. Journaling and having a clear record of what happened in 2023 makes writing this a lot easier.

+ +
+

Many people think they lack motivation when what they really lack is clarity
+— James Clear, Atomic Habits

+
+ +

This review will be structured in 3 sections:

+
    +
  • What Went Well
  • +
  • What Didn’t Go Well
  • +
  • My Goals for 2024
  • +
+ +

I will first reflect what went well and what I learned from it. Then, identify what I could improve from things that didn’t go well. Finally, I will share my goals and how I would achieve it for 2024.

+ +

What Went Well?

+ +

I. Travel & Adventure

+ +

In April, I went on a solo trip to Japan and Philippines. I had been aiming to go there specifically because I wanted to tick off my bucket list on snow sports and diving.

+ +

The plan was actually almost cancelled after getting ill near the planned date. But I recovered barely in time before winter ends and pushed for the trip. It also means I had to travel during fasting month of Ramadhan, which is an interesting experience by itself (I saved a lot of money on food & had iftaar at Japan mosques).

+ +

Japan: Snow, Sand, and Sakura

+ +

I had many first experiences in Japan. From experiencing my first snowfall and sakura blossoms, snowboarding and skiing, trying out glassblowing. Seeing so much sand for the first time in sand dune and riding a camel. Yes, sand dune. Not many people know there is a desert in Japan. I even tried sandboarding on the sand dune.

+ +

+ +

Some memorable social interactions also happened in the trip. My favorite one was hiking together with a stranger after we helped each other take pictures. We even got a sakura flavored ice cream together at the end!

+ +

I learned many things about traveling from the trip:

+
    +
  • I learned more about planning (thanks r/JapanTravel) and applying for visa early.
  • +
  • I became more confident in travelling solo, like staying in hostel and socializing with fellow travelers.
  • +
  • I got used to walking far distance and started walking more after the trip
  • +
  • I became more comfortable in taking self portrait and doing the walk of shame to the camera. I improved my photography skills a lot.
  • +
  • I finally experienced how winter and cold country feels like.
  • +
+ +

I also made many mistakes that became lessons and fond memories now. From sleeping in the airport after missing the last train and finding out it’s not so bad after all. Or dropping off train at the wrong small village, that turns into a nice photoshoot sessions with train tracks and mountains.

+ +

I learned to be more comfortable in spontaneity. And to practice the habit of seeing the upsides in misfortune and viewing them as possible lesson and serendipity.

+ +
+

Looking for the positive side of every challenge can become a habit, and so can finding the cloud in every silver lining.
+— Jeff Olson, The Slight Edge

+
+ +

There were many other anecdotes that’d be too long to include. Instead, you can checkout my Japan trip post for more details on the activities, costs, etc.

+ +

Philippines: Whale Shark and Sardines

+ +

After Japan, I went to Cebu in Philippines. My main goals were to swim with the Whale Shark and dive amongst millions of fish in a sardine run. Both were majestic experiences. One left me in awe with the vastness of size and the other with the number of lives swimming around me. I wish to see an even bigger animal like the blue whale one day.

+ +

+ +

The trip was also the pivotal moment where I started to really enjoy diving. My previous dives before this was the diving course. I did my diving course in rough weather during monsoon, where I’m constantly stressed with learning the skills in low visibility and rough waves. The dives in the Philippines were the moment where I could truly relax and explore.

+ +

Family Dive and Underwater Volcano

+ +

Few days after the trip. I celebrated Eid Fitri with my family in Sabang (The Weh Island), Indonesia. A fond memory where my whole family tried diving together with Discover Scuba over there.

+ +

Sabang surprisingly has many fish. But the corals suffered a lot due to the tsunami. +There is also an underwater volcano in Sabang. A unique albeit quite underwhelming experience. It’s mainly small holes with bubbles, where the surrounding water are warm.

+ +

+ +

Rescue Diver Course and Night Diving

+ +

Still not satisfied with diving, I went on another diving trip to Perhentian Island where I took Adv + Rescue Diver course.

+ +

The course took 1 week and gave me many new diving experience. One of my favorite course was the search & recovery specialization where the instructor hide a small item like a bracelet in the sea, and we are supposed to search it. We also practiced on real situation where we volunteered to search a missing fin by another diver.

+ +

Besides that, the roleplay element on the rescue course was also fun. Watching the girls’ distressed acting can be very entertaining. And we also learned CPR and other life saving skills in the course.

+ +

While still in the island, I also went on my first night dive which became one of my favorite. I loved the silence during the night. The limited light by the diving torch also makes me fully focus and be present on certain spot.

+ +

+ +

Seeing bioluminescence during the night always left me in awe. The first bioluminescence I saw was a cuttlefish with a glowing belly. The second was glowing red and blue planktons swarming our torch light.

+ +

Another favorite creature I discovered was ghost shrimps, a shrimp with transparent body. I also encountered many sea creatures that I never see during the day. I remember noticing many sea urchins — and they were moving! The only cons of night diving to me was the blurry videos I got due to the low light.

+ +

Freediving

+ +

+ +

My final adventure was a freediving trip in Tenggol island.

+ +

I’ve had few classes on freediving in the city and only need to do some final practice on the open water for the certificate. We would swim from the beach a bit far to the sea , with a life buoy on tow. Then we’ll lower down a line from the buoy. The line will be used as assistance when freediving to the bottom. We will take turns freediving one by one. While we take our rest gasping for breaths, the instructor is diving tirelessly for our safety

+ +

On my first day, I struggled to equalize my ear. Equalizing your ear means pushing out air from your ear to balance the ear pressure to the water pressure at depth. I had no problem doing this normally, but cannot do so when I’m upside down.

+ +

I managed to do it on the second day after using this trick of sucking my nose & mask before equalizing. But I also end up popping blood vessels in my eye and nose by doing so. By sucking the air from my mask air pocket, it also pressurize my mask, which proved to be too much pressure for my blood vessels. Thus, I had bloody eyes and nose after the dive.

+ +

+ +

Luckily, there was a doctor amongst the student and he relieved me by saying it’s not fatal and will be gone in few weeks. My eyes continued to be completely blood red for about 2 weeks before it recovers.

+ +

Anyway, I was happy I got my Molchanovs freediving cert with my best depth at 15m. Despite the exhausting training during the trip, I find the sport aspect of pushing yourself in freediving and the trip enjoyable. Although I still prefer scuba diving for recreational sea exploration.

+ +

Overall, after constantly pushing myself to near-drowning, I definitely become more confident in being underwater.

+ +

II. Self-Improvement

+ +

After all my traveling and diving, I started to run low on money.

+ +

I decided that it’s finally enough and I should focus on work again. However, shifting from constantly having fun with novel experiences back to daily grind of work proves to be quite challenging. I end up spending my days on my phone constantly looking for dopamine and barely able to put any work hours in.

+ +

I realized I need to restructure my life. Then, I remembered about Atomic Habits. I didn’t apply the book on forming habits previously with the excuse that my life is too chaotic when I constantly try new things and I wanted to experience life full of spontaneity for a while. But now that I ended my bucket list phase, I had no excuse anymore.

+ +

Habits

+ +

So, I started to fully apply the Atomic Habit lessons. Starting with my phone or dopamine addiction.

+ +

Make it difficult — I deleted my social media apps.

+ +

Make it unattractive — I put my screen time in my home screen, so I’m always reminded how much time I wasted on phone.

+ +

Then, I replaced the instant gratification activities with reading non-fiction books. And it worked. Most of my time spent on phone was then spent on reading non-fictions on my kindle instead.

+ +

Next, I started forming other basic habits: waking up early & Tahajud prayer, lifting weights, journaling, eating enough calories, and reading before sleep.

+ +

Make it easy — I searched for tools I’d enjoy the most and make it the easiest for me. I chose Diarium for journaling.

+ +

Keep track of progress — I use Habit Loop for tracking habits, Strava to track running distance, Smashrun for running achievements & statistic, and Rize for time tracking.

+ +

+ +

Tracking habits and keeping my streaks was the biggest motivator that kept me consistent with my habits. Despite a few early failures, I was able to keep my habits for about 2-4 weeks.

+ +

However, one day after completing a stressful project, I celebrated by playing a game. This became my downfall as I spiraled into binge gaming for about 1 and half months. I couldn’t stop playing Baldur Gate 3 and The Outer Wild once I started it. This was the caveat of streaks, one relapse can easily snowballs to more once I lose my streak.

+ +

+ +

After completing the games, I was able to restart my habits again. Thus, I started adding new habits week by week. I had this idea of applying the book I read as a new habit.

+ +

For example, I was inspired to run and seek discomfort after reading Can’t Hurt Me by David Goggins. So I added a habit of doing chores, running, and stretching everyday. And I stacked the habits as part of the morning routine.

+ +

Then, I was inspired in donating more after reading Doing Good Better: Effective Altruism. So I started a donation habit. And I did the same for several other books.

+ +

In the end, I managed to kept the habits until the end of the year. Which is why I considered as a success. It became easier once I passed the 30+ days streak.

+ +

III. Fitness

+ +

Fitness was the only thing I was able to keep fairly consistent over the full year.

+ +

Even during the least productive period or binging sessions, I would still do a short exercise once in 2 week at minimum. Having a home gym equipment like pull-up bar, dumbells, and gymnastic rings were the game changer on making this possible.

+ +

It’s about reducing the friction to workout as much as possible. Doing a pull up or a ring dip would only take a few seconds every time I walked around the house.

+ +

However, I noticed that my posture is getting worse despite all the exercise I did. I had a slight Anterior Pelvic Tilt (APT). Although prolonged sitting may have affected this, I also suspected muscle imbalance may play a role. I thought so because I didn’t do a full-body balanced workout routine.

+ +

My home workout mainly focused on weighted pull ups, with some ring dips, overhead press, and occasional pistol squats on the side. Thus, I have overdeveloped lats, minimal leg muscles, and less developed lower traps and rear delts.

+ +

+ +

APT is often associated with weak glutes, tight hip flexors, weak abdominals, and tight back. Although I don’t have severe case of any of them, the combination of my less developed glutes, overdeveloped lats, and my prolonged sitting probably adds up and caused the slight APT.

+ +

Gym

+ +

To fix my posture, I started going to the gym to train deadlift and squat around June.

+ +

There is a small local gym near me within 10 min of walking. It used to be too far for me. But I became a lot more comfortable in walking far distance after my trip from Japan. Thus, I had no problem walking to the gym regularly.

+ +

Why did I switch to gym? Training legs is quite difficult with just bodyweight. After I can do few pistol squats, I find it hard to progress further. My other calisthenic exercises have also stalled. Weight training on the contrary is a lot easier to progress:

+
    +
  1. I can add heavier weight than my bodyweight,
  2. +
  3. I can add smaller increment in weights
  4. +
  5. I can keep track of the weights more accurately.
  6. +
+ +

Despite all that, the main reason that convinced me was because I kept hearing how beneficial deadlift and squat exercises are. Like the testosterone boosts or how functional the movement is.

+ +

Anyway, I focused on 3 main lifts in the gym: Deadlift, Squat, Overhead Press, and Row. I also do accessories exercise like face pull & lateral raise at the end of workout.

+ +

By the end of the year, my posture improved. I believe it was mainly due to doing deadlift, rows, and face pull as it strengthen my weak muscles — glutes, hamstring, lower back, traps and rear delts.

+ +

Here are my best lifts over the year:

+
    +
  • 120kg Deadlift
  • +
  • 70kg x 8 Squat
  • +
  • 70kg x 5 Bench Press
  • +
  • +35kg Weighted Pull-up
  • +
  • 50kg x 5 Barbell Overhead Press
  • +
  • 60kg Pendlay row
  • +
+ +

I also successfully gained weight close to my bulking goal. I gained 9kg this year, from 60kg to 69kg. My target was 70kg, with minimal fat gain. So I consider the 90% completion rate as a success.

+ +

Running

+ +

Besides building muscle, I also started my running streak this year. I was inspired to run everyday after reading Can’t Hurt Me by David Goggins. I’m aware that running daily without rest day may not be the most optimal for improving my running. However, my goal is more about achieving self-discipline and mental toughness instead of solely improving running. I was inspired by David Goggin’s mental toughness, not his cardio health.

+ +

I’m also aware that chance of injury will increase by running everyday. So I made few rules to ensure the intensity is manageable:

+
    +
  1. My minimum run is 1 mile or 1.6km
  2. +
  3. I can run at extremely slow pace (e.g 8-9min/km) or alternate run/walk during rest day.
  4. +
  5. I can just walk the distance when I’m sick or injured
  6. +
  7. Keep the pace slow most of the time. Only push hard once or twice a week.
  8. +
  9. Slow down or do the minimum distance if I start feeling any slight pain
  10. +
+ +

With those rules, I managed to keep a 33 day run streak from 29 Nov until the end of the year.

+ +

+

What didn’t go well this year

+ +

I. Writing

+ +

I set a goal of writing 1 tech article every month in my medium blog at the start of the year. How much did I write this year? Zero.

+ +

Why didn’t I write anything?

+ +

I suspect it’s because my interest was more focused on travel and self improvement this year. But, I kept telling myself to write AI or tech articles.

+ +

I had gained a small followers on Medium by solely writing tech articles. So I was afraid I’d lose them if I write things on other topics. In the end, I did not write anything.

+ +

Now that I think about it, the loss of potential new readers by not writing anything probably exceeds the loss of disappointing my current small followers anyway.

+ +

What can I improve in the future?

+
    +
  1. Setup a separate blog for other topics or niches (which is why I setup this blog). Or post it on Medium anyway regardless of the niches or why the followers followed me.
  2. +
  3. Start writing atomic notes of whatever I learned and use that as a starting point. I discovered about Personal Knowledge System and the Zettelkasen method this year. They showed me the power of notes and how it can make writing easier by not starting from a blank page.
  4. +
  5. Start a writing habit. Set aside a small time everyday to write my article.
  6. +
+ +

II. Health

+ +

Many of my plans and goals started to derail in February.

+ +

In that month, I got an unexpected infection that hospitalized me for a few days and required a minor surgery. The doctor left the surgery with an open wound instead of stitching it. So I had to live with the pain of having a gaping wound for a month until it recovers. Simple activities like driving, sitting down, and walking becomes unpleasant, or even painful. To make it worse, I also have to visit a clinic to change the wound dressing, every day.

+ +

The unexpected medical issue was a frustrating and humbling experience. Especially since I exercise regularly and thought that I have a fairly healthy lifestyle.

+ +

The experience reminds me about the unpredictability of life and to be more grateful. It was a reminder that my plans can be derailed at any moment and that my health is a gift that shouldn’t be taken for granted.

+ +

III. Work

+ +

With the medical issue in February and March. I had problem focusing at work with all the discomfort and pain. So I ended my contracted works. Thinking of just restarting the contract or finding new clients altogether once I recover.

+ +

Once I recovered and finished my break. I started working again in July. But I spiraled into binge consumption again in September. Only then I realized that the lack of structure in my schedule is negatively affecting my productivity. I’ve entered the situation Jeff Olson described in his book.

+ +
+

Serving as your own boss, and doing so successfully, consistently, day in and day out, takes an uncommon degree of slight edge integrity, and frankly many business owners just don’t have it. They become intoxicated by the freedom of being their own boss and fail to maintain the kind of structure it takes to become successful.
+— Jeff Olson, The Slight Edge

+
+ +

In summary, I only worked for about 6 months this year. A significant decrease of productivity than last year. I was also quite motivated to try launching a SaaS business this year after reading The Millionaire Fastlane book. Although, I did build few prototypes. I did not ship anything. I lacked the bias for action on top of my productivity issue.

+ +

What can I improve in the future?

+
    +
  1. Schedule and time block deep work sessions. Make it a habit.
  2. +
  3. Keep track of progress like work hours and streaks.
  4. +
  5. Block all distractions during work sessions. Use tool like Rize.
  6. +
  7. Consciously practice bias for action.
  8. +
+ +

IV. Social Life

+ +

My first month was full with social interactions.

+ +

I started the new year with a Genting trip with friends to celebrate Marylin’s birthday. We counted down new year, walked around the theme park, played in arcade, tumbled in kids area, and took a lot of photos.

+ +

Late in January, I also had my first house visit since secondary school! I went to dinner party in Alina’s house to celebrate Melissa’s birthday. We had boardgames, dinner, dances, and whole lot of fun!

+ +

+ +

My social activities stopped when I got ill. I appreciated all my friends that checked in me. But when I’m ill, I like to escape to fantasy land to forget my discomfort.

+ +

Thus, I have this tendency to self-isolate and binge on games and books when I’m sick. Having to check my socials and reply to messages just reminds me of the real world. So I tend to reply very late or not at all. Eventually, we just stopped interacting all together as I continued being a hermit even after I recovered.

+ +

The fact that I don’t really feel lonely didn’t help my social life either. Once I’ve become used to being alone, it’s hard to start the initiative to socialize again. As shown on this study, chronic social isolation can actually cause anti-social behavior.

+ +

In the end, besides my solo trips, I spend the rest of the year mostly staying at home. Although, I think my mental health is fine with my minimal interaction with family. My social skills definitely deteriorated. I know it can’t go on like this. I probably have loss many opportunities because of my lacking social skills and ability to maintain relationship.

+ +

What can I improve in the future?

+
    +
  • Participate in social clubs or hobbies regularly
  • +
  • Improve my ability to express myself (Join toastmaster, improv, debate, speech & drama, or public speaking class)
  • +
  • Take more social initiative. Create a habit of taking social initiate and a system for follow up.
  • +
  • Create more opportunity for 1-1 conversations to form bonds faster.
  • +
  • Be more vulnerable and express my opinions openly. Filter compatibility quickly and meet more people instead.
  • +
+ +

PS: One fortunate event though was discovering Slowly and trying out pen palling in December. I surprisingly had many enjoyable deep conversation from the app. I loved the delayed long-form messaging and writing long letter. It felt like pair journaling. I also noticed that my writing becomes more structured when I’m writing to someone. So I might even be able to reuse it in my blog later.

+ +

Goals for 2024

+ +

My main goals for 2024 is to keep doing my current habits consistently with the year’s theme as self-discipline.

+ +
+

All the information you need is already there. You’re already doing the actions. All you need to do is choose to have them serve and empower you—and keep on choosing
+— Jeff Olson, The Slight Edge

+
+ +

As the quote says, I think I’ve already known enough on what to do to reach my goals and I may be already doing it. I just need to keep doing it. I should avoid the endless researching trap and actually just do it. Instead, I need more consistency and bias for action for this year.

+ +

Like how I spent 2022 reinforcing my identity as adventurous person by constantly trying new thing. I want to reinforce my identity as disciplined person by doing amazing feat of discipline in 2024. As the evidence grow, hopefully so will my identity.

+ +
+

Your identity is not set in stone. You have a choice in every moment. You can choose the identity you want to reinforce today with the habits you choose today.
+— James Clear, Atomic Habits

+
+ +

Anyway, here are some of my goals for 2024:

+ +

(The way I set goals is I try to set a specific goals with trackable metric and also the a system or daily action to achieve it.)

+ +

Outcomes

+
    +
  • Ship a product/Launch a SaaS business
  • +
  • 366 running day in a year
  • +
  • 1000km total year running mileage
  • +
  • Run a marathon
  • +
  • 150kg deadlift, 60kg OHP, 100kg BP, +40kg weighted pull up, 3x FHSPU
  • +
  • 300 days of waking up early/Tahajjud in a year
  • +
  • Complete Duolingo Arabic Course
  • +
  • Read 25 books & write the book reviews/summary
  • +
  • 50 blog posts
  • +
  • Build my social and communication skills
  • +
+ +

System

+
    +
  • Work on building my own product x hour per day
  • +
  • Run minimum 1.6km or 1 mile every day
  • +
  • Workout 3x a week
  • +
  • Wake up early/Tahajud everyday
  • +
  • Duolingo everyday
  • +
  • Read everyday, 1 book every 2 week
  • +
  • Spend an hour writing every day, publish 1 blogpost a week
  • +
  • Toastmaster 2x a month, join running club/improv class
  • +
  • Initiate more 1-1 chats with people, at least once a month?
  • +
+ +

I realize that it’s a lot of goals and I may need to prioritize. So my main focus would be working, running, reading, and, writing. If I feel overwhelmed at some point, then I may just drop the other goals.

]]>
Rashad
\ No newline at end of file diff --git a/fonts/Raleway-Bold.ttf b/fonts/Raleway-Bold.ttf new file mode 100644 index 0000000..38c099c Binary files /dev/null and b/fonts/Raleway-Bold.ttf differ diff --git a/fonts/Raleway-Regular.ttf b/fonts/Raleway-Regular.ttf new file mode 100644 index 0000000..e570a2d Binary files /dev/null and b/fonts/Raleway-Regular.ttf differ diff --git a/fonts/Raleway-SemiBold.ttf b/fonts/Raleway-SemiBold.ttf new file mode 100644 index 0000000..ed0a8b9 Binary files /dev/null and b/fonts/Raleway-SemiBold.ttf differ diff --git a/fonts/mdi/css/materialdesignicons.min.css b/fonts/mdi/css/materialdesignicons.min.css new file mode 100644 index 0000000..92a4670 --- /dev/null +++ b/fonts/mdi/css/materialdesignicons.min.css @@ -0,0 +1,2 @@ +/* MaterialDesignIcons.com */@font-face{font-family:"Material Design Icons";src:url("../fonts/materialdesignicons-webfont-v1.5.54.eot");src:url("../fonts/materialdesignicons-webfont.eot") format("embedded-opentype"),url("../fonts/materialdesignicons-webfont-v1.5.54.woff2") format("woff2"),url("../fonts/materialdesignicons-webfont-v1.5.54.woff") format("woff"),url("../fonts/materialdesignicons-webfont-v1.5.54.ttf") format("truetype"),url("../fonts/materialdesignicons-webfont-v1.5.54.svg") format("svg");font-weight:normal;font-style:normal}.mdi{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mdi-access-point:before{content:"\F002"}.mdi-access-point-network:before{content:"\F003"}.mdi-account:before{content:"\F004"}.mdi-account-alert:before{content:"\F005"}.mdi-account-box:before{content:"\F006"}.mdi-account-box-outline:before{content:"\F007"}.mdi-account-card-details:before{content:"\F5D2"}.mdi-account-check:before{content:"\F008"}.mdi-account-circle:before{content:"\F009"}.mdi-account-convert:before{content:"\F00A"}.mdi-account-key:before{content:"\F00B"}.mdi-account-location:before{content:"\F00C"}.mdi-account-minus:before{content:"\F00D"}.mdi-account-multiple:before{content:"\F00E"}.mdi-account-multiple-minus:before{content:"\F5D3"}.mdi-account-multiple-outline:before{content:"\F00F"}.mdi-account-multiple-plus:before{content:"\F010"}.mdi-account-network:before{content:"\F011"}.mdi-account-off:before{content:"\F012"}.mdi-account-outline:before{content:"\F013"}.mdi-account-plus:before{content:"\F014"}.mdi-account-remove:before{content:"\F015"}.mdi-account-search:before{content:"\F016"}.mdi-account-star:before{content:"\F017"}.mdi-account-star-variant:before{content:"\F018"}.mdi-account-switch:before{content:"\F019"}.mdi-adjust:before{content:"\F01A"}.mdi-air-conditioner:before{content:"\F01B"}.mdi-airballoon:before{content:"\F01C"}.mdi-airplane:before{content:"\F01D"}.mdi-airplane-landing:before{content:"\F5D4"}.mdi-airplane-off:before{content:"\F01E"}.mdi-airplane-takeoff:before{content:"\F5D5"}.mdi-airplay:before{content:"\F01F"}.mdi-alarm:before{content:"\F020"}.mdi-alarm-check:before{content:"\F021"}.mdi-alarm-multiple:before{content:"\F022"}.mdi-alarm-off:before{content:"\F023"}.mdi-alarm-plus:before{content:"\F024"}.mdi-album:before{content:"\F025"}.mdi-alert:before{content:"\F026"}.mdi-alert-box:before{content:"\F027"}.mdi-alert-circle:before{content:"\F028"}.mdi-alert-circle-outline:before{content:"\F5D6"}.mdi-alert-octagon:before{content:"\F029"}.mdi-alert-outline:before{content:"\F02A"}.mdi-alpha:before{content:"\F02B"}.mdi-alphabetical:before{content:"\F02C"}.mdi-altimeter:before{content:"\F5D7"}.mdi-amazon:before{content:"\F02D"}.mdi-amazon-clouddrive:before{content:"\F02E"}.mdi-ambulance:before{content:"\F02F"}.mdi-amplifier:before{content:"\F030"}.mdi-anchor:before{content:"\F031"}.mdi-android:before{content:"\F032"}.mdi-android-debug-bridge:before{content:"\F033"}.mdi-android-studio:before{content:"\F034"}.mdi-animation:before{content:"\F5D8"}.mdi-apple:before{content:"\F035"}.mdi-apple-finder:before{content:"\F036"}.mdi-apple-ios:before{content:"\F037"}.mdi-apple-mobileme:before{content:"\F038"}.mdi-apple-safari:before{content:"\F039"}.mdi-appnet:before{content:"\F03A"}.mdi-apps:before{content:"\F03B"}.mdi-archive:before{content:"\F03C"}.mdi-arrange-bring-forward:before{content:"\F03D"}.mdi-arrange-bring-to-front:before{content:"\F03E"}.mdi-arrange-send-backward:before{content:"\F03F"}.mdi-arrange-send-to-back:before{content:"\F040"}.mdi-arrow-all:before{content:"\F041"}.mdi-arrow-bottom-left:before{content:"\F042"}.mdi-arrow-bottom-right:before{content:"\F043"}.mdi-arrow-collapse:before{content:"\F044"}.mdi-arrow-down:before{content:"\F045"}.mdi-arrow-down-bold:before{content:"\F046"}.mdi-arrow-down-bold-circle:before{content:"\F047"}.mdi-arrow-down-bold-circle-outline:before{content:"\F048"}.mdi-arrow-down-bold-hexagon-outline:before{content:"\F049"}.mdi-arrow-down-drop-circle:before{content:"\F04A"}.mdi-arrow-down-drop-circle-outline:before{content:"\F04B"}.mdi-arrow-expand:before{content:"\F04C"}.mdi-arrow-left:before{content:"\F04D"}.mdi-arrow-left-bold:before{content:"\F04E"}.mdi-arrow-left-bold-circle:before{content:"\F04F"}.mdi-arrow-left-bold-circle-outline:before{content:"\F050"}.mdi-arrow-left-bold-hexagon-outline:before{content:"\F051"}.mdi-arrow-left-drop-circle:before{content:"\F052"}.mdi-arrow-left-drop-circle-outline:before{content:"\F053"}.mdi-arrow-right:before{content:"\F054"}.mdi-arrow-right-bold:before{content:"\F055"}.mdi-arrow-right-bold-circle:before{content:"\F056"}.mdi-arrow-right-bold-circle-outline:before{content:"\F057"}.mdi-arrow-right-bold-hexagon-outline:before{content:"\F058"}.mdi-arrow-right-drop-circle:before{content:"\F059"}.mdi-arrow-right-drop-circle-outline:before{content:"\F05A"}.mdi-arrow-top-left:before{content:"\F05B"}.mdi-arrow-top-right:before{content:"\F05C"}.mdi-arrow-up:before{content:"\F05D"}.mdi-arrow-up-bold:before{content:"\F05E"}.mdi-arrow-up-bold-circle:before{content:"\F05F"}.mdi-arrow-up-bold-circle-outline:before{content:"\F060"}.mdi-arrow-up-bold-hexagon-outline:before{content:"\F061"}.mdi-arrow-up-drop-circle:before{content:"\F062"}.mdi-arrow-up-drop-circle-outline:before{content:"\F063"}.mdi-assistant:before{content:"\F064"}.mdi-at:before{content:"\F065"}.mdi-attachment:before{content:"\F066"}.mdi-audiobook:before{content:"\F067"}.mdi-auto-fix:before{content:"\F068"}.mdi-auto-upload:before{content:"\F069"}.mdi-autorenew:before{content:"\F06A"}.mdi-av-timer:before{content:"\F06B"}.mdi-baby:before{content:"\F06C"}.mdi-backburger:before{content:"\F06D"}.mdi-backspace:before{content:"\F06E"}.mdi-backup-restore:before{content:"\F06F"}.mdi-bank:before{content:"\F070"}.mdi-barcode:before{content:"\F071"}.mdi-barcode-scan:before{content:"\F072"}.mdi-barley:before{content:"\F073"}.mdi-barrel:before{content:"\F074"}.mdi-basecamp:before{content:"\F075"}.mdi-basket:before{content:"\F076"}.mdi-basket-fill:before{content:"\F077"}.mdi-basket-unfill:before{content:"\F078"}.mdi-battery:before{content:"\F079"}.mdi-battery-10:before{content:"\F07A"}.mdi-battery-20:before{content:"\F07B"}.mdi-battery-30:before{content:"\F07C"}.mdi-battery-40:before{content:"\F07D"}.mdi-battery-50:before{content:"\F07E"}.mdi-battery-60:before{content:"\F07F"}.mdi-battery-70:before{content:"\F080"}.mdi-battery-80:before{content:"\F081"}.mdi-battery-90:before{content:"\F082"}.mdi-battery-alert:before{content:"\F083"}.mdi-battery-charging:before{content:"\F084"}.mdi-battery-charging-100:before{content:"\F085"}.mdi-battery-charging-20:before{content:"\F086"}.mdi-battery-charging-30:before{content:"\F087"}.mdi-battery-charging-40:before{content:"\F088"}.mdi-battery-charging-60:before{content:"\F089"}.mdi-battery-charging-80:before{content:"\F08A"}.mdi-battery-charging-90:before{content:"\F08B"}.mdi-battery-minus:before{content:"\F08C"}.mdi-battery-negative:before{content:"\F08D"}.mdi-battery-outline:before{content:"\F08E"}.mdi-battery-plus:before{content:"\F08F"}.mdi-battery-positive:before{content:"\F090"}.mdi-battery-unknown:before{content:"\F091"}.mdi-beach:before{content:"\F092"}.mdi-beats:before{content:"\F097"}.mdi-beer:before{content:"\F098"}.mdi-behance:before{content:"\F099"}.mdi-bell:before{content:"\F09A"}.mdi-bell-off:before{content:"\F09B"}.mdi-bell-outline:before{content:"\F09C"}.mdi-bell-plus:before{content:"\F09D"}.mdi-bell-ring:before{content:"\F09E"}.mdi-bell-ring-outline:before{content:"\F09F"}.mdi-bell-sleep:before{content:"\F0A0"}.mdi-beta:before{content:"\F0A1"}.mdi-bible:before{content:"\F0A2"}.mdi-bike:before{content:"\F0A3"}.mdi-bing:before{content:"\F0A4"}.mdi-binoculars:before{content:"\F0A5"}.mdi-bio:before{content:"\F0A6"}.mdi-biohazard:before{content:"\F0A7"}.mdi-bitbucket:before{content:"\F0A8"}.mdi-black-mesa:before{content:"\F0A9"}.mdi-blackberry:before{content:"\F0AA"}.mdi-blender:before{content:"\F0AB"}.mdi-blinds:before{content:"\F0AC"}.mdi-block-helper:before{content:"\F0AD"}.mdi-blogger:before{content:"\F0AE"}.mdi-bluetooth:before{content:"\F0AF"}.mdi-bluetooth-audio:before{content:"\F0B0"}.mdi-bluetooth-connect:before{content:"\F0B1"}.mdi-bluetooth-off:before{content:"\F0B2"}.mdi-bluetooth-settings:before{content:"\F0B3"}.mdi-bluetooth-transfer:before{content:"\F0B4"}.mdi-blur:before{content:"\F0B5"}.mdi-blur-linear:before{content:"\F0B6"}.mdi-blur-off:before{content:"\F0B7"}.mdi-blur-radial:before{content:"\F0B8"}.mdi-bone:before{content:"\F0B9"}.mdi-book:before{content:"\F0BA"}.mdi-book-minus:before{content:"\F5D9"}.mdi-book-multiple:before{content:"\F0BB"}.mdi-book-multiple-variant:before{content:"\F0BC"}.mdi-book-open:before{content:"\F0BD"}.mdi-book-open-page-variant:before{content:"\F5DA"}.mdi-book-open-variant:before{content:"\F0BE"}.mdi-book-plus:before{content:"\F5DB"}.mdi-book-variant:before{content:"\F0BF"}.mdi-bookmark:before{content:"\F0C0"}.mdi-bookmark-check:before{content:"\F0C1"}.mdi-bookmark-music:before{content:"\F0C2"}.mdi-bookmark-outline:before{content:"\F0C3"}.mdi-bookmark-plus:before{content:"\F0C5"}.mdi-bookmark-plus-outline:before{content:"\F0C4"}.mdi-bookmark-remove:before{content:"\F0C6"}.mdi-boombox:before{content:"\F5DC"}.mdi-border-all:before{content:"\F0C7"}.mdi-border-bottom:before{content:"\F0C8"}.mdi-border-color:before{content:"\F0C9"}.mdi-border-horizontal:before{content:"\F0CA"}.mdi-border-inside:before{content:"\F0CB"}.mdi-border-left:before{content:"\F0CC"}.mdi-border-none:before{content:"\F0CD"}.mdi-border-outside:before{content:"\F0CE"}.mdi-border-right:before{content:"\F0CF"}.mdi-border-style:before{content:"\F0D0"}.mdi-border-top:before{content:"\F0D1"}.mdi-border-vertical:before{content:"\F0D2"}.mdi-bowling:before{content:"\F0D3"}.mdi-box:before{content:"\F0D4"}.mdi-box-cutter:before{content:"\F0D5"}.mdi-briefcase:before{content:"\F0D6"}.mdi-briefcase-check:before{content:"\F0D7"}.mdi-briefcase-download:before{content:"\F0D8"}.mdi-briefcase-upload:before{content:"\F0D9"}.mdi-brightness-1:before{content:"\F0DA"}.mdi-brightness-2:before{content:"\F0DB"}.mdi-brightness-3:before{content:"\F0DC"}.mdi-brightness-4:before{content:"\F0DD"}.mdi-brightness-5:before{content:"\F0DE"}.mdi-brightness-6:before{content:"\F0DF"}.mdi-brightness-7:before{content:"\F0E0"}.mdi-brightness-auto:before{content:"\F0E1"}.mdi-broom:before{content:"\F0E2"}.mdi-brush:before{content:"\F0E3"}.mdi-bug:before{content:"\F0E4"}.mdi-bulletin-board:before{content:"\F0E5"}.mdi-bullhorn:before{content:"\F0E6"}.mdi-bullseye:before{content:"\F5DD"}.mdi-burst-mode:before{content:"\F5DE"}.mdi-bus:before{content:"\F0E7"}.mdi-cached:before{content:"\F0E8"}.mdi-cake:before{content:"\F0E9"}.mdi-cake-layered:before{content:"\F0EA"}.mdi-cake-variant:before{content:"\F0EB"}.mdi-calculator:before{content:"\F0EC"}.mdi-calendar:before{content:"\F0ED"}.mdi-calendar-blank:before{content:"\F0EE"}.mdi-calendar-check:before{content:"\F0EF"}.mdi-calendar-clock:before{content:"\F0F0"}.mdi-calendar-multiple:before{content:"\F0F1"}.mdi-calendar-multiple-check:before{content:"\F0F2"}.mdi-calendar-plus:before{content:"\F0F3"}.mdi-calendar-remove:before{content:"\F0F4"}.mdi-calendar-text:before{content:"\F0F5"}.mdi-calendar-today:before{content:"\F0F6"}.mdi-call-made:before{content:"\F0F7"}.mdi-call-merge:before{content:"\F0F8"}.mdi-call-missed:before{content:"\F0F9"}.mdi-call-received:before{content:"\F0FA"}.mdi-call-split:before{content:"\F0FB"}.mdi-camcorder:before{content:"\F0FC"}.mdi-camcorder-box:before{content:"\F0FD"}.mdi-camcorder-box-off:before{content:"\F0FE"}.mdi-camcorder-off:before{content:"\F0FF"}.mdi-camera:before{content:"\F100"}.mdi-camera-enhance:before{content:"\F101"}.mdi-camera-front:before{content:"\F102"}.mdi-camera-front-variant:before{content:"\F103"}.mdi-camera-iris:before{content:"\F104"}.mdi-camera-off:before{content:"\F5DF"}.mdi-camera-party-mode:before{content:"\F105"}.mdi-camera-rear:before{content:"\F106"}.mdi-camera-rear-variant:before{content:"\F107"}.mdi-camera-switch:before{content:"\F108"}.mdi-camera-timer:before{content:"\F109"}.mdi-candle:before{content:"\F5E2"}.mdi-candycane:before{content:"\F10A"}.mdi-car:before{content:"\F10B"}.mdi-car-battery:before{content:"\F10C"}.mdi-car-connected:before{content:"\F10D"}.mdi-car-wash:before{content:"\F10E"}.mdi-carrot:before{content:"\F10F"}.mdi-cart:before{content:"\F110"}.mdi-cart-outline:before{content:"\F111"}.mdi-cart-plus:before{content:"\F112"}.mdi-case-sensitive-alt:before{content:"\F113"}.mdi-cash:before{content:"\F114"}.mdi-cash-100:before{content:"\F115"}.mdi-cash-multiple:before{content:"\F116"}.mdi-cash-usd:before{content:"\F117"}.mdi-cast:before{content:"\F118"}.mdi-cast-connected:before{content:"\F119"}.mdi-castle:before{content:"\F11A"}.mdi-cat:before{content:"\F11B"}.mdi-cellphone:before{content:"\F11C"}.mdi-cellphone-android:before{content:"\F11D"}.mdi-cellphone-basic:before{content:"\F11E"}.mdi-cellphone-dock:before{content:"\F11F"}.mdi-cellphone-iphone:before{content:"\F120"}.mdi-cellphone-link:before{content:"\F121"}.mdi-cellphone-link-off:before{content:"\F122"}.mdi-cellphone-settings:before{content:"\F123"}.mdi-certificate:before{content:"\F124"}.mdi-chair-school:before{content:"\F125"}.mdi-chart-arc:before{content:"\F126"}.mdi-chart-areaspline:before{content:"\F127"}.mdi-chart-bar:before{content:"\F128"}.mdi-chart-bubble:before{content:"\F5E3"}.mdi-chart-histogram:before{content:"\F129"}.mdi-chart-line:before{content:"\F12A"}.mdi-chart-pie:before{content:"\F12B"}.mdi-check:before{content:"\F12C"}.mdi-check-all:before{content:"\F12D"}.mdi-check-circle:before{content:"\F5E0"}.mdi-check-circle-outline:before{content:"\F5E1"}.mdi-checkbox-blank:before{content:"\F12E"}.mdi-checkbox-blank-circle:before{content:"\F12F"}.mdi-checkbox-blank-circle-outline:before{content:"\F130"}.mdi-checkbox-blank-outline:before{content:"\F131"}.mdi-checkbox-marked:before{content:"\F132"}.mdi-checkbox-marked-circle:before{content:"\F133"}.mdi-checkbox-marked-circle-outline:before{content:"\F134"}.mdi-checkbox-marked-outline:before{content:"\F135"}.mdi-checkbox-multiple-blank:before{content:"\F136"}.mdi-checkbox-multiple-blank-outline:before{content:"\F137"}.mdi-checkbox-multiple-marked:before{content:"\F138"}.mdi-checkbox-multiple-marked-outline:before{content:"\F139"}.mdi-checkerboard:before{content:"\F13A"}.mdi-chemical-weapon:before{content:"\F13B"}.mdi-chevron-double-down:before{content:"\F13C"}.mdi-chevron-double-left:before{content:"\F13D"}.mdi-chevron-double-right:before{content:"\F13E"}.mdi-chevron-double-up:before{content:"\F13F"}.mdi-chevron-down:before{content:"\F140"}.mdi-chevron-left:before{content:"\F141"}.mdi-chevron-right:before{content:"\F142"}.mdi-chevron-up:before{content:"\F143"}.mdi-church:before{content:"\F144"}.mdi-cisco-webex:before{content:"\F145"}.mdi-city:before{content:"\F146"}.mdi-clipboard:before{content:"\F147"}.mdi-clipboard-account:before{content:"\F148"}.mdi-clipboard-alert:before{content:"\F149"}.mdi-clipboard-arrow-down:before{content:"\F14A"}.mdi-clipboard-arrow-left:before{content:"\F14B"}.mdi-clipboard-check:before{content:"\F14C"}.mdi-clipboard-outline:before{content:"\F14D"}.mdi-clipboard-text:before{content:"\F14E"}.mdi-clippy:before{content:"\F14F"}.mdi-clock:before{content:"\F150"}.mdi-clock-alert:before{content:"\F5CE"}.mdi-clock-end:before{content:"\F151"}.mdi-clock-fast:before{content:"\F152"}.mdi-clock-in:before{content:"\F153"}.mdi-clock-out:before{content:"\F154"}.mdi-clock-start:before{content:"\F155"}.mdi-close:before{content:"\F156"}.mdi-close-box:before{content:"\F157"}.mdi-close-box-outline:before{content:"\F158"}.mdi-close-circle:before{content:"\F159"}.mdi-close-circle-outline:before{content:"\F15A"}.mdi-close-network:before{content:"\F15B"}.mdi-close-octagon:before{content:"\F15C"}.mdi-close-octagon-outline:before{content:"\F15D"}.mdi-closed-caption:before{content:"\F15E"}.mdi-cloud:before{content:"\F15F"}.mdi-cloud-check:before{content:"\F160"}.mdi-cloud-circle:before{content:"\F161"}.mdi-cloud-download:before{content:"\F162"}.mdi-cloud-outline:before{content:"\F163"}.mdi-cloud-outline-off:before{content:"\F164"}.mdi-cloud-print:before{content:"\F165"}.mdi-cloud-print-outline:before{content:"\F166"}.mdi-cloud-upload:before{content:"\F167"}.mdi-code-array:before{content:"\F168"}.mdi-code-braces:before{content:"\F169"}.mdi-code-brackets:before{content:"\F16A"}.mdi-code-equal:before{content:"\F16B"}.mdi-code-greater-than:before{content:"\F16C"}.mdi-code-greater-than-or-equal:before{content:"\F16D"}.mdi-code-less-than:before{content:"\F16E"}.mdi-code-less-than-or-equal:before{content:"\F16F"}.mdi-code-not-equal:before{content:"\F170"}.mdi-code-not-equal-variant:before{content:"\F171"}.mdi-code-parentheses:before{content:"\F172"}.mdi-code-string:before{content:"\F173"}.mdi-code-tags:before{content:"\F174"}.mdi-codepen:before{content:"\F175"}.mdi-coffee:before{content:"\F176"}.mdi-coffee-to-go:before{content:"\F177"}.mdi-coin:before{content:"\F178"}.mdi-color-helper:before{content:"\F179"}.mdi-comment:before{content:"\F17A"}.mdi-comment-account:before{content:"\F17B"}.mdi-comment-account-outline:before{content:"\F17C"}.mdi-comment-alert:before{content:"\F17D"}.mdi-comment-alert-outline:before{content:"\F17E"}.mdi-comment-check:before{content:"\F17F"}.mdi-comment-check-outline:before{content:"\F180"}.mdi-comment-multiple-outline:before{content:"\F181"}.mdi-comment-outline:before{content:"\F182"}.mdi-comment-plus-outline:before{content:"\F183"}.mdi-comment-processing:before{content:"\F184"}.mdi-comment-processing-outline:before{content:"\F185"}.mdi-comment-question-outline:before{content:"\F186"}.mdi-comment-remove-outline:before{content:"\F187"}.mdi-comment-text:before{content:"\F188"}.mdi-comment-text-outline:before{content:"\F189"}.mdi-compare:before{content:"\F18A"}.mdi-compass:before{content:"\F18B"}.mdi-compass-outline:before{content:"\F18C"}.mdi-console:before{content:"\F18D"}.mdi-contact-mail:before{content:"\F18E"}.mdi-content-copy:before{content:"\F18F"}.mdi-content-cut:before{content:"\F190"}.mdi-content-duplicate:before{content:"\F191"}.mdi-content-paste:before{content:"\F192"}.mdi-content-save:before{content:"\F193"}.mdi-content-save-all:before{content:"\F194"}.mdi-contrast:before{content:"\F195"}.mdi-contrast-box:before{content:"\F196"}.mdi-contrast-circle:before{content:"\F197"}.mdi-cookie:before{content:"\F198"}.mdi-copyright:before{content:"\F5E6"}.mdi-counter:before{content:"\F199"}.mdi-cow:before{content:"\F19A"}.mdi-credit-card:before{content:"\F19B"}.mdi-credit-card-multiple:before{content:"\F19C"}.mdi-credit-card-off:before{content:"\F5E4"}.mdi-credit-card-scan:before{content:"\F19D"}.mdi-crop:before{content:"\F19E"}.mdi-crop-free:before{content:"\F19F"}.mdi-crop-landscape:before{content:"\F1A0"}.mdi-crop-portrait:before{content:"\F1A1"}.mdi-crop-square:before{content:"\F1A2"}.mdi-crosshairs:before{content:"\F1A3"}.mdi-crosshairs-gps:before{content:"\F1A4"}.mdi-crown:before{content:"\F1A5"}.mdi-cube:before{content:"\F1A6"}.mdi-cube-outline:before{content:"\F1A7"}.mdi-cube-send:before{content:"\F1A8"}.mdi-cube-unfolded:before{content:"\F1A9"}.mdi-cup:before{content:"\F1AA"}.mdi-cup-off:before{content:"\F5E5"}.mdi-cup-water:before{content:"\F1AB"}.mdi-currency-btc:before{content:"\F1AC"}.mdi-currency-eur:before{content:"\F1AD"}.mdi-currency-gbp:before{content:"\F1AE"}.mdi-currency-inr:before{content:"\F1AF"}.mdi-currency-ngn:before{content:"\F1B0"}.mdi-currency-rub:before{content:"\F1B1"}.mdi-currency-try:before{content:"\F1B2"}.mdi-currency-usd:before{content:"\F1B3"}.mdi-cursor-default:before{content:"\F1B4"}.mdi-cursor-default-outline:before{content:"\F1B5"}.mdi-cursor-move:before{content:"\F1B6"}.mdi-cursor-pointer:before{content:"\F1B7"}.mdi-cursor-text:before{content:"\F5E7"}.mdi-database:before{content:"\F1B8"}.mdi-database-minus:before{content:"\F1B9"}.mdi-database-plus:before{content:"\F1BA"}.mdi-debug-step-into:before{content:"\F1BB"}.mdi-debug-step-out:before{content:"\F1BC"}.mdi-debug-step-over:before{content:"\F1BD"}.mdi-decimal-decrease:before{content:"\F1BE"}.mdi-decimal-increase:before{content:"\F1BF"}.mdi-delete:before{content:"\F1C0"}.mdi-delete-forever:before{content:"\F5E8"}.mdi-delete-sweep:before{content:"\F5E9"}.mdi-delete-variant:before{content:"\F1C1"}.mdi-delta:before{content:"\F1C2"}.mdi-deskphone:before{content:"\F1C3"}.mdi-desktop-mac:before{content:"\F1C4"}.mdi-desktop-tower:before{content:"\F1C5"}.mdi-details:before{content:"\F1C6"}.mdi-deviantart:before{content:"\F1C7"}.mdi-diamond:before{content:"\F1C8"}.mdi-dice-1:before{content:"\F1CA"}.mdi-dice-2:before{content:"\F1CB"}.mdi-dice-3:before{content:"\F1CC"}.mdi-dice-4:before{content:"\F1CD"}.mdi-dice-5:before{content:"\F1CE"}.mdi-dice-6:before{content:"\F1CF"}.mdi-dice-d20:before{content:"\F5EA"}.mdi-dice-d4:before{content:"\F5EB"}.mdi-dice-d6:before{content:"\F5EC"}.mdi-dice-d8:before{content:"\F5ED"}.mdi-directions:before{content:"\F1D0"}.mdi-disk:before{content:"\F5EE"}.mdi-disk-alert:before{content:"\F1D1"}.mdi-disqus:before{content:"\F1D2"}.mdi-disqus-outline:before{content:"\F1D3"}.mdi-division:before{content:"\F1D4"}.mdi-division-box:before{content:"\F1D5"}.mdi-dns:before{content:"\F1D6"}.mdi-domain:before{content:"\F1D7"}.mdi-dots-horizontal:before{content:"\F1D8"}.mdi-dots-vertical:before{content:"\F1D9"}.mdi-download:before{content:"\F1DA"}.mdi-drag:before{content:"\F1DB"}.mdi-drag-horizontal:before{content:"\F1DC"}.mdi-drag-vertical:before{content:"\F1DD"}.mdi-drawing:before{content:"\F1DE"}.mdi-drawing-box:before{content:"\F1DF"}.mdi-dribbble:before{content:"\F1E0"}.mdi-dribbble-box:before{content:"\F1E1"}.mdi-drone:before{content:"\F1E2"}.mdi-dropbox:before{content:"\F1E3"}.mdi-drupal:before{content:"\F1E4"}.mdi-duck:before{content:"\F1E5"}.mdi-dumbbell:before{content:"\F1E6"}.mdi-earth:before{content:"\F1E7"}.mdi-earth-off:before{content:"\F1E8"}.mdi-edge:before{content:"\F1E9"}.mdi-eject:before{content:"\F1EA"}.mdi-elevation-decline:before{content:"\F1EB"}.mdi-elevation-rise:before{content:"\F1EC"}.mdi-elevator:before{content:"\F1ED"}.mdi-email:before{content:"\F1EE"}.mdi-email-open:before{content:"\F1EF"}.mdi-email-open-outline:before{content:"\F5EF"}.mdi-email-outline:before{content:"\F1F0"}.mdi-email-secure:before{content:"\F1F1"}.mdi-email-variant:before{content:"\F5F0"}.mdi-emoticon:before{content:"\F1F2"}.mdi-emoticon-cool:before{content:"\F1F3"}.mdi-emoticon-devil:before{content:"\F1F4"}.mdi-emoticon-happy:before{content:"\F1F5"}.mdi-emoticon-neutral:before{content:"\F1F6"}.mdi-emoticon-poop:before{content:"\F1F7"}.mdi-emoticon-sad:before{content:"\F1F8"}.mdi-emoticon-tongue:before{content:"\F1F9"}.mdi-engine:before{content:"\F1FA"}.mdi-engine-outline:before{content:"\F1FB"}.mdi-equal:before{content:"\F1FC"}.mdi-equal-box:before{content:"\F1FD"}.mdi-eraser:before{content:"\F1FE"}.mdi-escalator:before{content:"\F1FF"}.mdi-ethernet:before{content:"\F200"}.mdi-ethernet-cable:before{content:"\F201"}.mdi-ethernet-cable-off:before{content:"\F202"}.mdi-etsy:before{content:"\F203"}.mdi-ev-station:before{content:"\F5F1"}.mdi-evernote:before{content:"\F204"}.mdi-exclamation:before{content:"\F205"}.mdi-exit-to-app:before{content:"\F206"}.mdi-export:before{content:"\F207"}.mdi-eye:before{content:"\F208"}.mdi-eye-off:before{content:"\F209"}.mdi-eyedropper:before{content:"\F20A"}.mdi-eyedropper-variant:before{content:"\F20B"}.mdi-facebook:before{content:"\F20C"}.mdi-facebook-box:before{content:"\F20D"}.mdi-facebook-messenger:before{content:"\F20E"}.mdi-factory:before{content:"\F20F"}.mdi-fan:before{content:"\F210"}.mdi-fast-forward:before{content:"\F211"}.mdi-fax:before{content:"\F212"}.mdi-ferry:before{content:"\F213"}.mdi-file:before{content:"\F214"}.mdi-file-chart:before{content:"\F215"}.mdi-file-check:before{content:"\F216"}.mdi-file-cloud:before{content:"\F217"}.mdi-file-delimited:before{content:"\F218"}.mdi-file-document:before{content:"\F219"}.mdi-file-document-box:before{content:"\F21A"}.mdi-file-excel:before{content:"\F21B"}.mdi-file-excel-box:before{content:"\F21C"}.mdi-file-export:before{content:"\F21D"}.mdi-file-find:before{content:"\F21E"}.mdi-file-hidden:before{content:"\F613"}.mdi-file-image:before{content:"\F21F"}.mdi-file-import:before{content:"\F220"}.mdi-file-lock:before{content:"\F221"}.mdi-file-multiple:before{content:"\F222"}.mdi-file-music:before{content:"\F223"}.mdi-file-outline:before{content:"\F224"}.mdi-file-pdf:before{content:"\F225"}.mdi-file-pdf-box:before{content:"\F226"}.mdi-file-powerpoint:before{content:"\F227"}.mdi-file-powerpoint-box:before{content:"\F228"}.mdi-file-presentation-box:before{content:"\F229"}.mdi-file-send:before{content:"\F22A"}.mdi-file-video:before{content:"\F22B"}.mdi-file-word:before{content:"\F22C"}.mdi-file-word-box:before{content:"\F22D"}.mdi-file-xml:before{content:"\F22E"}.mdi-film:before{content:"\F22F"}.mdi-filmstrip:before{content:"\F230"}.mdi-filmstrip-off:before{content:"\F231"}.mdi-filter:before{content:"\F232"}.mdi-filter-outline:before{content:"\F233"}.mdi-filter-remove:before{content:"\F234"}.mdi-filter-remove-outline:before{content:"\F235"}.mdi-filter-variant:before{content:"\F236"}.mdi-fingerprint:before{content:"\F237"}.mdi-fire:before{content:"\F238"}.mdi-firefox:before{content:"\F239"}.mdi-fish:before{content:"\F23A"}.mdi-flag:before{content:"\F23B"}.mdi-flag-checkered:before{content:"\F23C"}.mdi-flag-outline:before{content:"\F23D"}.mdi-flag-outline-variant:before{content:"\F23E"}.mdi-flag-triangle:before{content:"\F23F"}.mdi-flag-variant:before{content:"\F240"}.mdi-flash:before{content:"\F241"}.mdi-flash-auto:before{content:"\F242"}.mdi-flash-off:before{content:"\F243"}.mdi-flashlight:before{content:"\F244"}.mdi-flashlight-off:before{content:"\F245"}.mdi-flask:before{content:"\F093"}.mdi-flask-empty:before{content:"\F094"}.mdi-flask-empty-outline:before{content:"\F095"}.mdi-flask-outline:before{content:"\F096"}.mdi-flattr:before{content:"\F246"}.mdi-flip-to-back:before{content:"\F247"}.mdi-flip-to-front:before{content:"\F248"}.mdi-floppy:before{content:"\F249"}.mdi-flower:before{content:"\F24A"}.mdi-folder:before{content:"\F24B"}.mdi-folder-account:before{content:"\F24C"}.mdi-folder-download:before{content:"\F24D"}.mdi-folder-google-drive:before{content:"\F24E"}.mdi-folder-image:before{content:"\F24F"}.mdi-folder-lock:before{content:"\F250"}.mdi-folder-lock-open:before{content:"\F251"}.mdi-folder-move:before{content:"\F252"}.mdi-folder-multiple:before{content:"\F253"}.mdi-folder-multiple-image:before{content:"\F254"}.mdi-folder-multiple-outline:before{content:"\F255"}.mdi-folder-outline:before{content:"\F256"}.mdi-folder-plus:before{content:"\F257"}.mdi-folder-remove:before{content:"\F258"}.mdi-folder-upload:before{content:"\F259"}.mdi-food:before{content:"\F25A"}.mdi-food-apple:before{content:"\F25B"}.mdi-food-fork-drink:before{content:"\F5F2"}.mdi-food-off:before{content:"\F5F3"}.mdi-food-variant:before{content:"\F25C"}.mdi-football:before{content:"\F25D"}.mdi-football-australian:before{content:"\F25E"}.mdi-football-helmet:before{content:"\F25F"}.mdi-format-align-center:before{content:"\F260"}.mdi-format-align-justify:before{content:"\F261"}.mdi-format-align-left:before{content:"\F262"}.mdi-format-align-right:before{content:"\F263"}.mdi-format-bold:before{content:"\F264"}.mdi-format-clear:before{content:"\F265"}.mdi-format-color-fill:before{content:"\F266"}.mdi-format-float-center:before{content:"\F267"}.mdi-format-float-left:before{content:"\F268"}.mdi-format-float-none:before{content:"\F269"}.mdi-format-float-right:before{content:"\F26A"}.mdi-format-header-1:before{content:"\F26B"}.mdi-format-header-2:before{content:"\F26C"}.mdi-format-header-3:before{content:"\F26D"}.mdi-format-header-4:before{content:"\F26E"}.mdi-format-header-5:before{content:"\F26F"}.mdi-format-header-6:before{content:"\F270"}.mdi-format-header-decrease:before{content:"\F271"}.mdi-format-header-equal:before{content:"\F272"}.mdi-format-header-increase:before{content:"\F273"}.mdi-format-header-pound:before{content:"\F274"}.mdi-format-indent-decrease:before{content:"\F275"}.mdi-format-indent-increase:before{content:"\F276"}.mdi-format-italic:before{content:"\F277"}.mdi-format-line-spacing:before{content:"\F278"}.mdi-format-line-style:before{content:"\F5C8"}.mdi-format-line-weight:before{content:"\F5C9"}.mdi-format-list-bulleted:before{content:"\F279"}.mdi-format-list-bulleted-type:before{content:"\F27A"}.mdi-format-list-numbers:before{content:"\F27B"}.mdi-format-paint:before{content:"\F27C"}.mdi-format-paragraph:before{content:"\F27D"}.mdi-format-quote:before{content:"\F27E"}.mdi-format-size:before{content:"\F27F"}.mdi-format-strikethrough:before{content:"\F280"}.mdi-format-strikethrough-variant:before{content:"\F281"}.mdi-format-subscript:before{content:"\F282"}.mdi-format-superscript:before{content:"\F283"}.mdi-format-text:before{content:"\F284"}.mdi-format-textdirection-l-to-r:before{content:"\F285"}.mdi-format-textdirection-r-to-l:before{content:"\F286"}.mdi-format-title:before{content:"\F5F4"}.mdi-format-underline:before{content:"\F287"}.mdi-format-wrap-inline:before{content:"\F288"}.mdi-format-wrap-square:before{content:"\F289"}.mdi-format-wrap-tight:before{content:"\F28A"}.mdi-format-wrap-top-bottom:before{content:"\F28B"}.mdi-forum:before{content:"\F28C"}.mdi-forward:before{content:"\F28D"}.mdi-foursquare:before{content:"\F28E"}.mdi-fridge:before{content:"\F28F"}.mdi-fridge-filled:before{content:"\F290"}.mdi-fridge-filled-bottom:before{content:"\F291"}.mdi-fridge-filled-top:before{content:"\F292"}.mdi-fullscreen:before{content:"\F293"}.mdi-fullscreen-exit:before{content:"\F294"}.mdi-function:before{content:"\F295"}.mdi-gamepad:before{content:"\F296"}.mdi-gamepad-variant:before{content:"\F297"}.mdi-gas-station:before{content:"\F298"}.mdi-gate:before{content:"\F299"}.mdi-gauge:before{content:"\F29A"}.mdi-gavel:before{content:"\F29B"}.mdi-gender-female:before{content:"\F29C"}.mdi-gender-male:before{content:"\F29D"}.mdi-gender-male-female:before{content:"\F29E"}.mdi-gender-transgender:before{content:"\F29F"}.mdi-ghost:before{content:"\F2A0"}.mdi-gift:before{content:"\F2A1"}.mdi-git:before{content:"\F2A2"}.mdi-github-box:before{content:"\F2A3"}.mdi-github-circle:before{content:"\F2A4"}.mdi-glass-flute:before{content:"\F2A5"}.mdi-glass-mug:before{content:"\F2A6"}.mdi-glass-stange:before{content:"\F2A7"}.mdi-glass-tulip:before{content:"\F2A8"}.mdi-glassdoor:before{content:"\F2A9"}.mdi-glasses:before{content:"\F2AA"}.mdi-gmail:before{content:"\F2AB"}.mdi-gnome:before{content:"\F2AC"}.mdi-google:before{content:"\F2AD"}.mdi-google-cardboard:before{content:"\F2AE"}.mdi-google-chrome:before{content:"\F2AF"}.mdi-google-circles:before{content:"\F2B0"}.mdi-google-circles-communities:before{content:"\F2B1"}.mdi-google-circles-extended:before{content:"\F2B2"}.mdi-google-circles-group:before{content:"\F2B3"}.mdi-google-controller:before{content:"\F2B4"}.mdi-google-controller-off:before{content:"\F2B5"}.mdi-google-drive:before{content:"\F2B6"}.mdi-google-earth:before{content:"\F2B7"}.mdi-google-glass:before{content:"\F2B8"}.mdi-google-maps:before{content:"\F5F5"}.mdi-google-nearby:before{content:"\F2B9"}.mdi-google-pages:before{content:"\F2BA"}.mdi-google-physical-web:before{content:"\F2BB"}.mdi-google-play:before{content:"\F2BC"}.mdi-google-plus:before{content:"\F2BD"}.mdi-google-plus-box:before{content:"\F2BE"}.mdi-google-translate:before{content:"\F2BF"}.mdi-google-wallet:before{content:"\F2C0"}.mdi-grid:before{content:"\F2C1"}.mdi-grid-off:before{content:"\F2C2"}.mdi-group:before{content:"\F2C3"}.mdi-guitar-electric:before{content:"\F2C4"}.mdi-guitar-pick:before{content:"\F2C5"}.mdi-guitar-pick-outline:before{content:"\F2C6"}.mdi-hand-pointing-right:before{content:"\F2C7"}.mdi-hanger:before{content:"\F2C8"}.mdi-hangouts:before{content:"\F2C9"}.mdi-harddisk:before{content:"\F2CA"}.mdi-headphones:before{content:"\F2CB"}.mdi-headphones-box:before{content:"\F2CC"}.mdi-headphones-settings:before{content:"\F2CD"}.mdi-headset:before{content:"\F2CE"}.mdi-headset-dock:before{content:"\F2CF"}.mdi-headset-off:before{content:"\F2D0"}.mdi-heart:before{content:"\F2D1"}.mdi-heart-box:before{content:"\F2D2"}.mdi-heart-box-outline:before{content:"\F2D3"}.mdi-heart-broken:before{content:"\F2D4"}.mdi-heart-outline:before{content:"\F2D5"}.mdi-heart-pulse:before{content:"\F5F6"}.mdi-help:before{content:"\F2D6"}.mdi-help-circle:before{content:"\F2D7"}.mdi-hexagon:before{content:"\F2D8"}.mdi-hexagon-outline:before{content:"\F2D9"}.mdi-highway:before{content:"\F5F7"}.mdi-history:before{content:"\F2DA"}.mdi-hololens:before{content:"\F2DB"}.mdi-home:before{content:"\F2DC"}.mdi-home-map-marker:before{content:"\F5F8"}.mdi-home-modern:before{content:"\F2DD"}.mdi-home-variant:before{content:"\F2DE"}.mdi-hops:before{content:"\F2DF"}.mdi-hospital:before{content:"\F2E0"}.mdi-hospital-building:before{content:"\F2E1"}.mdi-hospital-marker:before{content:"\F2E2"}.mdi-hotel:before{content:"\F2E3"}.mdi-houzz:before{content:"\F2E4"}.mdi-houzz-box:before{content:"\F2E5"}.mdi-human:before{content:"\F2E6"}.mdi-human-child:before{content:"\F2E7"}.mdi-human-male-female:before{content:"\F2E8"}.mdi-human-pregnant:before{content:"\F5CF"}.mdi-image:before{content:"\F2E9"}.mdi-image-album:before{content:"\F2EA"}.mdi-image-area:before{content:"\F2EB"}.mdi-image-area-close:before{content:"\F2EC"}.mdi-image-broken:before{content:"\F2ED"}.mdi-image-broken-variant:before{content:"\F2EE"}.mdi-image-filter:before{content:"\F2EF"}.mdi-image-filter-black-white:before{content:"\F2F0"}.mdi-image-filter-center-focus:before{content:"\F2F1"}.mdi-image-filter-center-focus-weak:before{content:"\F2F2"}.mdi-image-filter-drama:before{content:"\F2F3"}.mdi-image-filter-frames:before{content:"\F2F4"}.mdi-image-filter-hdr:before{content:"\F2F5"}.mdi-image-filter-none:before{content:"\F2F6"}.mdi-image-filter-tilt-shift:before{content:"\F2F7"}.mdi-image-filter-vintage:before{content:"\F2F8"}.mdi-image-multiple:before{content:"\F2F9"}.mdi-import:before{content:"\F2FA"}.mdi-inbox:before{content:"\F2FB"}.mdi-incognito:before{content:"\F5F9"}.mdi-information:before{content:"\F2FC"}.mdi-information-outline:before{content:"\F2FD"}.mdi-instagram:before{content:"\F2FE"}.mdi-instapaper:before{content:"\F2FF"}.mdi-internet-explorer:before{content:"\F300"}.mdi-invert-colors:before{content:"\F301"}.mdi-jeepney:before{content:"\F302"}.mdi-jira:before{content:"\F303"}.mdi-jsfiddle:before{content:"\F304"}.mdi-keg:before{content:"\F305"}.mdi-kettle:before{content:"\F5FA"}.mdi-key:before{content:"\F306"}.mdi-key-change:before{content:"\F307"}.mdi-key-minus:before{content:"\F308"}.mdi-key-plus:before{content:"\F309"}.mdi-key-remove:before{content:"\F30A"}.mdi-key-variant:before{content:"\F30B"}.mdi-keyboard:before{content:"\F30C"}.mdi-keyboard-backspace:before{content:"\F30D"}.mdi-keyboard-caps:before{content:"\F30E"}.mdi-keyboard-close:before{content:"\F30F"}.mdi-keyboard-off:before{content:"\F310"}.mdi-keyboard-return:before{content:"\F311"}.mdi-keyboard-tab:before{content:"\F312"}.mdi-keyboard-variant:before{content:"\F313"}.mdi-kodi:before{content:"\F314"}.mdi-label:before{content:"\F315"}.mdi-label-outline:before{content:"\F316"}.mdi-lan:before{content:"\F317"}.mdi-lan-connect:before{content:"\F318"}.mdi-lan-disconnect:before{content:"\F319"}.mdi-lan-pending:before{content:"\F31A"}.mdi-language-csharp:before{content:"\F31B"}.mdi-language-css3:before{content:"\F31C"}.mdi-language-html5:before{content:"\F31D"}.mdi-language-javascript:before{content:"\F31E"}.mdi-language-php:before{content:"\F31F"}.mdi-language-python:before{content:"\F320"}.mdi-language-python-text:before{content:"\F321"}.mdi-laptop:before{content:"\F322"}.mdi-laptop-chromebook:before{content:"\F323"}.mdi-laptop-mac:before{content:"\F324"}.mdi-laptop-windows:before{content:"\F325"}.mdi-lastfm:before{content:"\F326"}.mdi-launch:before{content:"\F327"}.mdi-layers:before{content:"\F328"}.mdi-layers-off:before{content:"\F329"}.mdi-leaf:before{content:"\F32A"}.mdi-led-off:before{content:"\F32B"}.mdi-led-on:before{content:"\F32C"}.mdi-led-outline:before{content:"\F32D"}.mdi-led-variant-off:before{content:"\F32E"}.mdi-led-variant-on:before{content:"\F32F"}.mdi-led-variant-outline:before{content:"\F330"}.mdi-library:before{content:"\F331"}.mdi-library-books:before{content:"\F332"}.mdi-library-music:before{content:"\F333"}.mdi-library-plus:before{content:"\F334"}.mdi-lightbulb:before{content:"\F335"}.mdi-lightbulb-outline:before{content:"\F336"}.mdi-link:before{content:"\F337"}.mdi-link-off:before{content:"\F338"}.mdi-link-variant:before{content:"\F339"}.mdi-link-variant-off:before{content:"\F33A"}.mdi-linkedin:before{content:"\F33B"}.mdi-linkedin-box:before{content:"\F33C"}.mdi-linux:before{content:"\F33D"}.mdi-lock:before{content:"\F33E"}.mdi-lock-open:before{content:"\F33F"}.mdi-lock-open-outline:before{content:"\F340"}.mdi-lock-outline:before{content:"\F341"}.mdi-lock-plus:before{content:"\F5FB"}.mdi-login:before{content:"\F342"}.mdi-login-variant:before{content:"\F5FC"}.mdi-logout:before{content:"\F343"}.mdi-logout-variant:before{content:"\F5FD"}.mdi-looks:before{content:"\F344"}.mdi-loupe:before{content:"\F345"}.mdi-lumx:before{content:"\F346"}.mdi-magnet:before{content:"\F347"}.mdi-magnet-on:before{content:"\F348"}.mdi-magnify:before{content:"\F349"}.mdi-magnify-minus:before{content:"\F34A"}.mdi-magnify-plus:before{content:"\F34B"}.mdi-mail-ru:before{content:"\F34C"}.mdi-map:before{content:"\F34D"}.mdi-map-marker:before{content:"\F34E"}.mdi-map-marker-circle:before{content:"\F34F"}.mdi-map-marker-multiple:before{content:"\F350"}.mdi-map-marker-off:before{content:"\F351"}.mdi-map-marker-radius:before{content:"\F352"}.mdi-margin:before{content:"\F353"}.mdi-markdown:before{content:"\F354"}.mdi-marker-check:before{content:"\F355"}.mdi-martini:before{content:"\F356"}.mdi-material-ui:before{content:"\F357"}.mdi-math-compass:before{content:"\F358"}.mdi-maxcdn:before{content:"\F359"}.mdi-medium:before{content:"\F35A"}.mdi-memory:before{content:"\F35B"}.mdi-menu:before{content:"\F35C"}.mdi-menu-down:before{content:"\F35D"}.mdi-menu-left:before{content:"\F35E"}.mdi-menu-right:before{content:"\F35F"}.mdi-menu-up:before{content:"\F360"}.mdi-message:before{content:"\F361"}.mdi-message-alert:before{content:"\F362"}.mdi-message-draw:before{content:"\F363"}.mdi-message-image:before{content:"\F364"}.mdi-message-outline:before{content:"\F365"}.mdi-message-processing:before{content:"\F366"}.mdi-message-reply:before{content:"\F367"}.mdi-message-reply-text:before{content:"\F368"}.mdi-message-text:before{content:"\F369"}.mdi-message-text-outline:before{content:"\F36A"}.mdi-message-video:before{content:"\F36B"}.mdi-microphone:before{content:"\F36C"}.mdi-microphone-off:before{content:"\F36D"}.mdi-microphone-outline:before{content:"\F36E"}.mdi-microphone-settings:before{content:"\F36F"}.mdi-microphone-variant:before{content:"\F370"}.mdi-microphone-variant-off:before{content:"\F371"}.mdi-microsoft:before{content:"\F372"}.mdi-minecraft:before{content:"\F373"}.mdi-minus:before{content:"\F374"}.mdi-minus-box:before{content:"\F375"}.mdi-minus-circle:before{content:"\F376"}.mdi-minus-circle-outline:before{content:"\F377"}.mdi-minus-network:before{content:"\F378"}.mdi-monitor:before{content:"\F379"}.mdi-monitor-multiple:before{content:"\F37A"}.mdi-more:before{content:"\F37B"}.mdi-motorbike:before{content:"\F37C"}.mdi-mouse:before{content:"\F37D"}.mdi-mouse-off:before{content:"\F37E"}.mdi-mouse-variant:before{content:"\F37F"}.mdi-mouse-variant-off:before{content:"\F380"}.mdi-movie:before{content:"\F381"}.mdi-multiplication:before{content:"\F382"}.mdi-multiplication-box:before{content:"\F383"}.mdi-music-box:before{content:"\F384"}.mdi-music-box-outline:before{content:"\F385"}.mdi-music-circle:before{content:"\F386"}.mdi-music-note:before{content:"\F387"}.mdi-music-note-bluetooth:before{content:"\F5FE"}.mdi-music-note-bluetooth-off:before{content:"\F5FF"}.mdi-music-note-eighth:before{content:"\F388"}.mdi-music-note-half:before{content:"\F389"}.mdi-music-note-off:before{content:"\F38A"}.mdi-music-note-quarter:before{content:"\F38B"}.mdi-music-note-sixteenth:before{content:"\F38C"}.mdi-music-note-whole:before{content:"\F38D"}.mdi-nature:before{content:"\F38E"}.mdi-nature-people:before{content:"\F38F"}.mdi-navigation:before{content:"\F390"}.mdi-near-me:before{content:"\F5CD"}.mdi-needle:before{content:"\F391"}.mdi-nest-protect:before{content:"\F392"}.mdi-nest-thermostat:before{content:"\F393"}.mdi-new-box:before{content:"\F394"}.mdi-newspaper:before{content:"\F395"}.mdi-nfc:before{content:"\F396"}.mdi-nfc-tap:before{content:"\F397"}.mdi-nfc-variant:before{content:"\F398"}.mdi-nodejs:before{content:"\F399"}.mdi-note:before{content:"\F39A"}.mdi-note-outline:before{content:"\F39B"}.mdi-note-plus:before{content:"\F39C"}.mdi-note-plus-outline:before{content:"\F39D"}.mdi-note-text:before{content:"\F39E"}.mdi-notification-clear-all:before{content:"\F39F"}.mdi-numeric:before{content:"\F3A0"}.mdi-numeric-0-box:before{content:"\F3A1"}.mdi-numeric-0-box-multiple-outline:before{content:"\F3A2"}.mdi-numeric-0-box-outline:before{content:"\F3A3"}.mdi-numeric-1-box:before{content:"\F3A4"}.mdi-numeric-1-box-multiple-outline:before{content:"\F3A5"}.mdi-numeric-1-box-outline:before{content:"\F3A6"}.mdi-numeric-2-box:before{content:"\F3A7"}.mdi-numeric-2-box-multiple-outline:before{content:"\F3A8"}.mdi-numeric-2-box-outline:before{content:"\F3A9"}.mdi-numeric-3-box:before{content:"\F3AA"}.mdi-numeric-3-box-multiple-outline:before{content:"\F3AB"}.mdi-numeric-3-box-outline:before{content:"\F3AC"}.mdi-numeric-4-box:before{content:"\F3AD"}.mdi-numeric-4-box-multiple-outline:before{content:"\F3AE"}.mdi-numeric-4-box-outline:before{content:"\F3AF"}.mdi-numeric-5-box:before{content:"\F3B0"}.mdi-numeric-5-box-multiple-outline:before{content:"\F3B1"}.mdi-numeric-5-box-outline:before{content:"\F3B2"}.mdi-numeric-6-box:before{content:"\F3B3"}.mdi-numeric-6-box-multiple-outline:before{content:"\F3B4"}.mdi-numeric-6-box-outline:before{content:"\F3B5"}.mdi-numeric-7-box:before{content:"\F3B6"}.mdi-numeric-7-box-multiple-outline:before{content:"\F3B7"}.mdi-numeric-7-box-outline:before{content:"\F3B8"}.mdi-numeric-8-box:before{content:"\F3B9"}.mdi-numeric-8-box-multiple-outline:before{content:"\F3BA"}.mdi-numeric-8-box-outline:before{content:"\F3BB"}.mdi-numeric-9-box:before{content:"\F3BC"}.mdi-numeric-9-box-multiple-outline:before{content:"\F3BD"}.mdi-numeric-9-box-outline:before{content:"\F3BE"}.mdi-numeric-9-plus-box:before{content:"\F3BF"}.mdi-numeric-9-plus-box-multiple-outline:before{content:"\F3C0"}.mdi-numeric-9-plus-box-outline:before{content:"\F3C1"}.mdi-nutrition:before{content:"\F3C2"}.mdi-octagon:before{content:"\F3C3"}.mdi-octagon-outline:before{content:"\F3C4"}.mdi-odnoklassniki:before{content:"\F3C5"}.mdi-office:before{content:"\F3C6"}.mdi-oil:before{content:"\F3C7"}.mdi-oil-temperature:before{content:"\F3C8"}.mdi-omega:before{content:"\F3C9"}.mdi-onedrive:before{content:"\F3CA"}.mdi-opacity:before{content:"\F5CC"}.mdi-open-in-app:before{content:"\F3CB"}.mdi-open-in-new:before{content:"\F3CC"}.mdi-openid:before{content:"\F3CD"}.mdi-opera:before{content:"\F3CE"}.mdi-ornament:before{content:"\F3CF"}.mdi-ornament-variant:before{content:"\F3D0"}.mdi-outbox:before{content:"\F3D1"}.mdi-owl:before{content:"\F3D2"}.mdi-package:before{content:"\F3D3"}.mdi-package-down:before{content:"\F3D4"}.mdi-package-up:before{content:"\F3D5"}.mdi-package-variant:before{content:"\F3D6"}.mdi-package-variant-closed:before{content:"\F3D7"}.mdi-page-first:before{content:"\F600"}.mdi-page-last:before{content:"\F601"}.mdi-palette:before{content:"\F3D8"}.mdi-palette-advanced:before{content:"\F3D9"}.mdi-panda:before{content:"\F3DA"}.mdi-pandora:before{content:"\F3DB"}.mdi-panorama:before{content:"\F3DC"}.mdi-panorama-fisheye:before{content:"\F3DD"}.mdi-panorama-horizontal:before{content:"\F3DE"}.mdi-panorama-vertical:before{content:"\F3DF"}.mdi-panorama-wide-angle:before{content:"\F3E0"}.mdi-paper-cut-vertical:before{content:"\F3E1"}.mdi-paperclip:before{content:"\F3E2"}.mdi-parking:before{content:"\F3E3"}.mdi-pause:before{content:"\F3E4"}.mdi-pause-circle:before{content:"\F3E5"}.mdi-pause-circle-outline:before{content:"\F3E6"}.mdi-pause-octagon:before{content:"\F3E7"}.mdi-pause-octagon-outline:before{content:"\F3E8"}.mdi-paw:before{content:"\F3E9"}.mdi-pen:before{content:"\F3EA"}.mdi-pencil:before{content:"\F3EB"}.mdi-pencil-box:before{content:"\F3EC"}.mdi-pencil-box-outline:before{content:"\F3ED"}.mdi-pencil-lock:before{content:"\F3EE"}.mdi-pencil-off:before{content:"\F3EF"}.mdi-percent:before{content:"\F3F0"}.mdi-pharmacy:before{content:"\F3F1"}.mdi-phone:before{content:"\F3F2"}.mdi-phone-bluetooth:before{content:"\F3F3"}.mdi-phone-classic:before{content:"\F602"}.mdi-phone-forward:before{content:"\F3F4"}.mdi-phone-hangup:before{content:"\F3F5"}.mdi-phone-in-talk:before{content:"\F3F6"}.mdi-phone-incoming:before{content:"\F3F7"}.mdi-phone-locked:before{content:"\F3F8"}.mdi-phone-log:before{content:"\F3F9"}.mdi-phone-missed:before{content:"\F3FA"}.mdi-phone-outgoing:before{content:"\F3FB"}.mdi-phone-paused:before{content:"\F3FC"}.mdi-phone-settings:before{content:"\F3FD"}.mdi-phone-voip:before{content:"\F3FE"}.mdi-pi:before{content:"\F3FF"}.mdi-pi-box:before{content:"\F400"}.mdi-pig:before{content:"\F401"}.mdi-pill:before{content:"\F402"}.mdi-pin:before{content:"\F403"}.mdi-pin-off:before{content:"\F404"}.mdi-pine-tree:before{content:"\F405"}.mdi-pine-tree-box:before{content:"\F406"}.mdi-pinterest:before{content:"\F407"}.mdi-pinterest-box:before{content:"\F408"}.mdi-pizza:before{content:"\F409"}.mdi-play:before{content:"\F40A"}.mdi-play-box-outline:before{content:"\F40B"}.mdi-play-circle:before{content:"\F40C"}.mdi-play-circle-outline:before{content:"\F40D"}.mdi-play-pause:before{content:"\F40E"}.mdi-play-protected-content:before{content:"\F40F"}.mdi-playlist-check:before{content:"\F5C7"}.mdi-playlist-minus:before{content:"\F410"}.mdi-playlist-play:before{content:"\F411"}.mdi-playlist-plus:before{content:"\F412"}.mdi-playlist-remove:before{content:"\F413"}.mdi-playstation:before{content:"\F414"}.mdi-plus:before{content:"\F415"}.mdi-plus-box:before{content:"\F416"}.mdi-plus-circle:before{content:"\F417"}.mdi-plus-circle-multiple-outline:before{content:"\F418"}.mdi-plus-circle-outline:before{content:"\F419"}.mdi-plus-network:before{content:"\F41A"}.mdi-plus-one:before{content:"\F41B"}.mdi-pocket:before{content:"\F41C"}.mdi-pokeball:before{content:"\F41D"}.mdi-polaroid:before{content:"\F41E"}.mdi-poll:before{content:"\F41F"}.mdi-poll-box:before{content:"\F420"}.mdi-polymer:before{content:"\F421"}.mdi-pool:before{content:"\F606"}.mdi-popcorn:before{content:"\F422"}.mdi-pound:before{content:"\F423"}.mdi-pound-box:before{content:"\F424"}.mdi-power:before{content:"\F425"}.mdi-power-settings:before{content:"\F426"}.mdi-power-socket:before{content:"\F427"}.mdi-presentation:before{content:"\F428"}.mdi-presentation-play:before{content:"\F429"}.mdi-printer:before{content:"\F42A"}.mdi-printer-3d:before{content:"\F42B"}.mdi-printer-alert:before{content:"\F42C"}.mdi-priority-high:before{content:"\F603"}.mdi-priority-low:before{content:"\F604"}.mdi-professional-hexagon:before{content:"\F42D"}.mdi-projector:before{content:"\F42E"}.mdi-projector-screen:before{content:"\F42F"}.mdi-pulse:before{content:"\F430"}.mdi-puzzle:before{content:"\F431"}.mdi-qqchat:before{content:"\F605"}.mdi-qrcode:before{content:"\F432"}.mdi-qrcode-scan:before{content:"\F433"}.mdi-quadcopter:before{content:"\F434"}.mdi-quality-high:before{content:"\F435"}.mdi-quicktime:before{content:"\F436"}.mdi-radar:before{content:"\F437"}.mdi-radiator:before{content:"\F438"}.mdi-radio:before{content:"\F439"}.mdi-radio-handheld:before{content:"\F43A"}.mdi-radio-tower:before{content:"\F43B"}.mdi-radioactive:before{content:"\F43C"}.mdi-radiobox-blank:before{content:"\F43D"}.mdi-radiobox-marked:before{content:"\F43E"}.mdi-raspberrypi:before{content:"\F43F"}.mdi-ray-end:before{content:"\F440"}.mdi-ray-end-arrow:before{content:"\F441"}.mdi-ray-start:before{content:"\F442"}.mdi-ray-start-arrow:before{content:"\F443"}.mdi-ray-start-end:before{content:"\F444"}.mdi-ray-vertex:before{content:"\F445"}.mdi-rdio:before{content:"\F446"}.mdi-read:before{content:"\F447"}.mdi-readability:before{content:"\F448"}.mdi-receipt:before{content:"\F449"}.mdi-record:before{content:"\F44A"}.mdi-record-rec:before{content:"\F44B"}.mdi-recycle:before{content:"\F44C"}.mdi-reddit:before{content:"\F44D"}.mdi-redo:before{content:"\F44E"}.mdi-redo-variant:before{content:"\F44F"}.mdi-refresh:before{content:"\F450"}.mdi-regex:before{content:"\F451"}.mdi-relative-scale:before{content:"\F452"}.mdi-reload:before{content:"\F453"}.mdi-remote:before{content:"\F454"}.mdi-rename-box:before{content:"\F455"}.mdi-repeat:before{content:"\F456"}.mdi-repeat-off:before{content:"\F457"}.mdi-repeat-once:before{content:"\F458"}.mdi-replay:before{content:"\F459"}.mdi-reply:before{content:"\F45A"}.mdi-reply-all:before{content:"\F45B"}.mdi-reproduction:before{content:"\F45C"}.mdi-resize-bottom-right:before{content:"\F45D"}.mdi-responsive:before{content:"\F45E"}.mdi-rewind:before{content:"\F45F"}.mdi-ribbon:before{content:"\F460"}.mdi-road:before{content:"\F461"}.mdi-road-variant:before{content:"\F462"}.mdi-rocket:before{content:"\F463"}.mdi-rotate-3d:before{content:"\F464"}.mdi-rotate-left:before{content:"\F465"}.mdi-rotate-left-variant:before{content:"\F466"}.mdi-rotate-right:before{content:"\F467"}.mdi-rotate-right-variant:before{content:"\F468"}.mdi-rounded-corner:before{content:"\F607"}.mdi-router-wireless:before{content:"\F469"}.mdi-routes:before{content:"\F46A"}.mdi-rowing:before{content:"\F608"}.mdi-rss:before{content:"\F46B"}.mdi-rss-box:before{content:"\F46C"}.mdi-ruler:before{content:"\F46D"}.mdi-run:before{content:"\F46E"}.mdi-sale:before{content:"\F46F"}.mdi-satellite:before{content:"\F470"}.mdi-satellite-variant:before{content:"\F471"}.mdi-saxophone:before{content:"\F609"}.mdi-scale:before{content:"\F472"}.mdi-scale-balance:before{content:"\F5D1"}.mdi-scale-bathroom:before{content:"\F473"}.mdi-school:before{content:"\F474"}.mdi-screen-rotation:before{content:"\F475"}.mdi-screen-rotation-lock:before{content:"\F476"}.mdi-screwdriver:before{content:"\F477"}.mdi-script:before{content:"\F478"}.mdi-sd:before{content:"\F479"}.mdi-seal:before{content:"\F47A"}.mdi-seat-flat:before{content:"\F47B"}.mdi-seat-flat-angled:before{content:"\F47C"}.mdi-seat-individual-suite:before{content:"\F47D"}.mdi-seat-legroom-extra:before{content:"\F47E"}.mdi-seat-legroom-normal:before{content:"\F47F"}.mdi-seat-legroom-reduced:before{content:"\F480"}.mdi-seat-recline-extra:before{content:"\F481"}.mdi-seat-recline-normal:before{content:"\F482"}.mdi-security:before{content:"\F483"}.mdi-security-network:before{content:"\F484"}.mdi-select:before{content:"\F485"}.mdi-select-all:before{content:"\F486"}.mdi-select-inverse:before{content:"\F487"}.mdi-select-off:before{content:"\F488"}.mdi-selection:before{content:"\F489"}.mdi-send:before{content:"\F48A"}.mdi-server:before{content:"\F48B"}.mdi-server-minus:before{content:"\F48C"}.mdi-server-network:before{content:"\F48D"}.mdi-server-network-off:before{content:"\F48E"}.mdi-server-off:before{content:"\F48F"}.mdi-server-plus:before{content:"\F490"}.mdi-server-remove:before{content:"\F491"}.mdi-server-security:before{content:"\F492"}.mdi-settings:before{content:"\F493"}.mdi-settings-box:before{content:"\F494"}.mdi-shape-plus:before{content:"\F495"}.mdi-share:before{content:"\F496"}.mdi-share-variant:before{content:"\F497"}.mdi-shield:before{content:"\F498"}.mdi-shield-outline:before{content:"\F499"}.mdi-shopping:before{content:"\F49A"}.mdi-shopping-music:before{content:"\F49B"}.mdi-shredder:before{content:"\F49C"}.mdi-shuffle:before{content:"\F49D"}.mdi-shuffle-disabled:before{content:"\F49E"}.mdi-shuffle-variant:before{content:"\F49F"}.mdi-sigma:before{content:"\F4A0"}.mdi-sign-caution:before{content:"\F4A1"}.mdi-signal:before{content:"\F4A2"}.mdi-signal-variant:before{content:"\F60A"}.mdi-silverware:before{content:"\F4A3"}.mdi-silverware-fork:before{content:"\F4A4"}.mdi-silverware-spoon:before{content:"\F4A5"}.mdi-silverware-variant:before{content:"\F4A6"}.mdi-sim:before{content:"\F4A7"}.mdi-sim-alert:before{content:"\F4A8"}.mdi-sim-off:before{content:"\F4A9"}.mdi-sitemap:before{content:"\F4AA"}.mdi-skip-backward:before{content:"\F4AB"}.mdi-skip-forward:before{content:"\F4AC"}.mdi-skip-next:before{content:"\F4AD"}.mdi-skip-previous:before{content:"\F4AE"}.mdi-skype:before{content:"\F4AF"}.mdi-skype-business:before{content:"\F4B0"}.mdi-slack:before{content:"\F4B1"}.mdi-sleep:before{content:"\F4B2"}.mdi-sleep-off:before{content:"\F4B3"}.mdi-smoking:before{content:"\F4B4"}.mdi-smoking-off:before{content:"\F4B5"}.mdi-snapchat:before{content:"\F4B6"}.mdi-snowman:before{content:"\F4B7"}.mdi-soccer:before{content:"\F4B8"}.mdi-sofa:before{content:"\F4B9"}.mdi-sort:before{content:"\F4BA"}.mdi-sort-alphabetical:before{content:"\F4BB"}.mdi-sort-ascending:before{content:"\F4BC"}.mdi-sort-descending:before{content:"\F4BD"}.mdi-sort-numeric:before{content:"\F4BE"}.mdi-sort-variant:before{content:"\F4BF"}.mdi-soundcloud:before{content:"\F4C0"}.mdi-source-fork:before{content:"\F4C1"}.mdi-source-pull:before{content:"\F4C2"}.mdi-speaker:before{content:"\F4C3"}.mdi-speaker-off:before{content:"\F4C4"}.mdi-speedometer:before{content:"\F4C5"}.mdi-spellcheck:before{content:"\F4C6"}.mdi-spotify:before{content:"\F4C7"}.mdi-spotlight:before{content:"\F4C8"}.mdi-spotlight-beam:before{content:"\F4C9"}.mdi-square-inc:before{content:"\F4CA"}.mdi-square-inc-cash:before{content:"\F4CB"}.mdi-stackexchange:before{content:"\F60B"}.mdi-stackoverflow:before{content:"\F4CC"}.mdi-stairs:before{content:"\F4CD"}.mdi-star:before{content:"\F4CE"}.mdi-star-circle:before{content:"\F4CF"}.mdi-star-half:before{content:"\F4D0"}.mdi-star-off:before{content:"\F4D1"}.mdi-star-outline:before{content:"\F4D2"}.mdi-steam:before{content:"\F4D3"}.mdi-steering:before{content:"\F4D4"}.mdi-step-backward:before{content:"\F4D5"}.mdi-step-backward-2:before{content:"\F4D6"}.mdi-step-forward:before{content:"\F4D7"}.mdi-step-forward-2:before{content:"\F4D8"}.mdi-stethoscope:before{content:"\F4D9"}.mdi-sticker:before{content:"\F5D0"}.mdi-stocking:before{content:"\F4DA"}.mdi-stop:before{content:"\F4DB"}.mdi-store:before{content:"\F4DC"}.mdi-store-24-hour:before{content:"\F4DD"}.mdi-stove:before{content:"\F4DE"}.mdi-subdirectory-arrow-left:before{content:"\F60C"}.mdi-subdirectory-arrow-right:before{content:"\F60D"}.mdi-subway:before{content:"\F4DF"}.mdi-sunglasses:before{content:"\F4E0"}.mdi-surround-sound:before{content:"\F5C5"}.mdi-swap-horizontal:before{content:"\F4E1"}.mdi-swap-vertical:before{content:"\F4E2"}.mdi-swim:before{content:"\F4E3"}.mdi-switch:before{content:"\F4E4"}.mdi-sword:before{content:"\F4E5"}.mdi-sync:before{content:"\F4E6"}.mdi-sync-alert:before{content:"\F4E7"}.mdi-sync-off:before{content:"\F4E8"}.mdi-tab:before{content:"\F4E9"}.mdi-tab-unselected:before{content:"\F4EA"}.mdi-table:before{content:"\F4EB"}.mdi-table-column-plus-after:before{content:"\F4EC"}.mdi-table-column-plus-before:before{content:"\F4ED"}.mdi-table-column-remove:before{content:"\F4EE"}.mdi-table-column-width:before{content:"\F4EF"}.mdi-table-edit:before{content:"\F4F0"}.mdi-table-large:before{content:"\F4F1"}.mdi-table-row-height:before{content:"\F4F2"}.mdi-table-row-plus-after:before{content:"\F4F3"}.mdi-table-row-plus-before:before{content:"\F4F4"}.mdi-table-row-remove:before{content:"\F4F5"}.mdi-tablet:before{content:"\F4F6"}.mdi-tablet-android:before{content:"\F4F7"}.mdi-tablet-ipad:before{content:"\F4F8"}.mdi-tag:before{content:"\F4F9"}.mdi-tag-faces:before{content:"\F4FA"}.mdi-tag-multiple:before{content:"\F4FB"}.mdi-tag-outline:before{content:"\F4FC"}.mdi-tag-text-outline:before{content:"\F4FD"}.mdi-target:before{content:"\F4FE"}.mdi-taxi:before{content:"\F4FF"}.mdi-teamviewer:before{content:"\F500"}.mdi-telegram:before{content:"\F501"}.mdi-television:before{content:"\F502"}.mdi-television-guide:before{content:"\F503"}.mdi-temperature-celsius:before{content:"\F504"}.mdi-temperature-fahrenheit:before{content:"\F505"}.mdi-temperature-kelvin:before{content:"\F506"}.mdi-tennis:before{content:"\F507"}.mdi-tent:before{content:"\F508"}.mdi-terrain:before{content:"\F509"}.mdi-text-to-speech:before{content:"\F50A"}.mdi-text-to-speech-off:before{content:"\F50B"}.mdi-textbox:before{content:"\F60E"}.mdi-texture:before{content:"\F50C"}.mdi-theater:before{content:"\F50D"}.mdi-theme-light-dark:before{content:"\F50E"}.mdi-thermometer:before{content:"\F50F"}.mdi-thermometer-lines:before{content:"\F510"}.mdi-thumb-down:before{content:"\F511"}.mdi-thumb-down-outline:before{content:"\F512"}.mdi-thumb-up:before{content:"\F513"}.mdi-thumb-up-outline:before{content:"\F514"}.mdi-thumbs-up-down:before{content:"\F515"}.mdi-ticket:before{content:"\F516"}.mdi-ticket-account:before{content:"\F517"}.mdi-ticket-confirmation:before{content:"\F518"}.mdi-tie:before{content:"\F519"}.mdi-timelapse:before{content:"\F51A"}.mdi-timer:before{content:"\F51B"}.mdi-timer-10:before{content:"\F51C"}.mdi-timer-3:before{content:"\F51D"}.mdi-timer-off:before{content:"\F51E"}.mdi-timer-sand:before{content:"\F51F"}.mdi-timetable:before{content:"\F520"}.mdi-toggle-switch:before{content:"\F521"}.mdi-toggle-switch-off:before{content:"\F522"}.mdi-tooltip:before{content:"\F523"}.mdi-tooltip-edit:before{content:"\F524"}.mdi-tooltip-image:before{content:"\F525"}.mdi-tooltip-outline:before{content:"\F526"}.mdi-tooltip-outline-plus:before{content:"\F527"}.mdi-tooltip-text:before{content:"\F528"}.mdi-tooth:before{content:"\F529"}.mdi-tor:before{content:"\F52A"}.mdi-traffic-light:before{content:"\F52B"}.mdi-train:before{content:"\F52C"}.mdi-tram:before{content:"\F52D"}.mdi-transcribe:before{content:"\F52E"}.mdi-transcribe-close:before{content:"\F52F"}.mdi-transfer:before{content:"\F530"}.mdi-translate:before{content:"\F5CA"}.mdi-tree:before{content:"\F531"}.mdi-trello:before{content:"\F532"}.mdi-trending-down:before{content:"\F533"}.mdi-trending-neutral:before{content:"\F534"}.mdi-trending-up:before{content:"\F535"}.mdi-triangle:before{content:"\F536"}.mdi-triangle-outline:before{content:"\F537"}.mdi-trophy:before{content:"\F538"}.mdi-trophy-award:before{content:"\F539"}.mdi-trophy-outline:before{content:"\F53A"}.mdi-trophy-variant:before{content:"\F53B"}.mdi-trophy-variant-outline:before{content:"\F53C"}.mdi-truck:before{content:"\F53D"}.mdi-truck-delivery:before{content:"\F53E"}.mdi-tshirt-crew:before{content:"\F53F"}.mdi-tshirt-v:before{content:"\F540"}.mdi-tumblr:before{content:"\F541"}.mdi-tumblr-reblog:before{content:"\F542"}.mdi-twitch:before{content:"\F543"}.mdi-twitter:before{content:"\F544"}.mdi-twitter-box:before{content:"\F545"}.mdi-twitter-circle:before{content:"\F546"}.mdi-twitter-retweet:before{content:"\F547"}.mdi-ubuntu:before{content:"\F548"}.mdi-umbraco:before{content:"\F549"}.mdi-umbrella:before{content:"\F54A"}.mdi-umbrella-outline:before{content:"\F54B"}.mdi-undo:before{content:"\F54C"}.mdi-undo-variant:before{content:"\F54D"}.mdi-unfold-less:before{content:"\F54E"}.mdi-unfold-more:before{content:"\F54F"}.mdi-ungroup:before{content:"\F550"}.mdi-untappd:before{content:"\F551"}.mdi-upload:before{content:"\F552"}.mdi-usb:before{content:"\F553"}.mdi-vector-arrange-above:before{content:"\F554"}.mdi-vector-arrange-below:before{content:"\F555"}.mdi-vector-circle:before{content:"\F556"}.mdi-vector-circle-variant:before{content:"\F557"}.mdi-vector-combine:before{content:"\F558"}.mdi-vector-curve:before{content:"\F559"}.mdi-vector-difference:before{content:"\F55A"}.mdi-vector-difference-ab:before{content:"\F55B"}.mdi-vector-difference-ba:before{content:"\F55C"}.mdi-vector-intersection:before{content:"\F55D"}.mdi-vector-line:before{content:"\F55E"}.mdi-vector-point:before{content:"\F55F"}.mdi-vector-polygon:before{content:"\F560"}.mdi-vector-polyline:before{content:"\F561"}.mdi-vector-rectangle:before{content:"\F5C6"}.mdi-vector-selection:before{content:"\F562"}.mdi-vector-square:before{content:"\F001"}.mdi-vector-triangle:before{content:"\F563"}.mdi-vector-union:before{content:"\F564"}.mdi-verified:before{content:"\F565"}.mdi-vibrate:before{content:"\F566"}.mdi-video:before{content:"\F567"}.mdi-video-off:before{content:"\F568"}.mdi-video-switch:before{content:"\F569"}.mdi-view-agenda:before{content:"\F56A"}.mdi-view-array:before{content:"\F56B"}.mdi-view-carousel:before{content:"\F56C"}.mdi-view-column:before{content:"\F56D"}.mdi-view-dashboard:before{content:"\F56E"}.mdi-view-day:before{content:"\F56F"}.mdi-view-grid:before{content:"\F570"}.mdi-view-headline:before{content:"\F571"}.mdi-view-list:before{content:"\F572"}.mdi-view-module:before{content:"\F573"}.mdi-view-quilt:before{content:"\F574"}.mdi-view-stream:before{content:"\F575"}.mdi-view-week:before{content:"\F576"}.mdi-vimeo:before{content:"\F577"}.mdi-vine:before{content:"\F578"}.mdi-violin:before{content:"\F60F"}.mdi-visualstudio:before{content:"\F610"}.mdi-vk:before{content:"\F579"}.mdi-vk-box:before{content:"\F57A"}.mdi-vk-circle:before{content:"\F57B"}.mdi-vlc:before{content:"\F57C"}.mdi-voice:before{content:"\F5CB"}.mdi-voicemail:before{content:"\F57D"}.mdi-volume-high:before{content:"\F57E"}.mdi-volume-low:before{content:"\F57F"}.mdi-volume-medium:before{content:"\F580"}.mdi-volume-off:before{content:"\F581"}.mdi-vpn:before{content:"\F582"}.mdi-walk:before{content:"\F583"}.mdi-wallet:before{content:"\F584"}.mdi-wallet-giftcard:before{content:"\F585"}.mdi-wallet-membership:before{content:"\F586"}.mdi-wallet-travel:before{content:"\F587"}.mdi-wan:before{content:"\F588"}.mdi-watch:before{content:"\F589"}.mdi-watch-export:before{content:"\F58A"}.mdi-watch-import:before{content:"\F58B"}.mdi-water:before{content:"\F58C"}.mdi-water-off:before{content:"\F58D"}.mdi-water-percent:before{content:"\F58E"}.mdi-water-pump:before{content:"\F58F"}.mdi-watermark:before{content:"\F612"}.mdi-weather-cloudy:before{content:"\F590"}.mdi-weather-fog:before{content:"\F591"}.mdi-weather-hail:before{content:"\F592"}.mdi-weather-lightning:before{content:"\F593"}.mdi-weather-night:before{content:"\F594"}.mdi-weather-partlycloudy:before{content:"\F595"}.mdi-weather-pouring:before{content:"\F596"}.mdi-weather-rainy:before{content:"\F597"}.mdi-weather-snowy:before{content:"\F598"}.mdi-weather-sunny:before{content:"\F599"}.mdi-weather-sunset:before{content:"\F59A"}.mdi-weather-sunset-down:before{content:"\F59B"}.mdi-weather-sunset-up:before{content:"\F59C"}.mdi-weather-windy:before{content:"\F59D"}.mdi-weather-windy-variant:before{content:"\F59E"}.mdi-web:before{content:"\F59F"}.mdi-webcam:before{content:"\F5A0"}.mdi-wechat:before{content:"\F611"}.mdi-weight:before{content:"\F5A1"}.mdi-weight-kilogram:before{content:"\F5A2"}.mdi-whatsapp:before{content:"\F5A3"}.mdi-wheelchair-accessibility:before{content:"\F5A4"}.mdi-white-balance-auto:before{content:"\F5A5"}.mdi-white-balance-incandescent:before{content:"\F5A6"}.mdi-white-balance-irradescent:before{content:"\F5A7"}.mdi-white-balance-sunny:before{content:"\F5A8"}.mdi-wifi:before{content:"\F5A9"}.mdi-wifi-off:before{content:"\F5AA"}.mdi-wii:before{content:"\F5AB"}.mdi-wikipedia:before{content:"\F5AC"}.mdi-window-close:before{content:"\F5AD"}.mdi-window-closed:before{content:"\F5AE"}.mdi-window-maximize:before{content:"\F5AF"}.mdi-window-minimize:before{content:"\F5B0"}.mdi-window-open:before{content:"\F5B1"}.mdi-window-restore:before{content:"\F5B2"}.mdi-windows:before{content:"\F5B3"}.mdi-wordpress:before{content:"\F5B4"}.mdi-worker:before{content:"\F5B5"}.mdi-wrap:before{content:"\F5B6"}.mdi-wrench:before{content:"\F5B7"}.mdi-wunderlist:before{content:"\F5B8"}.mdi-xbox:before{content:"\F5B9"}.mdi-xbox-controller:before{content:"\F5BA"}.mdi-xbox-controller-off:before{content:"\F5BB"}.mdi-xda:before{content:"\F5BC"}.mdi-xing:before{content:"\F5BD"}.mdi-xing-box:before{content:"\F5BE"}.mdi-xing-circle:before{content:"\F5BF"}.mdi-xml:before{content:"\F5C0"}.mdi-yeast:before{content:"\F5C1"}.mdi-yelp:before{content:"\F5C2"}.mdi-youtube-play:before{content:"\F5C3"}.mdi-zip-box:before{content:"\F5C4"}.mdi-18px{font-size:18px}.mdi-24px{font-size:24px}.mdi-36px{font-size:36px}.mdi-48px{font-size:48px}.mdi-dark{color:rgba(0,0,0,0.54)}.mdi-dark.mdi-inactive{color:rgba(0,0,0,0.26)}.mdi-light{color:#fff}.mdi-light.mdi-inactive{color:rgba(255,255,255,0.3)} +/*# sourceMappingURL=materialdesignicons.min.css.map */ diff --git a/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.eot b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.eot new file mode 100644 index 0000000..e463e05 Binary files /dev/null and b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.eot differ diff --git a/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.svg b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.svg new file mode 100644 index 0000000..d0e3ddb --- /dev/null +++ b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.svg @@ -0,0 +1,4674 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.ttf b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.ttf new file mode 100644 index 0000000..7ad0db5 Binary files /dev/null and b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.ttf differ diff --git a/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.woff b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.woff new file mode 100644 index 0000000..cc720fa Binary files /dev/null and b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.woff differ diff --git a/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.woff2 b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.woff2 new file mode 100644 index 0000000..ed08905 Binary files /dev/null and b/fonts/mdi/fonts/materialdesignicons-webfont-v1.5.54.woff2 differ diff --git a/fonts/mdi/fonts/materialdesignicons-webfont.eot b/fonts/mdi/fonts/materialdesignicons-webfont.eot new file mode 100644 index 0000000..e463e05 Binary files /dev/null and b/fonts/mdi/fonts/materialdesignicons-webfont.eot differ diff --git a/img/banner-portrait.png b/img/banner-portrait.png new file mode 100644 index 0000000..946646f Binary files /dev/null and b/img/banner-portrait.png differ diff --git a/img/banner-portrait.webp b/img/banner-portrait.webp new file mode 100644 index 0000000..2e84b30 Binary files /dev/null and b/img/banner-portrait.webp differ diff --git a/img/banner.png b/img/banner.png new file mode 100644 index 0000000..a1e4161 Binary files /dev/null and b/img/banner.png differ diff --git a/img/banner.webp b/img/banner.webp new file mode 100644 index 0000000..8d3d60d Binary files /dev/null and b/img/banner.webp differ diff --git a/img/blog/article1.gif b/img/blog/article1.gif new file mode 100644 index 0000000..7c5214a Binary files /dev/null and b/img/blog/article1.gif differ diff --git a/img/blog/article1.webm b/img/blog/article1.webm new file mode 100644 index 0000000..fc4c93f Binary files /dev/null and b/img/blog/article1.webm differ diff --git a/img/blog/article2.gif b/img/blog/article2.gif new file mode 100644 index 0000000..1177fa2 Binary files /dev/null and b/img/blog/article2.gif differ diff --git a/img/blog/article2.webm b/img/blog/article2.webm new file mode 100644 index 0000000..471998e Binary files /dev/null and b/img/blog/article2.webm differ diff --git a/img/blog/article3.gif b/img/blog/article3.gif new file mode 100644 index 0000000..e5fd19c Binary files /dev/null and b/img/blog/article3.gif differ diff --git a/img/blog/article3.webm b/img/blog/article3.webm new file mode 100644 index 0000000..f9c8d7c Binary files /dev/null and b/img/blog/article3.webm differ diff --git a/img/blog/article4.gif b/img/blog/article4.gif new file mode 100644 index 0000000..178f385 Binary files /dev/null and b/img/blog/article4.gif differ diff --git a/img/blog/article4.webm b/img/blog/article4.webm new file mode 100644 index 0000000..0c04efb Binary files /dev/null and b/img/blog/article4.webm differ diff --git a/img/experience/thumb-abcde19.jpg b/img/experience/thumb-abcde19.jpg new file mode 100644 index 0000000..9114a7c Binary files /dev/null and b/img/experience/thumb-abcde19.jpg differ diff --git a/img/experience/thumb-abcde19.webp b/img/experience/thumb-abcde19.webp new file mode 100644 index 0000000..b4135f0 Binary files /dev/null and b/img/experience/thumb-abcde19.webp differ diff --git a/img/experience/thumb-adc_github.jpg b/img/experience/thumb-adc_github.jpg new file mode 100644 index 0000000..7b5845b Binary files /dev/null and b/img/experience/thumb-adc_github.jpg differ diff --git a/img/experience/thumb-adc_github.webp b/img/experience/thumb-adc_github.webp new file mode 100644 index 0000000..d3b7db9 Binary files /dev/null and b/img/experience/thumb-adc_github.webp differ diff --git a/img/experience/thumb-apuboh19.jpg b/img/experience/thumb-apuboh19.jpg new file mode 100644 index 0000000..dd39aa3 Binary files /dev/null and b/img/experience/thumb-apuboh19.jpg differ diff --git a/img/experience/thumb-apuboh19.webp b/img/experience/thumb-apuboh19.webp new file mode 100644 index 0000000..36a2b0e Binary files /dev/null and b/img/experience/thumb-apuboh19.webp differ diff --git a/img/experience/thumb-cyhi.jpg b/img/experience/thumb-cyhi.jpg new file mode 100644 index 0000000..d257d30 Binary files /dev/null and b/img/experience/thumb-cyhi.jpg differ diff --git a/img/experience/thumb-cyhi.webp b/img/experience/thumb-cyhi.webp new file mode 100644 index 0000000..82d73dd Binary files /dev/null and b/img/experience/thumb-cyhi.webp differ diff --git a/img/experience/thumb-dsc_flutter_1.jpg b/img/experience/thumb-dsc_flutter_1.jpg new file mode 100644 index 0000000..97d9c4f Binary files /dev/null and b/img/experience/thumb-dsc_flutter_1.jpg differ diff --git a/img/experience/thumb-dsc_flutter_1.webp b/img/experience/thumb-dsc_flutter_1.webp new file mode 100644 index 0000000..f219e2a Binary files /dev/null and b/img/experience/thumb-dsc_flutter_1.webp differ diff --git a/img/experience/thumb-dsc_github.jpg b/img/experience/thumb-dsc_github.jpg new file mode 100644 index 0000000..bed5e2c Binary files /dev/null and b/img/experience/thumb-dsc_github.jpg differ diff --git a/img/experience/thumb-dsc_github.webp b/img/experience/thumb-dsc_github.webp new file mode 100644 index 0000000..7561b0b Binary files /dev/null and b/img/experience/thumb-dsc_github.webp differ diff --git a/img/experience/thumb-dsckitahack.jpg b/img/experience/thumb-dsckitahack.jpg new file mode 100644 index 0000000..6af7c4c Binary files /dev/null and b/img/experience/thumb-dsckitahack.jpg differ diff --git a/img/experience/thumb-dsckitahack.webp b/img/experience/thumb-dsckitahack.webp new file mode 100644 index 0000000..e9ebc60 Binary files /dev/null and b/img/experience/thumb-dsckitahack.webp differ diff --git a/img/experience/thumb-dscutp_hack_intro.jpg b/img/experience/thumb-dscutp_hack_intro.jpg new file mode 100644 index 0000000..3db804e Binary files /dev/null and b/img/experience/thumb-dscutp_hack_intro.jpg differ diff --git a/img/experience/thumb-dscutp_hack_intro.webp b/img/experience/thumb-dscutp_hack_intro.webp new file mode 100644 index 0000000..6f3b493 Binary files /dev/null and b/img/experience/thumb-dscutp_hack_intro.webp differ diff --git a/img/experience/thumb-fave.jpg b/img/experience/thumb-fave.jpg new file mode 100644 index 0000000..ec77268 Binary files /dev/null and b/img/experience/thumb-fave.jpg differ diff --git a/img/experience/thumb-fave.webp b/img/experience/thumb-fave.webp new file mode 100644 index 0000000..7828acd Binary files /dev/null and b/img/experience/thumb-fave.webp differ diff --git a/img/experience/thumb-flutter_workshop2.jpg b/img/experience/thumb-flutter_workshop2.jpg new file mode 100644 index 0000000..39a1e0f Binary files /dev/null and b/img/experience/thumb-flutter_workshop2.jpg differ diff --git a/img/experience/thumb-flutter_workshop2.webp b/img/experience/thumb-flutter_workshop2.webp new file mode 100644 index 0000000..6b9cbfa Binary files /dev/null and b/img/experience/thumb-flutter_workshop2.webp differ diff --git a/img/experience/thumb-iarc.jpg b/img/experience/thumb-iarc.jpg new file mode 100644 index 0000000..db988c9 Binary files /dev/null and b/img/experience/thumb-iarc.jpg differ diff --git a/img/experience/thumb-iarc.webp b/img/experience/thumb-iarc.webp new file mode 100644 index 0000000..a4ea0c9 Binary files /dev/null and b/img/experience/thumb-iarc.webp differ diff --git a/img/experience/thumb-ium2020.jpg b/img/experience/thumb-ium2020.jpg new file mode 100644 index 0000000..949d0a5 Binary files /dev/null and b/img/experience/thumb-ium2020.jpg differ diff --git a/img/experience/thumb-ium2020.webp b/img/experience/thumb-ium2020.webp new file mode 100644 index 0000000..2e8e73d Binary files /dev/null and b/img/experience/thumb-ium2020.webp differ diff --git a/img/experience/thumb-lhdshare.jpg b/img/experience/thumb-lhdshare.jpg new file mode 100644 index 0000000..a01a00a Binary files /dev/null and b/img/experience/thumb-lhdshare.jpg differ diff --git a/img/experience/thumb-lhdshare.webp b/img/experience/thumb-lhdshare.webp new file mode 100644 index 0000000..6f50f6b Binary files /dev/null and b/img/experience/thumb-lhdshare.webp differ diff --git a/img/experience/thumb-mit_research.jpg b/img/experience/thumb-mit_research.jpg new file mode 100644 index 0000000..e0a1ae5 Binary files /dev/null and b/img/experience/thumb-mit_research.jpg differ diff --git a/img/experience/thumb-mit_research.webp b/img/experience/thumb-mit_research.webp new file mode 100644 index 0000000..1a38c3e Binary files /dev/null and b/img/experience/thumb-mit_research.webp differ diff --git a/img/experience/thumb-reboot.jpg b/img/experience/thumb-reboot.jpg new file mode 100644 index 0000000..df4a4f2 Binary files /dev/null and b/img/experience/thumb-reboot.jpg differ diff --git a/img/experience/thumb-reboot.webp b/img/experience/thumb-reboot.webp new file mode 100644 index 0000000..5f05232 Binary files /dev/null and b/img/experience/thumb-reboot.webp differ diff --git a/img/experience/thumb-robocon18.jpg b/img/experience/thumb-robocon18.jpg new file mode 100644 index 0000000..9b87c56 Binary files /dev/null and b/img/experience/thumb-robocon18.jpg differ diff --git a/img/experience/thumb-robocon18.webp b/img/experience/thumb-robocon18.webp new file mode 100644 index 0000000..9983403 Binary files /dev/null and b/img/experience/thumb-robocon18.webp differ diff --git a/img/experience/thumb-rpi_workshop.jpg b/img/experience/thumb-rpi_workshop.jpg new file mode 100644 index 0000000..a618cff Binary files /dev/null and b/img/experience/thumb-rpi_workshop.jpg differ diff --git a/img/experience/thumb-rpi_workshop.webp b/img/experience/thumb-rpi_workshop.webp new file mode 100644 index 0000000..fd4cd92 Binary files /dev/null and b/img/experience/thumb-rpi_workshop.webp differ diff --git a/img/experience/thumb-sedex.jpg b/img/experience/thumb-sedex.jpg new file mode 100644 index 0000000..93bad21 Binary files /dev/null and b/img/experience/thumb-sedex.jpg differ diff --git a/img/experience/thumb-sedex.webp b/img/experience/thumb-sedex.webp new file mode 100644 index 0000000..86e38f9 Binary files /dev/null and b/img/experience/thumb-sedex.webp differ diff --git a/img/experience/thumb-sedex42.jpg b/img/experience/thumb-sedex42.jpg new file mode 100644 index 0000000..68c690c Binary files /dev/null and b/img/experience/thumb-sedex42.jpg differ diff --git a/img/experience/thumb-sedex42.webp b/img/experience/thumb-sedex42.webp new file mode 100644 index 0000000..bd2614f Binary files /dev/null and b/img/experience/thumb-sedex42.webp differ diff --git a/img/experience/thumb-taces.jpg b/img/experience/thumb-taces.jpg new file mode 100644 index 0000000..c85318e Binary files /dev/null and b/img/experience/thumb-taces.jpg differ diff --git a/img/experience/thumb-taces.webp b/img/experience/thumb-taces.webp new file mode 100644 index 0000000..8e21211 Binary files /dev/null and b/img/experience/thumb-taces.webp differ diff --git a/img/experience/thumb-unblockathon.jpg b/img/experience/thumb-unblockathon.jpg new file mode 100644 index 0000000..7a1793f Binary files /dev/null and b/img/experience/thumb-unblockathon.jpg differ diff --git a/img/experience/thumb-unblockathon.webp b/img/experience/thumb-unblockathon.webp new file mode 100644 index 0000000..d21dbdc Binary files /dev/null and b/img/experience/thumb-unblockathon.webp differ diff --git a/img/experience/thumb-voi.jpg b/img/experience/thumb-voi.jpg new file mode 100644 index 0000000..2e152d8 Binary files /dev/null and b/img/experience/thumb-voi.jpg differ diff --git a/img/experience/thumb-voi.webp b/img/experience/thumb-voi.webp new file mode 100644 index 0000000..a26b486 Binary files /dev/null and b/img/experience/thumb-voi.webp differ diff --git a/img/filler.png b/img/filler.png new file mode 100644 index 0000000..6e63f43 Binary files /dev/null and b/img/filler.png differ diff --git a/img/filler.webp b/img/filler.webp new file mode 100644 index 0000000..ec348f0 Binary files /dev/null and b/img/filler.webp differ diff --git a/img/me-3-4-resized.jpg b/img/me-3-4-resized.jpg new file mode 100644 index 0000000..03f47d3 Binary files /dev/null and b/img/me-3-4-resized.jpg differ diff --git a/img/me-3-4-resized.webp b/img/me-3-4-resized.webp new file mode 100644 index 0000000..1d793a3 Binary files /dev/null and b/img/me-3-4-resized.webp differ diff --git a/img/me.jpg b/img/me.jpg new file mode 100644 index 0000000..357e27f Binary files /dev/null and b/img/me.jpg differ diff --git a/img/me.webp b/img/me.webp new file mode 100644 index 0000000..2baaa7f Binary files /dev/null and b/img/me.webp differ diff --git a/img/og-image.png b/img/og-image.png new file mode 100644 index 0000000..1d096f7 Binary files /dev/null and b/img/og-image.png differ diff --git a/img/og-image.webp b/img/og-image.webp new file mode 100644 index 0000000..48de323 Binary files /dev/null and b/img/og-image.webp differ diff --git a/img/projects/thumb-aide_glass.jpg b/img/projects/thumb-aide_glass.jpg new file mode 100644 index 0000000..827c39e Binary files /dev/null and b/img/projects/thumb-aide_glass.jpg differ diff --git a/img/projects/thumb-aide_glass.webp b/img/projects/thumb-aide_glass.webp new file mode 100644 index 0000000..0bebc95 Binary files /dev/null and b/img/projects/thumb-aide_glass.webp differ diff --git a/img/projects/thumb-bustime.jpg b/img/projects/thumb-bustime.jpg new file mode 100644 index 0000000..40ee1ec Binary files /dev/null and b/img/projects/thumb-bustime.jpg differ diff --git a/img/projects/thumb-bustime.webp b/img/projects/thumb-bustime.webp new file mode 100644 index 0000000..8ab0133 Binary files /dev/null and b/img/projects/thumb-bustime.webp differ diff --git a/img/projects/thumb-calculator.jpg b/img/projects/thumb-calculator.jpg new file mode 100644 index 0000000..e9d6a99 Binary files /dev/null and b/img/projects/thumb-calculator.jpg differ diff --git a/img/projects/thumb-calculator.webp b/img/projects/thumb-calculator.webp new file mode 100644 index 0000000..30f5164 Binary files /dev/null and b/img/projects/thumb-calculator.webp differ diff --git a/img/projects/thumb-childpro_design.jpg b/img/projects/thumb-childpro_design.jpg new file mode 100644 index 0000000..d878644 Binary files /dev/null and b/img/projects/thumb-childpro_design.jpg differ diff --git a/img/projects/thumb-childpro_design.webp b/img/projects/thumb-childpro_design.webp new file mode 100644 index 0000000..4dbb568 Binary files /dev/null and b/img/projects/thumb-childpro_design.webp differ diff --git a/img/projects/thumb-clothinggan.jpg b/img/projects/thumb-clothinggan.jpg new file mode 100644 index 0000000..9d57b98 Binary files /dev/null and b/img/projects/thumb-clothinggan.jpg differ diff --git a/img/projects/thumb-clothinggan.webp b/img/projects/thumb-clothinggan.webp new file mode 100644 index 0000000..6bc07fb Binary files /dev/null and b/img/projects/thumb-clothinggan.webp differ diff --git a/img/projects/thumb-creativegan.jpg b/img/projects/thumb-creativegan.jpg new file mode 100644 index 0000000..e9316fa Binary files /dev/null and b/img/projects/thumb-creativegan.jpg differ diff --git a/img/projects/thumb-creativegan.webp b/img/projects/thumb-creativegan.webp new file mode 100644 index 0000000..012f45a Binary files /dev/null and b/img/projects/thumb-creativegan.webp differ diff --git a/img/projects/thumb-cube_runner.jpg b/img/projects/thumb-cube_runner.jpg new file mode 100644 index 0000000..2cd604c Binary files /dev/null and b/img/projects/thumb-cube_runner.jpg differ diff --git a/img/projects/thumb-cube_runner.webp b/img/projects/thumb-cube_runner.webp new file mode 100644 index 0000000..8b80cc7 Binary files /dev/null and b/img/projects/thumb-cube_runner.webp differ diff --git a/img/projects/thumb-dot_hit.jpg b/img/projects/thumb-dot_hit.jpg new file mode 100644 index 0000000..7f81c0d Binary files /dev/null and b/img/projects/thumb-dot_hit.jpg differ diff --git a/img/projects/thumb-dot_hit.webp b/img/projects/thumb-dot_hit.webp new file mode 100644 index 0000000..fe1ac90 Binary files /dev/null and b/img/projects/thumb-dot_hit.webp differ diff --git a/img/projects/thumb-dscutp.jpg b/img/projects/thumb-dscutp.jpg new file mode 100644 index 0000000..4615000 Binary files /dev/null and b/img/projects/thumb-dscutp.jpg differ diff --git a/img/projects/thumb-dscutp.webp b/img/projects/thumb-dscutp.webp new file mode 100644 index 0000000..c1ec028 Binary files /dev/null and b/img/projects/thumb-dscutp.webp differ diff --git a/img/projects/thumb-gancreate.jpg b/img/projects/thumb-gancreate.jpg new file mode 100644 index 0000000..81e65f0 Binary files /dev/null and b/img/projects/thumb-gancreate.jpg differ diff --git a/img/projects/thumb-gancreate.webp b/img/projects/thumb-gancreate.webp new file mode 100644 index 0000000..ecc2992 Binary files /dev/null and b/img/projects/thumb-gancreate.webp differ diff --git a/img/projects/thumb-hazwan.jpg b/img/projects/thumb-hazwan.jpg new file mode 100644 index 0000000..8fbd173 Binary files /dev/null and b/img/projects/thumb-hazwan.jpg differ diff --git a/img/projects/thumb-hazwan.webp b/img/projects/thumb-hazwan.webp new file mode 100644 index 0000000..4813d28 Binary files /dev/null and b/img/projects/thumb-hazwan.webp differ diff --git a/img/projects/thumb-iarc_design.jpg b/img/projects/thumb-iarc_design.jpg new file mode 100644 index 0000000..e9afe9d Binary files /dev/null and b/img/projects/thumb-iarc_design.jpg differ diff --git a/img/projects/thumb-iarc_design.webp b/img/projects/thumb-iarc_design.webp new file mode 100644 index 0000000..782a930 Binary files /dev/null and b/img/projects/thumb-iarc_design.webp differ diff --git a/img/projects/thumb-ioasis.jpg b/img/projects/thumb-ioasis.jpg new file mode 100644 index 0000000..7e1e713 Binary files /dev/null and b/img/projects/thumb-ioasis.jpg differ diff --git a/img/projects/thumb-ioasis.webp b/img/projects/thumb-ioasis.webp new file mode 100644 index 0000000..00a28c8 Binary files /dev/null and b/img/projects/thumb-ioasis.webp differ diff --git a/img/projects/thumb-istaid.jpg b/img/projects/thumb-istaid.jpg new file mode 100644 index 0000000..543f0f5 Binary files /dev/null and b/img/projects/thumb-istaid.jpg differ diff --git a/img/projects/thumb-istaid.webp b/img/projects/thumb-istaid.webp new file mode 100644 index 0000000..70707fb Binary files /dev/null and b/img/projects/thumb-istaid.webp differ diff --git a/img/projects/thumb-laundry.jpg b/img/projects/thumb-laundry.jpg new file mode 100644 index 0000000..c2d8965 Binary files /dev/null and b/img/projects/thumb-laundry.jpg differ diff --git a/img/projects/thumb-laundry.webp b/img/projects/thumb-laundry.webp new file mode 100644 index 0000000..b6f60cc Binary files /dev/null and b/img/projects/thumb-laundry.webp differ diff --git a/img/projects/thumb-legacybrand.jpg b/img/projects/thumb-legacybrand.jpg new file mode 100644 index 0000000..d4bc7cb Binary files /dev/null and b/img/projects/thumb-legacybrand.jpg differ diff --git a/img/projects/thumb-legacybrand.webp b/img/projects/thumb-legacybrand.webp new file mode 100644 index 0000000..1fa5c0f Binary files /dev/null and b/img/projects/thumb-legacybrand.webp differ diff --git a/img/projects/thumb-merchant_portal.jpg b/img/projects/thumb-merchant_portal.jpg new file mode 100644 index 0000000..d4ee780 Binary files /dev/null and b/img/projects/thumb-merchant_portal.jpg differ diff --git a/img/projects/thumb-merchant_portal.webp b/img/projects/thumb-merchant_portal.webp new file mode 100644 index 0000000..d95d1d7 Binary files /dev/null and b/img/projects/thumb-merchant_portal.webp differ diff --git a/img/projects/thumb-photosketch.jpg b/img/projects/thumb-photosketch.jpg new file mode 100644 index 0000000..2beed02 Binary files /dev/null and b/img/projects/thumb-photosketch.jpg differ diff --git a/img/projects/thumb-photosketch.webp b/img/projects/thumb-photosketch.webp new file mode 100644 index 0000000..f42d601 Binary files /dev/null and b/img/projects/thumb-photosketch.webp differ diff --git a/img/projects/thumb-quote_generator.jpg b/img/projects/thumb-quote_generator.jpg new file mode 100644 index 0000000..93e4a95 Binary files /dev/null and b/img/projects/thumb-quote_generator.jpg differ diff --git a/img/projects/thumb-quote_generator.webp b/img/projects/thumb-quote_generator.webp new file mode 100644 index 0000000..434227e Binary files /dev/null and b/img/projects/thumb-quote_generator.webp differ diff --git a/img/projects/thumb-robocon_robot.jpg b/img/projects/thumb-robocon_robot.jpg new file mode 100644 index 0000000..8998794 Binary files /dev/null and b/img/projects/thumb-robocon_robot.jpg differ diff --git a/img/projects/thumb-robocon_robot.webp b/img/projects/thumb-robocon_robot.webp new file mode 100644 index 0000000..a189054 Binary files /dev/null and b/img/projects/thumb-robocon_robot.webp differ diff --git a/img/projects/thumb-text2art.jpg b/img/projects/thumb-text2art.jpg new file mode 100644 index 0000000..25ab5ad Binary files /dev/null and b/img/projects/thumb-text2art.jpg differ diff --git a/img/projects/thumb-text2art.webp b/img/projects/thumb-text2art.webp new file mode 100644 index 0000000..ada5245 Binary files /dev/null and b/img/projects/thumb-text2art.webp differ diff --git a/img/projects/thumb-todo_app.jpg b/img/projects/thumb-todo_app.jpg new file mode 100644 index 0000000..dbeee69 Binary files /dev/null and b/img/projects/thumb-todo_app.jpg differ diff --git a/img/projects/thumb-todo_app.webp b/img/projects/thumb-todo_app.webp new file mode 100644 index 0000000..734d074 Binary files /dev/null and b/img/projects/thumb-todo_app.webp differ diff --git a/img/projects/thumb-twitchtv.jpg b/img/projects/thumb-twitchtv.jpg new file mode 100644 index 0000000..f82f7ca Binary files /dev/null and b/img/projects/thumb-twitchtv.jpg differ diff --git a/img/projects/thumb-twitchtv.webp b/img/projects/thumb-twitchtv.webp new file mode 100644 index 0000000..85363e8 Binary files /dev/null and b/img/projects/thumb-twitchtv.webp differ diff --git a/img/projects/thumb-url_shortener.jpg b/img/projects/thumb-url_shortener.jpg new file mode 100644 index 0000000..9cd2b80 Binary files /dev/null and b/img/projects/thumb-url_shortener.jpg differ diff --git a/img/projects/thumb-url_shortener.webp b/img/projects/thumb-url_shortener.webp new file mode 100644 index 0000000..238b456 Binary files /dev/null and b/img/projects/thumb-url_shortener.webp differ diff --git a/img/projects/thumb-wikipedia_viewer.jpg b/img/projects/thumb-wikipedia_viewer.jpg new file mode 100644 index 0000000..8841477 Binary files /dev/null and b/img/projects/thumb-wikipedia_viewer.jpg differ diff --git a/img/projects/thumb-wikipedia_viewer.webp b/img/projects/thumb-wikipedia_viewer.webp new file mode 100644 index 0000000..4c567ed Binary files /dev/null and b/img/projects/thumb-wikipedia_viewer.webp differ diff --git a/img/slides/abcde19-0.jpg b/img/slides/abcde19-0.jpg new file mode 100644 index 0000000..9ae9afb Binary files /dev/null and b/img/slides/abcde19-0.jpg differ diff --git a/img/slides/abcde19-0.webp b/img/slides/abcde19-0.webp new file mode 100644 index 0000000..74e1254 Binary files /dev/null and b/img/slides/abcde19-0.webp differ diff --git a/img/slides/abcde19-1.jpg b/img/slides/abcde19-1.jpg new file mode 100644 index 0000000..9114a7c Binary files /dev/null and b/img/slides/abcde19-1.jpg differ diff --git a/img/slides/abcde19-1.webp b/img/slides/abcde19-1.webp new file mode 100644 index 0000000..b4135f0 Binary files /dev/null and b/img/slides/abcde19-1.webp differ diff --git a/img/slides/adc_github-0.jpg b/img/slides/adc_github-0.jpg new file mode 100644 index 0000000..60b7290 Binary files /dev/null and b/img/slides/adc_github-0.jpg differ diff --git a/img/slides/adc_github-0.webp b/img/slides/adc_github-0.webp new file mode 100644 index 0000000..bacd79b Binary files /dev/null and b/img/slides/adc_github-0.webp differ diff --git a/img/slides/adc_github-1.jpg b/img/slides/adc_github-1.jpg new file mode 100644 index 0000000..7b5845b Binary files /dev/null and b/img/slides/adc_github-1.jpg differ diff --git a/img/slides/adc_github-1.webp b/img/slides/adc_github-1.webp new file mode 100644 index 0000000..d3b7db9 Binary files /dev/null and b/img/slides/adc_github-1.webp differ diff --git a/img/slides/adc_github-2.jpg b/img/slides/adc_github-2.jpg new file mode 100644 index 0000000..7ab84b4 Binary files /dev/null and b/img/slides/adc_github-2.jpg differ diff --git a/img/slides/adc_github-2.webp b/img/slides/adc_github-2.webp new file mode 100644 index 0000000..1267b77 Binary files /dev/null and b/img/slides/adc_github-2.webp differ diff --git a/img/slides/aide_glass-0.jpg b/img/slides/aide_glass-0.jpg new file mode 100755 index 0000000..d5a3e92 Binary files /dev/null and b/img/slides/aide_glass-0.jpg differ diff --git a/img/slides/aide_glass-0.webp b/img/slides/aide_glass-0.webp new file mode 100644 index 0000000..a76f953 Binary files /dev/null and b/img/slides/aide_glass-0.webp differ diff --git a/img/slides/aide_glass-1.jpg b/img/slides/aide_glass-1.jpg new file mode 100755 index 0000000..827c39e Binary files /dev/null and b/img/slides/aide_glass-1.jpg differ diff --git a/img/slides/aide_glass-1.webp b/img/slides/aide_glass-1.webp new file mode 100644 index 0000000..0bebc95 Binary files /dev/null and b/img/slides/aide_glass-1.webp differ diff --git a/img/slides/aide_glass-2.jpg b/img/slides/aide_glass-2.jpg new file mode 100755 index 0000000..d5a3e92 Binary files /dev/null and b/img/slides/aide_glass-2.jpg differ diff --git a/img/slides/aide_glass-2.webp b/img/slides/aide_glass-2.webp new file mode 100644 index 0000000..a76f953 Binary files /dev/null and b/img/slides/aide_glass-2.webp differ diff --git a/img/slides/aide_glass-3.jpg b/img/slides/aide_glass-3.jpg new file mode 100755 index 0000000..2846db0 Binary files /dev/null and b/img/slides/aide_glass-3.jpg differ diff --git a/img/slides/aide_glass-3.webp b/img/slides/aide_glass-3.webp new file mode 100644 index 0000000..25ec446 Binary files /dev/null and b/img/slides/aide_glass-3.webp differ diff --git a/img/slides/aide_glass-4.jpg b/img/slides/aide_glass-4.jpg new file mode 100755 index 0000000..26c7bc5 Binary files /dev/null and b/img/slides/aide_glass-4.jpg differ diff --git a/img/slides/aide_glass-4.webp b/img/slides/aide_glass-4.webp new file mode 100644 index 0000000..65bd3a7 Binary files /dev/null and b/img/slides/aide_glass-4.webp differ diff --git a/img/slides/apuboh19-0.jpg b/img/slides/apuboh19-0.jpg new file mode 100644 index 0000000..35394d9 Binary files /dev/null and b/img/slides/apuboh19-0.jpg differ diff --git a/img/slides/apuboh19-0.webp b/img/slides/apuboh19-0.webp new file mode 100644 index 0000000..e7ec7d4 Binary files /dev/null and b/img/slides/apuboh19-0.webp differ diff --git a/img/slides/apuboh19-1.jpg b/img/slides/apuboh19-1.jpg new file mode 100644 index 0000000..dd39aa3 Binary files /dev/null and b/img/slides/apuboh19-1.jpg differ diff --git a/img/slides/apuboh19-1.webp b/img/slides/apuboh19-1.webp new file mode 100644 index 0000000..36a2b0e Binary files /dev/null and b/img/slides/apuboh19-1.webp differ diff --git a/img/slides/apuboh19-2.jpg b/img/slides/apuboh19-2.jpg new file mode 100644 index 0000000..f5d025c Binary files /dev/null and b/img/slides/apuboh19-2.jpg differ diff --git a/img/slides/apuboh19-2.webp b/img/slides/apuboh19-2.webp new file mode 100644 index 0000000..a38bc6b Binary files /dev/null and b/img/slides/apuboh19-2.webp differ diff --git a/img/slides/apuboh19-3.jpg b/img/slides/apuboh19-3.jpg new file mode 100644 index 0000000..52c66fe Binary files /dev/null and b/img/slides/apuboh19-3.jpg differ diff --git a/img/slides/apuboh19-3.webp b/img/slides/apuboh19-3.webp new file mode 100644 index 0000000..832e5c4 Binary files /dev/null and b/img/slides/apuboh19-3.webp differ diff --git a/img/slides/bustime-0.jpg b/img/slides/bustime-0.jpg new file mode 100644 index 0000000..6ddb3fe Binary files /dev/null and b/img/slides/bustime-0.jpg differ diff --git a/img/slides/bustime-0.webp b/img/slides/bustime-0.webp new file mode 100644 index 0000000..9142563 Binary files /dev/null and b/img/slides/bustime-0.webp differ diff --git a/img/slides/bustime-1.jpg b/img/slides/bustime-1.jpg new file mode 100755 index 0000000..40ee1ec Binary files /dev/null and b/img/slides/bustime-1.jpg differ diff --git a/img/slides/bustime-1.webp b/img/slides/bustime-1.webp new file mode 100644 index 0000000..8ab0133 Binary files /dev/null and b/img/slides/bustime-1.webp differ diff --git a/img/slides/bustime-2.jpg b/img/slides/bustime-2.jpg new file mode 100644 index 0000000..f2a42a0 Binary files /dev/null and b/img/slides/bustime-2.jpg differ diff --git a/img/slides/bustime-2.webp b/img/slides/bustime-2.webp new file mode 100644 index 0000000..5a83deb Binary files /dev/null and b/img/slides/bustime-2.webp differ diff --git a/img/slides/bustime-3.jpg b/img/slides/bustime-3.jpg new file mode 100644 index 0000000..890b942 Binary files /dev/null and b/img/slides/bustime-3.jpg differ diff --git a/img/slides/bustime-3.webp b/img/slides/bustime-3.webp new file mode 100644 index 0000000..6bd7b3a Binary files /dev/null and b/img/slides/bustime-3.webp differ diff --git a/img/slides/calculator-0.jpg b/img/slides/calculator-0.jpg new file mode 100644 index 0000000..e9d6a99 Binary files /dev/null and b/img/slides/calculator-0.jpg differ diff --git a/img/slides/calculator-0.webp b/img/slides/calculator-0.webp new file mode 100644 index 0000000..30f5164 Binary files /dev/null and b/img/slides/calculator-0.webp differ diff --git a/img/slides/calculator-1.jpg b/img/slides/calculator-1.jpg new file mode 100644 index 0000000..e9d6a99 Binary files /dev/null and b/img/slides/calculator-1.jpg differ diff --git a/img/slides/calculator-1.webp b/img/slides/calculator-1.webp new file mode 100644 index 0000000..30f5164 Binary files /dev/null and b/img/slides/calculator-1.webp differ diff --git a/img/slides/calculator-2.jpg b/img/slides/calculator-2.jpg new file mode 100644 index 0000000..e9d6a99 Binary files /dev/null and b/img/slides/calculator-2.jpg differ diff --git a/img/slides/calculator-2.webp b/img/slides/calculator-2.webp new file mode 100644 index 0000000..30f5164 Binary files /dev/null and b/img/slides/calculator-2.webp differ diff --git a/img/slides/childpro_design-0.jpg b/img/slides/childpro_design-0.jpg new file mode 100644 index 0000000..d878644 Binary files /dev/null and b/img/slides/childpro_design-0.jpg differ diff --git a/img/slides/childpro_design-0.webp b/img/slides/childpro_design-0.webp new file mode 100644 index 0000000..4dbb568 Binary files /dev/null and b/img/slides/childpro_design-0.webp differ diff --git a/img/slides/childpro_design-1.jpg b/img/slides/childpro_design-1.jpg new file mode 100644 index 0000000..6c76fed Binary files /dev/null and b/img/slides/childpro_design-1.jpg differ diff --git a/img/slides/childpro_design-1.webp b/img/slides/childpro_design-1.webp new file mode 100644 index 0000000..01c549b Binary files /dev/null and b/img/slides/childpro_design-1.webp differ diff --git a/img/slides/childpro_design-2.jpg b/img/slides/childpro_design-2.jpg new file mode 100644 index 0000000..6b86498 Binary files /dev/null and b/img/slides/childpro_design-2.jpg differ diff --git a/img/slides/childpro_design-2.webp b/img/slides/childpro_design-2.webp new file mode 100644 index 0000000..7ba89d8 Binary files /dev/null and b/img/slides/childpro_design-2.webp differ diff --git a/img/slides/clothinggan-0.jpg b/img/slides/clothinggan-0.jpg new file mode 100644 index 0000000..9d57b98 Binary files /dev/null and b/img/slides/clothinggan-0.jpg differ diff --git a/img/slides/clothinggan-0.webp b/img/slides/clothinggan-0.webp new file mode 100644 index 0000000..6bc07fb Binary files /dev/null and b/img/slides/clothinggan-0.webp differ diff --git a/img/slides/clothinggan-1.jpg b/img/slides/clothinggan-1.jpg new file mode 100644 index 0000000..9d57b98 Binary files /dev/null and b/img/slides/clothinggan-1.jpg differ diff --git a/img/slides/clothinggan-1.webp b/img/slides/clothinggan-1.webp new file mode 100644 index 0000000..6bc07fb Binary files /dev/null and b/img/slides/clothinggan-1.webp differ diff --git a/img/slides/clothinggan-2.jpg b/img/slides/clothinggan-2.jpg new file mode 100644 index 0000000..9d57b98 Binary files /dev/null and b/img/slides/clothinggan-2.jpg differ diff --git a/img/slides/clothinggan-2.webp b/img/slides/clothinggan-2.webp new file mode 100644 index 0000000..6bc07fb Binary files /dev/null and b/img/slides/clothinggan-2.webp differ diff --git a/img/slides/creativegan-0.jpg b/img/slides/creativegan-0.jpg new file mode 100644 index 0000000..76ba44e Binary files /dev/null and b/img/slides/creativegan-0.jpg differ diff --git a/img/slides/creativegan-0.webp b/img/slides/creativegan-0.webp new file mode 100644 index 0000000..9f7e39e Binary files /dev/null and b/img/slides/creativegan-0.webp differ diff --git a/img/slides/creativegan-1.jpg b/img/slides/creativegan-1.jpg new file mode 100644 index 0000000..e9316fa Binary files /dev/null and b/img/slides/creativegan-1.jpg differ diff --git a/img/slides/creativegan-1.webp b/img/slides/creativegan-1.webp new file mode 100644 index 0000000..012f45a Binary files /dev/null and b/img/slides/creativegan-1.webp differ diff --git a/img/slides/creativegan-2.jpg b/img/slides/creativegan-2.jpg new file mode 100644 index 0000000..68e8052 Binary files /dev/null and b/img/slides/creativegan-2.jpg differ diff --git a/img/slides/creativegan-2.webp b/img/slides/creativegan-2.webp new file mode 100644 index 0000000..bdd84cb Binary files /dev/null and b/img/slides/creativegan-2.webp differ diff --git a/img/slides/cube_runner-0.jpg b/img/slides/cube_runner-0.jpg new file mode 100644 index 0000000..2cd604c Binary files /dev/null and b/img/slides/cube_runner-0.jpg differ diff --git a/img/slides/cube_runner-0.webp b/img/slides/cube_runner-0.webp new file mode 100644 index 0000000..8b80cc7 Binary files /dev/null and b/img/slides/cube_runner-0.webp differ diff --git a/img/slides/cube_runner-1.jpg b/img/slides/cube_runner-1.jpg new file mode 100644 index 0000000..aa95005 Binary files /dev/null and b/img/slides/cube_runner-1.jpg differ diff --git a/img/slides/cube_runner-1.webp b/img/slides/cube_runner-1.webp new file mode 100644 index 0000000..ab39c49 Binary files /dev/null and b/img/slides/cube_runner-1.webp differ diff --git a/img/slides/cube_runner-2.jpg b/img/slides/cube_runner-2.jpg new file mode 100644 index 0000000..3b8c4c5 Binary files /dev/null and b/img/slides/cube_runner-2.jpg differ diff --git a/img/slides/cube_runner-2.webp b/img/slides/cube_runner-2.webp new file mode 100644 index 0000000..7bf5943 Binary files /dev/null and b/img/slides/cube_runner-2.webp differ diff --git a/img/slides/cube_runner-3.jpg b/img/slides/cube_runner-3.jpg new file mode 100644 index 0000000..c9480e3 Binary files /dev/null and b/img/slides/cube_runner-3.jpg differ diff --git a/img/slides/cube_runner-3.webp b/img/slides/cube_runner-3.webp new file mode 100644 index 0000000..92c9cf0 Binary files /dev/null and b/img/slides/cube_runner-3.webp differ diff --git a/img/slides/cube_runner-4.jpg b/img/slides/cube_runner-4.jpg new file mode 100644 index 0000000..661acb4 Binary files /dev/null and b/img/slides/cube_runner-4.jpg differ diff --git a/img/slides/cube_runner-4.webp b/img/slides/cube_runner-4.webp new file mode 100644 index 0000000..ea40b4f Binary files /dev/null and b/img/slides/cube_runner-4.webp differ diff --git a/img/slides/cyhi-0.jpg b/img/slides/cyhi-0.jpg new file mode 100644 index 0000000..d257d30 Binary files /dev/null and b/img/slides/cyhi-0.jpg differ diff --git a/img/slides/cyhi-0.webp b/img/slides/cyhi-0.webp new file mode 100644 index 0000000..82d73dd Binary files /dev/null and b/img/slides/cyhi-0.webp differ diff --git a/img/slides/cyhi-1.jpg b/img/slides/cyhi-1.jpg new file mode 100644 index 0000000..744fa3d Binary files /dev/null and b/img/slides/cyhi-1.jpg differ diff --git a/img/slides/cyhi-1.webp b/img/slides/cyhi-1.webp new file mode 100644 index 0000000..eb853e6 Binary files /dev/null and b/img/slides/cyhi-1.webp differ diff --git a/img/slides/cyhi-2.jpg b/img/slides/cyhi-2.jpg new file mode 100644 index 0000000..c66fdc0 Binary files /dev/null and b/img/slides/cyhi-2.jpg differ diff --git a/img/slides/cyhi-2.webp b/img/slides/cyhi-2.webp new file mode 100644 index 0000000..03ca6d8 Binary files /dev/null and b/img/slides/cyhi-2.webp differ diff --git a/img/slides/cyhi-3.jpg b/img/slides/cyhi-3.jpg new file mode 100644 index 0000000..f14848a Binary files /dev/null and b/img/slides/cyhi-3.jpg differ diff --git a/img/slides/cyhi-3.webp b/img/slides/cyhi-3.webp new file mode 100644 index 0000000..ed4b363 Binary files /dev/null and b/img/slides/cyhi-3.webp differ diff --git a/img/slides/cyhi-4.jpg b/img/slides/cyhi-4.jpg new file mode 100644 index 0000000..7cacee0 Binary files /dev/null and b/img/slides/cyhi-4.jpg differ diff --git a/img/slides/cyhi-4.webp b/img/slides/cyhi-4.webp new file mode 100644 index 0000000..7510674 Binary files /dev/null and b/img/slides/cyhi-4.webp differ diff --git a/img/slides/cyhi-5.jpg b/img/slides/cyhi-5.jpg new file mode 100644 index 0000000..fbba097 Binary files /dev/null and b/img/slides/cyhi-5.jpg differ diff --git a/img/slides/cyhi-5.webp b/img/slides/cyhi-5.webp new file mode 100644 index 0000000..b21fb0e Binary files /dev/null and b/img/slides/cyhi-5.webp differ diff --git a/img/slides/cyhi-6.jpg b/img/slides/cyhi-6.jpg new file mode 100644 index 0000000..c340259 Binary files /dev/null and b/img/slides/cyhi-6.jpg differ diff --git a/img/slides/cyhi-6.webp b/img/slides/cyhi-6.webp new file mode 100644 index 0000000..8ab01ea Binary files /dev/null and b/img/slides/cyhi-6.webp differ diff --git a/img/slides/dot_hit-0.jpg b/img/slides/dot_hit-0.jpg new file mode 100644 index 0000000..7f81c0d Binary files /dev/null and b/img/slides/dot_hit-0.jpg differ diff --git a/img/slides/dot_hit-0.webp b/img/slides/dot_hit-0.webp new file mode 100644 index 0000000..fe1ac90 Binary files /dev/null and b/img/slides/dot_hit-0.webp differ diff --git a/img/slides/dot_hit-1.jpg b/img/slides/dot_hit-1.jpg new file mode 100644 index 0000000..6a95a0b Binary files /dev/null and b/img/slides/dot_hit-1.jpg differ diff --git a/img/slides/dot_hit-1.webp b/img/slides/dot_hit-1.webp new file mode 100644 index 0000000..a3e2580 Binary files /dev/null and b/img/slides/dot_hit-1.webp differ diff --git a/img/slides/dot_hit-2.jpg b/img/slides/dot_hit-2.jpg new file mode 100644 index 0000000..170878c Binary files /dev/null and b/img/slides/dot_hit-2.jpg differ diff --git a/img/slides/dot_hit-2.webp b/img/slides/dot_hit-2.webp new file mode 100644 index 0000000..8560c09 Binary files /dev/null and b/img/slides/dot_hit-2.webp differ diff --git a/img/slides/dsc_flutter_1-0.jpg b/img/slides/dsc_flutter_1-0.jpg new file mode 100644 index 0000000..ddd4c81 Binary files /dev/null and b/img/slides/dsc_flutter_1-0.jpg differ diff --git a/img/slides/dsc_flutter_1-0.webp b/img/slides/dsc_flutter_1-0.webp new file mode 100644 index 0000000..6f50581 Binary files /dev/null and b/img/slides/dsc_flutter_1-0.webp differ diff --git a/img/slides/dsc_flutter_1-1.jpg b/img/slides/dsc_flutter_1-1.jpg new file mode 100644 index 0000000..97d9c4f Binary files /dev/null and b/img/slides/dsc_flutter_1-1.jpg differ diff --git a/img/slides/dsc_flutter_1-1.webp b/img/slides/dsc_flutter_1-1.webp new file mode 100644 index 0000000..f219e2a Binary files /dev/null and b/img/slides/dsc_flutter_1-1.webp differ diff --git a/img/slides/dsc_flutter_1-2.jpg b/img/slides/dsc_flutter_1-2.jpg new file mode 100644 index 0000000..ebf6b88 Binary files /dev/null and b/img/slides/dsc_flutter_1-2.jpg differ diff --git a/img/slides/dsc_flutter_1-2.webp b/img/slides/dsc_flutter_1-2.webp new file mode 100644 index 0000000..a282def Binary files /dev/null and b/img/slides/dsc_flutter_1-2.webp differ diff --git a/img/slides/dsc_flutter_1-3.jpg b/img/slides/dsc_flutter_1-3.jpg new file mode 100644 index 0000000..867caa9 Binary files /dev/null and b/img/slides/dsc_flutter_1-3.jpg differ diff --git a/img/slides/dsc_flutter_1-3.webp b/img/slides/dsc_flutter_1-3.webp new file mode 100644 index 0000000..3e46abf Binary files /dev/null and b/img/slides/dsc_flutter_1-3.webp differ diff --git a/img/slides/dsc_flutter_1-4.jpg b/img/slides/dsc_flutter_1-4.jpg new file mode 100644 index 0000000..c4ce318 Binary files /dev/null and b/img/slides/dsc_flutter_1-4.jpg differ diff --git a/img/slides/dsc_flutter_1-4.webp b/img/slides/dsc_flutter_1-4.webp new file mode 100644 index 0000000..1a713a3 Binary files /dev/null and b/img/slides/dsc_flutter_1-4.webp differ diff --git a/img/slides/dsc_github-0.jpg b/img/slides/dsc_github-0.jpg new file mode 100644 index 0000000..181db4c Binary files /dev/null and b/img/slides/dsc_github-0.jpg differ diff --git a/img/slides/dsc_github-0.webp b/img/slides/dsc_github-0.webp new file mode 100644 index 0000000..1707818 Binary files /dev/null and b/img/slides/dsc_github-0.webp differ diff --git a/img/slides/dsc_github-1.jpg b/img/slides/dsc_github-1.jpg new file mode 100644 index 0000000..713e06c Binary files /dev/null and b/img/slides/dsc_github-1.jpg differ diff --git a/img/slides/dsc_github-1.webp b/img/slides/dsc_github-1.webp new file mode 100644 index 0000000..534f89d Binary files /dev/null and b/img/slides/dsc_github-1.webp differ diff --git a/img/slides/dsc_github-2.jpg b/img/slides/dsc_github-2.jpg new file mode 100644 index 0000000..be295ad Binary files /dev/null and b/img/slides/dsc_github-2.jpg differ diff --git a/img/slides/dsc_github-2.webp b/img/slides/dsc_github-2.webp new file mode 100644 index 0000000..51554be Binary files /dev/null and b/img/slides/dsc_github-2.webp differ diff --git a/img/slides/dsckitahack-0.jpg b/img/slides/dsckitahack-0.jpg new file mode 100644 index 0000000..06c7d19 Binary files /dev/null and b/img/slides/dsckitahack-0.jpg differ diff --git a/img/slides/dsckitahack-0.webp b/img/slides/dsckitahack-0.webp new file mode 100644 index 0000000..e36eeaf Binary files /dev/null and b/img/slides/dsckitahack-0.webp differ diff --git a/img/slides/dsckitahack-1.jpg b/img/slides/dsckitahack-1.jpg new file mode 100644 index 0000000..6af7c4c Binary files /dev/null and b/img/slides/dsckitahack-1.jpg differ diff --git a/img/slides/dsckitahack-1.webp b/img/slides/dsckitahack-1.webp new file mode 100644 index 0000000..e9ebc60 Binary files /dev/null and b/img/slides/dsckitahack-1.webp differ diff --git a/img/slides/dscutp-0.jpg b/img/slides/dscutp-0.jpg new file mode 100755 index 0000000..4615000 Binary files /dev/null and b/img/slides/dscutp-0.jpg differ diff --git a/img/slides/dscutp-0.webp b/img/slides/dscutp-0.webp new file mode 100644 index 0000000..c1ec028 Binary files /dev/null and b/img/slides/dscutp-0.webp differ diff --git a/img/slides/dscutp-1.jpg b/img/slides/dscutp-1.jpg new file mode 100755 index 0000000..301d98f Binary files /dev/null and b/img/slides/dscutp-1.jpg differ diff --git a/img/slides/dscutp-1.webp b/img/slides/dscutp-1.webp new file mode 100644 index 0000000..8f951bf Binary files /dev/null and b/img/slides/dscutp-1.webp differ diff --git a/img/slides/dscutp_hack_intro-1.jpg b/img/slides/dscutp_hack_intro-1.jpg new file mode 100644 index 0000000..3db804e Binary files /dev/null and b/img/slides/dscutp_hack_intro-1.jpg differ diff --git a/img/slides/dscutp_hack_intro-1.webp b/img/slides/dscutp_hack_intro-1.webp new file mode 100644 index 0000000..6f3b493 Binary files /dev/null and b/img/slides/dscutp_hack_intro-1.webp differ diff --git a/img/slides/fave-0.jpg b/img/slides/fave-0.jpg new file mode 100644 index 0000000..ec77268 Binary files /dev/null and b/img/slides/fave-0.jpg differ diff --git a/img/slides/fave-0.webp b/img/slides/fave-0.webp new file mode 100644 index 0000000..7828acd Binary files /dev/null and b/img/slides/fave-0.webp differ diff --git a/img/slides/fave-1.jpg b/img/slides/fave-1.jpg new file mode 100644 index 0000000..48c0ffa Binary files /dev/null and b/img/slides/fave-1.jpg differ diff --git a/img/slides/fave-1.webp b/img/slides/fave-1.webp new file mode 100644 index 0000000..f102b32 Binary files /dev/null and b/img/slides/fave-1.webp differ diff --git a/img/slides/fave-2.jpg b/img/slides/fave-2.jpg new file mode 100644 index 0000000..7bddbb6 Binary files /dev/null and b/img/slides/fave-2.jpg differ diff --git a/img/slides/fave-2.webp b/img/slides/fave-2.webp new file mode 100644 index 0000000..d1c6e97 Binary files /dev/null and b/img/slides/fave-2.webp differ diff --git a/img/slides/fave-3.jpg b/img/slides/fave-3.jpg new file mode 100644 index 0000000..f181c96 Binary files /dev/null and b/img/slides/fave-3.jpg differ diff --git a/img/slides/fave-3.webp b/img/slides/fave-3.webp new file mode 100644 index 0000000..b231fd9 Binary files /dev/null and b/img/slides/fave-3.webp differ diff --git a/img/slides/fave-4.jpg b/img/slides/fave-4.jpg new file mode 100644 index 0000000..22e735e Binary files /dev/null and b/img/slides/fave-4.jpg differ diff --git a/img/slides/fave-4.webp b/img/slides/fave-4.webp new file mode 100644 index 0000000..d02577b Binary files /dev/null and b/img/slides/fave-4.webp differ diff --git a/img/slides/flutter_workshop2-1.jpg b/img/slides/flutter_workshop2-1.jpg new file mode 100644 index 0000000..39a1e0f Binary files /dev/null and b/img/slides/flutter_workshop2-1.jpg differ diff --git a/img/slides/flutter_workshop2-1.webp b/img/slides/flutter_workshop2-1.webp new file mode 100644 index 0000000..6b9cbfa Binary files /dev/null and b/img/slides/flutter_workshop2-1.webp differ diff --git a/img/slides/gancreate-0.jpg b/img/slides/gancreate-0.jpg new file mode 100644 index 0000000..4b513c4 Binary files /dev/null and b/img/slides/gancreate-0.jpg differ diff --git a/img/slides/gancreate-0.webp b/img/slides/gancreate-0.webp new file mode 100644 index 0000000..1e2e5e0 Binary files /dev/null and b/img/slides/gancreate-0.webp differ diff --git a/img/slides/gancreate-1.jpg b/img/slides/gancreate-1.jpg new file mode 100644 index 0000000..81e65f0 Binary files /dev/null and b/img/slides/gancreate-1.jpg differ diff --git a/img/slides/gancreate-1.webp b/img/slides/gancreate-1.webp new file mode 100644 index 0000000..ecc2992 Binary files /dev/null and b/img/slides/gancreate-1.webp differ diff --git a/img/slides/gancreate-2.jpg b/img/slides/gancreate-2.jpg new file mode 100644 index 0000000..1e32a22 Binary files /dev/null and b/img/slides/gancreate-2.jpg differ diff --git a/img/slides/gancreate-2.webp b/img/slides/gancreate-2.webp new file mode 100644 index 0000000..0c726fc Binary files /dev/null and b/img/slides/gancreate-2.webp differ diff --git a/img/slides/gancreate-3.jpg b/img/slides/gancreate-3.jpg new file mode 100644 index 0000000..580b481 Binary files /dev/null and b/img/slides/gancreate-3.jpg differ diff --git a/img/slides/gancreate-3.webp b/img/slides/gancreate-3.webp new file mode 100644 index 0000000..40e706f Binary files /dev/null and b/img/slides/gancreate-3.webp differ diff --git a/img/slides/hazwan-0.jpg b/img/slides/hazwan-0.jpg new file mode 100755 index 0000000..8fbd173 Binary files /dev/null and b/img/slides/hazwan-0.jpg differ diff --git a/img/slides/hazwan-0.webp b/img/slides/hazwan-0.webp new file mode 100644 index 0000000..4813d28 Binary files /dev/null and b/img/slides/hazwan-0.webp differ diff --git a/img/slides/hazwan-1.jpg b/img/slides/hazwan-1.jpg new file mode 100755 index 0000000..e93b4c8 Binary files /dev/null and b/img/slides/hazwan-1.jpg differ diff --git a/img/slides/hazwan-1.webp b/img/slides/hazwan-1.webp new file mode 100644 index 0000000..18eb4e4 Binary files /dev/null and b/img/slides/hazwan-1.webp differ diff --git a/img/slides/iarc-0.jpg b/img/slides/iarc-0.jpg new file mode 100644 index 0000000..1f1dc96 Binary files /dev/null and b/img/slides/iarc-0.jpg differ diff --git a/img/slides/iarc-0.webp b/img/slides/iarc-0.webp new file mode 100644 index 0000000..87bb2e7 Binary files /dev/null and b/img/slides/iarc-0.webp differ diff --git a/img/slides/iarc-1.jpg b/img/slides/iarc-1.jpg new file mode 100644 index 0000000..e337489 Binary files /dev/null and b/img/slides/iarc-1.jpg differ diff --git a/img/slides/iarc-1.webp b/img/slides/iarc-1.webp new file mode 100644 index 0000000..92bcc47 Binary files /dev/null and b/img/slides/iarc-1.webp differ diff --git a/img/slides/iarc-2.jpg b/img/slides/iarc-2.jpg new file mode 100644 index 0000000..19c1ff8 Binary files /dev/null and b/img/slides/iarc-2.jpg differ diff --git a/img/slides/iarc-2.webp b/img/slides/iarc-2.webp new file mode 100644 index 0000000..1a22f2f Binary files /dev/null and b/img/slides/iarc-2.webp differ diff --git a/img/slides/iarc-3.jpg b/img/slides/iarc-3.jpg new file mode 100644 index 0000000..db988c9 Binary files /dev/null and b/img/slides/iarc-3.jpg differ diff --git a/img/slides/iarc-3.webp b/img/slides/iarc-3.webp new file mode 100644 index 0000000..a4ea0c9 Binary files /dev/null and b/img/slides/iarc-3.webp differ diff --git a/img/slides/iarc-4.jpg b/img/slides/iarc-4.jpg new file mode 100644 index 0000000..6ec1550 Binary files /dev/null and b/img/slides/iarc-4.jpg differ diff --git a/img/slides/iarc-4.webp b/img/slides/iarc-4.webp new file mode 100644 index 0000000..663f91e Binary files /dev/null and b/img/slides/iarc-4.webp differ diff --git a/img/slides/iarc-5.jpg b/img/slides/iarc-5.jpg new file mode 100644 index 0000000..9a813b3 Binary files /dev/null and b/img/slides/iarc-5.jpg differ diff --git a/img/slides/iarc-5.webp b/img/slides/iarc-5.webp new file mode 100644 index 0000000..f77fc53 Binary files /dev/null and b/img/slides/iarc-5.webp differ diff --git a/img/slides/iarc-6.jpg b/img/slides/iarc-6.jpg new file mode 100644 index 0000000..43bd44c Binary files /dev/null and b/img/slides/iarc-6.jpg differ diff --git a/img/slides/iarc-6.webp b/img/slides/iarc-6.webp new file mode 100644 index 0000000..25d58bd Binary files /dev/null and b/img/slides/iarc-6.webp differ diff --git a/img/slides/iarc_design-0.jpg b/img/slides/iarc_design-0.jpg new file mode 100644 index 0000000..e9afe9d Binary files /dev/null and b/img/slides/iarc_design-0.jpg differ diff --git a/img/slides/iarc_design-0.webp b/img/slides/iarc_design-0.webp new file mode 100644 index 0000000..782a930 Binary files /dev/null and b/img/slides/iarc_design-0.webp differ diff --git a/img/slides/iarc_design-1.jpg b/img/slides/iarc_design-1.jpg new file mode 100644 index 0000000..321c7a1 Binary files /dev/null and b/img/slides/iarc_design-1.jpg differ diff --git a/img/slides/iarc_design-1.webp b/img/slides/iarc_design-1.webp new file mode 100644 index 0000000..1a9ca1e Binary files /dev/null and b/img/slides/iarc_design-1.webp differ diff --git a/img/slides/iarc_design-2.jpg b/img/slides/iarc_design-2.jpg new file mode 100644 index 0000000..2620054 Binary files /dev/null and b/img/slides/iarc_design-2.jpg differ diff --git a/img/slides/iarc_design-2.webp b/img/slides/iarc_design-2.webp new file mode 100644 index 0000000..fb6c9ac Binary files /dev/null and b/img/slides/iarc_design-2.webp differ diff --git a/img/slides/ioasis-0.jpg b/img/slides/ioasis-0.jpg new file mode 100755 index 0000000..7e1e713 Binary files /dev/null and b/img/slides/ioasis-0.jpg differ diff --git a/img/slides/ioasis-0.webp b/img/slides/ioasis-0.webp new file mode 100644 index 0000000..00a28c8 Binary files /dev/null and b/img/slides/ioasis-0.webp differ diff --git a/img/slides/ioasis-1.jpg b/img/slides/ioasis-1.jpg new file mode 100755 index 0000000..7e1e713 Binary files /dev/null and b/img/slides/ioasis-1.jpg differ diff --git a/img/slides/ioasis-1.webp b/img/slides/ioasis-1.webp new file mode 100644 index 0000000..00a28c8 Binary files /dev/null and b/img/slides/ioasis-1.webp differ diff --git a/img/slides/istaid-0.jpg b/img/slides/istaid-0.jpg new file mode 100644 index 0000000..3038c55 Binary files /dev/null and b/img/slides/istaid-0.jpg differ diff --git a/img/slides/istaid-0.webp b/img/slides/istaid-0.webp new file mode 100644 index 0000000..716f575 Binary files /dev/null and b/img/slides/istaid-0.webp differ diff --git a/img/slides/istaid-1.jpg b/img/slides/istaid-1.jpg new file mode 100755 index 0000000..543f0f5 Binary files /dev/null and b/img/slides/istaid-1.jpg differ diff --git a/img/slides/istaid-1.webp b/img/slides/istaid-1.webp new file mode 100644 index 0000000..70707fb Binary files /dev/null and b/img/slides/istaid-1.webp differ diff --git a/img/slides/istaid-2.jpg b/img/slides/istaid-2.jpg new file mode 100644 index 0000000..3038c55 Binary files /dev/null and b/img/slides/istaid-2.jpg differ diff --git a/img/slides/istaid-2.webp b/img/slides/istaid-2.webp new file mode 100644 index 0000000..716f575 Binary files /dev/null and b/img/slides/istaid-2.webp differ diff --git a/img/slides/ium2020-0.jpg b/img/slides/ium2020-0.jpg new file mode 100644 index 0000000..bf5356a Binary files /dev/null and b/img/slides/ium2020-0.jpg differ diff --git a/img/slides/ium2020-0.webp b/img/slides/ium2020-0.webp new file mode 100644 index 0000000..3356d10 Binary files /dev/null and b/img/slides/ium2020-0.webp differ diff --git a/img/slides/ium2020-1.jpg b/img/slides/ium2020-1.jpg new file mode 100644 index 0000000..949d0a5 Binary files /dev/null and b/img/slides/ium2020-1.jpg differ diff --git a/img/slides/ium2020-1.webp b/img/slides/ium2020-1.webp new file mode 100644 index 0000000..2e8e73d Binary files /dev/null and b/img/slides/ium2020-1.webp differ diff --git a/img/slides/laundry-0.jpg b/img/slides/laundry-0.jpg new file mode 100755 index 0000000..c2d8965 Binary files /dev/null and b/img/slides/laundry-0.jpg differ diff --git a/img/slides/laundry-0.webp b/img/slides/laundry-0.webp new file mode 100644 index 0000000..b6f60cc Binary files /dev/null and b/img/slides/laundry-0.webp differ diff --git a/img/slides/legacybrand-0.jpg b/img/slides/legacybrand-0.jpg new file mode 100644 index 0000000..d4bc7cb Binary files /dev/null and b/img/slides/legacybrand-0.jpg differ diff --git a/img/slides/legacybrand-0.webp b/img/slides/legacybrand-0.webp new file mode 100644 index 0000000..1fa5c0f Binary files /dev/null and b/img/slides/legacybrand-0.webp differ diff --git a/img/slides/legacybrand-1.jpg b/img/slides/legacybrand-1.jpg new file mode 100644 index 0000000..d4bc7cb Binary files /dev/null and b/img/slides/legacybrand-1.jpg differ diff --git a/img/slides/legacybrand-1.webp b/img/slides/legacybrand-1.webp new file mode 100644 index 0000000..1fa5c0f Binary files /dev/null and b/img/slides/legacybrand-1.webp differ diff --git a/img/slides/lhdshare-0.jpg b/img/slides/lhdshare-0.jpg new file mode 100644 index 0000000..a01a00a Binary files /dev/null and b/img/slides/lhdshare-0.jpg differ diff --git a/img/slides/lhdshare-0.webp b/img/slides/lhdshare-0.webp new file mode 100644 index 0000000..6f50f6b Binary files /dev/null and b/img/slides/lhdshare-0.webp differ diff --git a/img/slides/lhdshare-1.jpg b/img/slides/lhdshare-1.jpg new file mode 100644 index 0000000..a01a00a Binary files /dev/null and b/img/slides/lhdshare-1.jpg differ diff --git a/img/slides/lhdshare-1.webp b/img/slides/lhdshare-1.webp new file mode 100644 index 0000000..6f50f6b Binary files /dev/null and b/img/slides/lhdshare-1.webp differ diff --git a/img/slides/merchant_portal-0.jpg b/img/slides/merchant_portal-0.jpg new file mode 100644 index 0000000..d4ee780 Binary files /dev/null and b/img/slides/merchant_portal-0.jpg differ diff --git a/img/slides/merchant_portal-0.webp b/img/slides/merchant_portal-0.webp new file mode 100644 index 0000000..d95d1d7 Binary files /dev/null and b/img/slides/merchant_portal-0.webp differ diff --git a/img/slides/merchant_portal-1.jpg b/img/slides/merchant_portal-1.jpg new file mode 100644 index 0000000..7bb8f46 Binary files /dev/null and b/img/slides/merchant_portal-1.jpg differ diff --git a/img/slides/merchant_portal-1.webp b/img/slides/merchant_portal-1.webp new file mode 100644 index 0000000..37c720e Binary files /dev/null and b/img/slides/merchant_portal-1.webp differ diff --git a/img/slides/merchant_portal-2.jpg b/img/slides/merchant_portal-2.jpg new file mode 100644 index 0000000..a7d944e Binary files /dev/null and b/img/slides/merchant_portal-2.jpg differ diff --git a/img/slides/merchant_portal-2.webp b/img/slides/merchant_portal-2.webp new file mode 100644 index 0000000..5d01f07 Binary files /dev/null and b/img/slides/merchant_portal-2.webp differ diff --git a/img/slides/mit_research-0.jpg b/img/slides/mit_research-0.jpg new file mode 100644 index 0000000..76ba44e Binary files /dev/null and b/img/slides/mit_research-0.jpg differ diff --git a/img/slides/mit_research-0.webp b/img/slides/mit_research-0.webp new file mode 100644 index 0000000..9f7e39e Binary files /dev/null and b/img/slides/mit_research-0.webp differ diff --git a/img/slides/mit_research-1.jpg b/img/slides/mit_research-1.jpg new file mode 100644 index 0000000..e0a1ae5 Binary files /dev/null and b/img/slides/mit_research-1.jpg differ diff --git a/img/slides/mit_research-1.webp b/img/slides/mit_research-1.webp new file mode 100644 index 0000000..1a38c3e Binary files /dev/null and b/img/slides/mit_research-1.webp differ diff --git a/img/slides/mit_research-2.jpg b/img/slides/mit_research-2.jpg new file mode 100644 index 0000000..68e8052 Binary files /dev/null and b/img/slides/mit_research-2.jpg differ diff --git a/img/slides/mit_research-2.webp b/img/slides/mit_research-2.webp new file mode 100644 index 0000000..bdd84cb Binary files /dev/null and b/img/slides/mit_research-2.webp differ diff --git a/img/slides/mit_research-3.jpg b/img/slides/mit_research-3.jpg new file mode 100644 index 0000000..e11bf29 Binary files /dev/null and b/img/slides/mit_research-3.jpg differ diff --git a/img/slides/mit_research-3.webp b/img/slides/mit_research-3.webp new file mode 100644 index 0000000..2f145ce Binary files /dev/null and b/img/slides/mit_research-3.webp differ diff --git a/img/slides/photosketch-0.jpg b/img/slides/photosketch-0.jpg new file mode 100644 index 0000000..214b09c Binary files /dev/null and b/img/slides/photosketch-0.jpg differ diff --git a/img/slides/photosketch-0.webp b/img/slides/photosketch-0.webp new file mode 100644 index 0000000..e11cf94 Binary files /dev/null and b/img/slides/photosketch-0.webp differ diff --git a/img/slides/photosketch-1.jpg b/img/slides/photosketch-1.jpg new file mode 100644 index 0000000..2beed02 Binary files /dev/null and b/img/slides/photosketch-1.jpg differ diff --git a/img/slides/photosketch-1.webp b/img/slides/photosketch-1.webp new file mode 100644 index 0000000..f42d601 Binary files /dev/null and b/img/slides/photosketch-1.webp differ diff --git a/img/slides/quote_generator-0.jpg b/img/slides/quote_generator-0.jpg new file mode 100644 index 0000000..93e4a95 Binary files /dev/null and b/img/slides/quote_generator-0.jpg differ diff --git a/img/slides/quote_generator-0.webp b/img/slides/quote_generator-0.webp new file mode 100644 index 0000000..434227e Binary files /dev/null and b/img/slides/quote_generator-0.webp differ diff --git a/img/slides/quote_generator-1.jpg b/img/slides/quote_generator-1.jpg new file mode 100644 index 0000000..93e4a95 Binary files /dev/null and b/img/slides/quote_generator-1.jpg differ diff --git a/img/slides/quote_generator-1.webp b/img/slides/quote_generator-1.webp new file mode 100644 index 0000000..434227e Binary files /dev/null and b/img/slides/quote_generator-1.webp differ diff --git a/img/slides/quote_generator-2.jpg b/img/slides/quote_generator-2.jpg new file mode 100644 index 0000000..93e4a95 Binary files /dev/null and b/img/slides/quote_generator-2.jpg differ diff --git a/img/slides/quote_generator-2.webp b/img/slides/quote_generator-2.webp new file mode 100644 index 0000000..434227e Binary files /dev/null and b/img/slides/quote_generator-2.webp differ diff --git a/img/slides/reboot-0.jpg b/img/slides/reboot-0.jpg new file mode 100644 index 0000000..df4a4f2 Binary files /dev/null and b/img/slides/reboot-0.jpg differ diff --git a/img/slides/reboot-0.webp b/img/slides/reboot-0.webp new file mode 100644 index 0000000..5f05232 Binary files /dev/null and b/img/slides/reboot-0.webp differ diff --git a/img/slides/reboot-1.jpg b/img/slides/reboot-1.jpg new file mode 100644 index 0000000..b0703fb Binary files /dev/null and b/img/slides/reboot-1.jpg differ diff --git a/img/slides/reboot-1.webp b/img/slides/reboot-1.webp new file mode 100644 index 0000000..d4376e7 Binary files /dev/null and b/img/slides/reboot-1.webp differ diff --git a/img/slides/reboot-2.jpg b/img/slides/reboot-2.jpg new file mode 100644 index 0000000..2ddd973 Binary files /dev/null and b/img/slides/reboot-2.jpg differ diff --git a/img/slides/reboot-2.webp b/img/slides/reboot-2.webp new file mode 100644 index 0000000..775f3d2 Binary files /dev/null and b/img/slides/reboot-2.webp differ diff --git a/img/slides/reboot-3.jpg b/img/slides/reboot-3.jpg new file mode 100644 index 0000000..ffda28f Binary files /dev/null and b/img/slides/reboot-3.jpg differ diff --git a/img/slides/reboot-3.webp b/img/slides/reboot-3.webp new file mode 100644 index 0000000..0f44e8e Binary files /dev/null and b/img/slides/reboot-3.webp differ diff --git a/img/slides/robocon18-0.jpg b/img/slides/robocon18-0.jpg new file mode 100644 index 0000000..9b87c56 Binary files /dev/null and b/img/slides/robocon18-0.jpg differ diff --git a/img/slides/robocon18-0.webp b/img/slides/robocon18-0.webp new file mode 100644 index 0000000..9983403 Binary files /dev/null and b/img/slides/robocon18-0.webp differ diff --git a/img/slides/robocon18-1.jpg b/img/slides/robocon18-1.jpg new file mode 100644 index 0000000..5f13c2a Binary files /dev/null and b/img/slides/robocon18-1.jpg differ diff --git a/img/slides/robocon18-1.webp b/img/slides/robocon18-1.webp new file mode 100644 index 0000000..ddd254c Binary files /dev/null and b/img/slides/robocon18-1.webp differ diff --git a/img/slides/robocon18-2.jpg b/img/slides/robocon18-2.jpg new file mode 100644 index 0000000..8fce808 Binary files /dev/null and b/img/slides/robocon18-2.jpg differ diff --git a/img/slides/robocon18-2.webp b/img/slides/robocon18-2.webp new file mode 100644 index 0000000..106d538 Binary files /dev/null and b/img/slides/robocon18-2.webp differ diff --git a/img/slides/robocon18-3.jpg b/img/slides/robocon18-3.jpg new file mode 100644 index 0000000..c83f306 Binary files /dev/null and b/img/slides/robocon18-3.jpg differ diff --git a/img/slides/robocon18-3.webp b/img/slides/robocon18-3.webp new file mode 100644 index 0000000..791f679 Binary files /dev/null and b/img/slides/robocon18-3.webp differ diff --git a/img/slides/robocon18-4.jpg b/img/slides/robocon18-4.jpg new file mode 100644 index 0000000..0f5dabf Binary files /dev/null and b/img/slides/robocon18-4.jpg differ diff --git a/img/slides/robocon18-4.webp b/img/slides/robocon18-4.webp new file mode 100644 index 0000000..a03a640 Binary files /dev/null and b/img/slides/robocon18-4.webp differ diff --git a/img/slides/robocon_robot-0.jpg b/img/slides/robocon_robot-0.jpg new file mode 100644 index 0000000..8998794 Binary files /dev/null and b/img/slides/robocon_robot-0.jpg differ diff --git a/img/slides/robocon_robot-0.webp b/img/slides/robocon_robot-0.webp new file mode 100644 index 0000000..a189054 Binary files /dev/null and b/img/slides/robocon_robot-0.webp differ diff --git a/img/slides/robocon_robot-1.jpg b/img/slides/robocon_robot-1.jpg new file mode 100644 index 0000000..0ed39f8 Binary files /dev/null and b/img/slides/robocon_robot-1.jpg differ diff --git a/img/slides/robocon_robot-1.webp b/img/slides/robocon_robot-1.webp new file mode 100644 index 0000000..0c219f4 Binary files /dev/null and b/img/slides/robocon_robot-1.webp differ diff --git a/img/slides/robocon_robot-2.jpg b/img/slides/robocon_robot-2.jpg new file mode 100644 index 0000000..d4bde4d Binary files /dev/null and b/img/slides/robocon_robot-2.jpg differ diff --git a/img/slides/robocon_robot-2.webp b/img/slides/robocon_robot-2.webp new file mode 100644 index 0000000..c52a858 Binary files /dev/null and b/img/slides/robocon_robot-2.webp differ diff --git a/img/slides/robocon_robot-3.jpg b/img/slides/robocon_robot-3.jpg new file mode 100644 index 0000000..5667a6d Binary files /dev/null and b/img/slides/robocon_robot-3.jpg differ diff --git a/img/slides/robocon_robot-3.webp b/img/slides/robocon_robot-3.webp new file mode 100644 index 0000000..8422c32 Binary files /dev/null and b/img/slides/robocon_robot-3.webp differ diff --git a/img/slides/robocon_robot-4.jpg b/img/slides/robocon_robot-4.jpg new file mode 100644 index 0000000..5dc2da1 Binary files /dev/null and b/img/slides/robocon_robot-4.jpg differ diff --git a/img/slides/robocon_robot-4.webp b/img/slides/robocon_robot-4.webp new file mode 100644 index 0000000..42b951e Binary files /dev/null and b/img/slides/robocon_robot-4.webp differ diff --git a/img/slides/robocon_robot-5.jpg b/img/slides/robocon_robot-5.jpg new file mode 100644 index 0000000..0362101 Binary files /dev/null and b/img/slides/robocon_robot-5.jpg differ diff --git a/img/slides/robocon_robot-5.webp b/img/slides/robocon_robot-5.webp new file mode 100644 index 0000000..18aa7d4 Binary files /dev/null and b/img/slides/robocon_robot-5.webp differ diff --git a/img/slides/rpi_workshop-0.jpg b/img/slides/rpi_workshop-0.jpg new file mode 100644 index 0000000..a618cff Binary files /dev/null and b/img/slides/rpi_workshop-0.jpg differ diff --git a/img/slides/rpi_workshop-0.webp b/img/slides/rpi_workshop-0.webp new file mode 100644 index 0000000..fd4cd92 Binary files /dev/null and b/img/slides/rpi_workshop-0.webp differ diff --git a/img/slides/rpi_workshop-1.jpg b/img/slides/rpi_workshop-1.jpg new file mode 100644 index 0000000..7d06e40 Binary files /dev/null and b/img/slides/rpi_workshop-1.jpg differ diff --git a/img/slides/rpi_workshop-1.webp b/img/slides/rpi_workshop-1.webp new file mode 100644 index 0000000..05db4c5 Binary files /dev/null and b/img/slides/rpi_workshop-1.webp differ diff --git a/img/slides/rpi_workshop-2.jpg b/img/slides/rpi_workshop-2.jpg new file mode 100644 index 0000000..1a7a032 Binary files /dev/null and b/img/slides/rpi_workshop-2.jpg differ diff --git a/img/slides/rpi_workshop-2.webp b/img/slides/rpi_workshop-2.webp new file mode 100644 index 0000000..b71a013 Binary files /dev/null and b/img/slides/rpi_workshop-2.webp differ diff --git a/img/slides/rpi_workshop-3.jpg b/img/slides/rpi_workshop-3.jpg new file mode 100644 index 0000000..dbb5641 Binary files /dev/null and b/img/slides/rpi_workshop-3.jpg differ diff --git a/img/slides/rpi_workshop-3.webp b/img/slides/rpi_workshop-3.webp new file mode 100644 index 0000000..88fd7da Binary files /dev/null and b/img/slides/rpi_workshop-3.webp differ diff --git a/img/slides/rpi_workshop-4.jpg b/img/slides/rpi_workshop-4.jpg new file mode 100644 index 0000000..b205fa8 Binary files /dev/null and b/img/slides/rpi_workshop-4.jpg differ diff --git a/img/slides/rpi_workshop-4.webp b/img/slides/rpi_workshop-4.webp new file mode 100644 index 0000000..3ac4121 Binary files /dev/null and b/img/slides/rpi_workshop-4.webp differ diff --git a/img/slides/rpi_workshop-5.jpg b/img/slides/rpi_workshop-5.jpg new file mode 100644 index 0000000..ea8372b Binary files /dev/null and b/img/slides/rpi_workshop-5.jpg differ diff --git a/img/slides/rpi_workshop-5.webp b/img/slides/rpi_workshop-5.webp new file mode 100644 index 0000000..2c18906 Binary files /dev/null and b/img/slides/rpi_workshop-5.webp differ diff --git a/img/slides/rpi_workshop-6.jpg b/img/slides/rpi_workshop-6.jpg new file mode 100644 index 0000000..e895903 Binary files /dev/null and b/img/slides/rpi_workshop-6.jpg differ diff --git a/img/slides/rpi_workshop-6.webp b/img/slides/rpi_workshop-6.webp new file mode 100644 index 0000000..e866fb7 Binary files /dev/null and b/img/slides/rpi_workshop-6.webp differ diff --git a/img/slides/sedex-0.jpg b/img/slides/sedex-0.jpg new file mode 100644 index 0000000..93bad21 Binary files /dev/null and b/img/slides/sedex-0.jpg differ diff --git a/img/slides/sedex-0.webp b/img/slides/sedex-0.webp new file mode 100644 index 0000000..86e38f9 Binary files /dev/null and b/img/slides/sedex-0.webp differ diff --git a/img/slides/sedex-1.jpg b/img/slides/sedex-1.jpg new file mode 100644 index 0000000..e67c17d Binary files /dev/null and b/img/slides/sedex-1.jpg differ diff --git a/img/slides/sedex-1.webp b/img/slides/sedex-1.webp new file mode 100644 index 0000000..4fdf917 Binary files /dev/null and b/img/slides/sedex-1.webp differ diff --git a/img/slides/sedex-2.jpg b/img/slides/sedex-2.jpg new file mode 100644 index 0000000..bb2c652 Binary files /dev/null and b/img/slides/sedex-2.jpg differ diff --git a/img/slides/sedex-2.webp b/img/slides/sedex-2.webp new file mode 100644 index 0000000..2d496c1 Binary files /dev/null and b/img/slides/sedex-2.webp differ diff --git a/img/slides/sedex-3.jpg b/img/slides/sedex-3.jpg new file mode 100644 index 0000000..9a041cc Binary files /dev/null and b/img/slides/sedex-3.jpg differ diff --git a/img/slides/sedex-3.webp b/img/slides/sedex-3.webp new file mode 100644 index 0000000..d3eef8e Binary files /dev/null and b/img/slides/sedex-3.webp differ diff --git a/img/slides/sedex-4.jpg b/img/slides/sedex-4.jpg new file mode 100644 index 0000000..2667dea Binary files /dev/null and b/img/slides/sedex-4.jpg differ diff --git a/img/slides/sedex-4.webp b/img/slides/sedex-4.webp new file mode 100644 index 0000000..aae1bee Binary files /dev/null and b/img/slides/sedex-4.webp differ diff --git a/img/slides/sedex-5.jpg b/img/slides/sedex-5.jpg new file mode 100644 index 0000000..c3b3113 Binary files /dev/null and b/img/slides/sedex-5.jpg differ diff --git a/img/slides/sedex-5.webp b/img/slides/sedex-5.webp new file mode 100644 index 0000000..4fae065 Binary files /dev/null and b/img/slides/sedex-5.webp differ diff --git a/img/slides/sedex-6.jpg b/img/slides/sedex-6.jpg new file mode 100644 index 0000000..e70f848 Binary files /dev/null and b/img/slides/sedex-6.jpg differ diff --git a/img/slides/sedex-6.webp b/img/slides/sedex-6.webp new file mode 100644 index 0000000..ae8c664 Binary files /dev/null and b/img/slides/sedex-6.webp differ diff --git a/img/slides/sedex-7.jpg b/img/slides/sedex-7.jpg new file mode 100644 index 0000000..af0abe2 Binary files /dev/null and b/img/slides/sedex-7.jpg differ diff --git a/img/slides/sedex-7.webp b/img/slides/sedex-7.webp new file mode 100644 index 0000000..55e0c79 Binary files /dev/null and b/img/slides/sedex-7.webp differ diff --git a/img/slides/sedex42-0.jpg b/img/slides/sedex42-0.jpg new file mode 100644 index 0000000..6df532d Binary files /dev/null and b/img/slides/sedex42-0.jpg differ diff --git a/img/slides/sedex42-0.webp b/img/slides/sedex42-0.webp new file mode 100644 index 0000000..be9facb Binary files /dev/null and b/img/slides/sedex42-0.webp differ diff --git a/img/slides/sedex42-1.jpg b/img/slides/sedex42-1.jpg new file mode 100644 index 0000000..68c690c Binary files /dev/null and b/img/slides/sedex42-1.jpg differ diff --git a/img/slides/sedex42-1.webp b/img/slides/sedex42-1.webp new file mode 100644 index 0000000..bd2614f Binary files /dev/null and b/img/slides/sedex42-1.webp differ diff --git a/img/slides/sedex42-2.jpg b/img/slides/sedex42-2.jpg new file mode 100644 index 0000000..d2bf68a Binary files /dev/null and b/img/slides/sedex42-2.jpg differ diff --git a/img/slides/sedex42-2.webp b/img/slides/sedex42-2.webp new file mode 100644 index 0000000..89fff96 Binary files /dev/null and b/img/slides/sedex42-2.webp differ diff --git a/img/slides/sedex42-3.jpg b/img/slides/sedex42-3.jpg new file mode 100644 index 0000000..db16dcd Binary files /dev/null and b/img/slides/sedex42-3.jpg differ diff --git a/img/slides/sedex42-3.webp b/img/slides/sedex42-3.webp new file mode 100644 index 0000000..7eb5867 Binary files /dev/null and b/img/slides/sedex42-3.webp differ diff --git a/img/slides/taces-0.jpg b/img/slides/taces-0.jpg new file mode 100644 index 0000000..1498915 Binary files /dev/null and b/img/slides/taces-0.jpg differ diff --git a/img/slides/taces-0.webp b/img/slides/taces-0.webp new file mode 100644 index 0000000..7734730 Binary files /dev/null and b/img/slides/taces-0.webp differ diff --git a/img/slides/taces-1.jpg b/img/slides/taces-1.jpg new file mode 100644 index 0000000..8df7ae0 Binary files /dev/null and b/img/slides/taces-1.jpg differ diff --git a/img/slides/taces-1.webp b/img/slides/taces-1.webp new file mode 100644 index 0000000..442e09e Binary files /dev/null and b/img/slides/taces-1.webp differ diff --git a/img/slides/taces-2.jpg b/img/slides/taces-2.jpg new file mode 100644 index 0000000..026aa85 Binary files /dev/null and b/img/slides/taces-2.jpg differ diff --git a/img/slides/taces-2.webp b/img/slides/taces-2.webp new file mode 100644 index 0000000..f6ce537 Binary files /dev/null and b/img/slides/taces-2.webp differ diff --git a/img/slides/taces-3.jpg b/img/slides/taces-3.jpg new file mode 100644 index 0000000..312595b Binary files /dev/null and b/img/slides/taces-3.jpg differ diff --git a/img/slides/taces-3.webp b/img/slides/taces-3.webp new file mode 100644 index 0000000..5c5951c Binary files /dev/null and b/img/slides/taces-3.webp differ diff --git a/img/slides/text2art-0.jpg b/img/slides/text2art-0.jpg new file mode 100644 index 0000000..7058b65 Binary files /dev/null and b/img/slides/text2art-0.jpg differ diff --git a/img/slides/text2art-0.webp b/img/slides/text2art-0.webp new file mode 100644 index 0000000..1fba006 Binary files /dev/null and b/img/slides/text2art-0.webp differ diff --git a/img/slides/text2art-1.jpg b/img/slides/text2art-1.jpg new file mode 100644 index 0000000..25ab5ad Binary files /dev/null and b/img/slides/text2art-1.jpg differ diff --git a/img/slides/text2art-1.webp b/img/slides/text2art-1.webp new file mode 100644 index 0000000..ada5245 Binary files /dev/null and b/img/slides/text2art-1.webp differ diff --git a/img/slides/text2art-2.jpg b/img/slides/text2art-2.jpg new file mode 100644 index 0000000..ae5734f Binary files /dev/null and b/img/slides/text2art-2.jpg differ diff --git a/img/slides/text2art-2.webp b/img/slides/text2art-2.webp new file mode 100644 index 0000000..f691292 Binary files /dev/null and b/img/slides/text2art-2.webp differ diff --git a/img/slides/todo_app-0.jpg b/img/slides/todo_app-0.jpg new file mode 100644 index 0000000..dbeee69 Binary files /dev/null and b/img/slides/todo_app-0.jpg differ diff --git a/img/slides/todo_app-0.webp b/img/slides/todo_app-0.webp new file mode 100644 index 0000000..734d074 Binary files /dev/null and b/img/slides/todo_app-0.webp differ diff --git a/img/slides/todo_app-1.jpg b/img/slides/todo_app-1.jpg new file mode 100644 index 0000000..dbeee69 Binary files /dev/null and b/img/slides/todo_app-1.jpg differ diff --git a/img/slides/todo_app-1.webp b/img/slides/todo_app-1.webp new file mode 100644 index 0000000..734d074 Binary files /dev/null and b/img/slides/todo_app-1.webp differ diff --git a/img/slides/todo_app-2.jpg b/img/slides/todo_app-2.jpg new file mode 100644 index 0000000..dbeee69 Binary files /dev/null and b/img/slides/todo_app-2.jpg differ diff --git a/img/slides/todo_app-2.webp b/img/slides/todo_app-2.webp new file mode 100644 index 0000000..734d074 Binary files /dev/null and b/img/slides/todo_app-2.webp differ diff --git a/img/slides/twitchtv-0.jpg b/img/slides/twitchtv-0.jpg new file mode 100644 index 0000000..f82f7ca Binary files /dev/null and b/img/slides/twitchtv-0.jpg differ diff --git a/img/slides/twitchtv-0.webp b/img/slides/twitchtv-0.webp new file mode 100644 index 0000000..85363e8 Binary files /dev/null and b/img/slides/twitchtv-0.webp differ diff --git a/img/slides/twitchtv-1.jpg b/img/slides/twitchtv-1.jpg new file mode 100644 index 0000000..f82f7ca Binary files /dev/null and b/img/slides/twitchtv-1.jpg differ diff --git a/img/slides/twitchtv-1.webp b/img/slides/twitchtv-1.webp new file mode 100644 index 0000000..85363e8 Binary files /dev/null and b/img/slides/twitchtv-1.webp differ diff --git a/img/slides/twitchtv-2.jpg b/img/slides/twitchtv-2.jpg new file mode 100644 index 0000000..f82f7ca Binary files /dev/null and b/img/slides/twitchtv-2.jpg differ diff --git a/img/slides/twitchtv-2.webp b/img/slides/twitchtv-2.webp new file mode 100644 index 0000000..85363e8 Binary files /dev/null and b/img/slides/twitchtv-2.webp differ diff --git a/img/slides/unblockathon-0.jpg b/img/slides/unblockathon-0.jpg new file mode 100644 index 0000000..779fa70 Binary files /dev/null and b/img/slides/unblockathon-0.jpg differ diff --git a/img/slides/unblockathon-0.webp b/img/slides/unblockathon-0.webp new file mode 100644 index 0000000..b9098ab Binary files /dev/null and b/img/slides/unblockathon-0.webp differ diff --git a/img/slides/unblockathon-1.jpg b/img/slides/unblockathon-1.jpg new file mode 100644 index 0000000..d3e692f Binary files /dev/null and b/img/slides/unblockathon-1.jpg differ diff --git a/img/slides/unblockathon-1.webp b/img/slides/unblockathon-1.webp new file mode 100644 index 0000000..1f1de85 Binary files /dev/null and b/img/slides/unblockathon-1.webp differ diff --git a/img/slides/unblockathon-2.jpg b/img/slides/unblockathon-2.jpg new file mode 100644 index 0000000..365b2a0 Binary files /dev/null and b/img/slides/unblockathon-2.jpg differ diff --git a/img/slides/unblockathon-2.webp b/img/slides/unblockathon-2.webp new file mode 100644 index 0000000..f49f1a6 Binary files /dev/null and b/img/slides/unblockathon-2.webp differ diff --git a/img/slides/unblockathon-3.jpg b/img/slides/unblockathon-3.jpg new file mode 100644 index 0000000..7a1793f Binary files /dev/null and b/img/slides/unblockathon-3.jpg differ diff --git a/img/slides/unblockathon-3.webp b/img/slides/unblockathon-3.webp new file mode 100644 index 0000000..d21dbdc Binary files /dev/null and b/img/slides/unblockathon-3.webp differ diff --git a/img/slides/url_shortener-0.jpg b/img/slides/url_shortener-0.jpg new file mode 100644 index 0000000..9cd2b80 Binary files /dev/null and b/img/slides/url_shortener-0.jpg differ diff --git a/img/slides/url_shortener-0.webp b/img/slides/url_shortener-0.webp new file mode 100644 index 0000000..238b456 Binary files /dev/null and b/img/slides/url_shortener-0.webp differ diff --git a/img/slides/url_shortener-1.jpg b/img/slides/url_shortener-1.jpg new file mode 100644 index 0000000..9cd2b80 Binary files /dev/null and b/img/slides/url_shortener-1.jpg differ diff --git a/img/slides/url_shortener-1.webp b/img/slides/url_shortener-1.webp new file mode 100644 index 0000000..238b456 Binary files /dev/null and b/img/slides/url_shortener-1.webp differ diff --git a/img/slides/url_shortener-2.jpg b/img/slides/url_shortener-2.jpg new file mode 100644 index 0000000..9cd2b80 Binary files /dev/null and b/img/slides/url_shortener-2.jpg differ diff --git a/img/slides/url_shortener-2.webp b/img/slides/url_shortener-2.webp new file mode 100644 index 0000000..238b456 Binary files /dev/null and b/img/slides/url_shortener-2.webp differ diff --git a/img/slides/voi-1.jpg b/img/slides/voi-1.jpg new file mode 100644 index 0000000..2e152d8 Binary files /dev/null and b/img/slides/voi-1.jpg differ diff --git a/img/slides/voi-1.webp b/img/slides/voi-1.webp new file mode 100644 index 0000000..a26b486 Binary files /dev/null and b/img/slides/voi-1.webp differ diff --git a/img/slides/wikipedia_viewer-0.jpg b/img/slides/wikipedia_viewer-0.jpg new file mode 100644 index 0000000..8841477 Binary files /dev/null and b/img/slides/wikipedia_viewer-0.jpg differ diff --git a/img/slides/wikipedia_viewer-0.webp b/img/slides/wikipedia_viewer-0.webp new file mode 100644 index 0000000..4c567ed Binary files /dev/null and b/img/slides/wikipedia_viewer-0.webp differ diff --git a/img/slides/wikipedia_viewer-1.jpg b/img/slides/wikipedia_viewer-1.jpg new file mode 100644 index 0000000..8841477 Binary files /dev/null and b/img/slides/wikipedia_viewer-1.jpg differ diff --git a/img/slides/wikipedia_viewer-1.webp b/img/slides/wikipedia_viewer-1.webp new file mode 100644 index 0000000..4c567ed Binary files /dev/null and b/img/slides/wikipedia_viewer-1.webp differ diff --git a/img/slides/wikipedia_viewer-2.jpg b/img/slides/wikipedia_viewer-2.jpg new file mode 100644 index 0000000..8841477 Binary files /dev/null and b/img/slides/wikipedia_viewer-2.jpg differ diff --git a/img/slides/wikipedia_viewer-2.webp b/img/slides/wikipedia_viewer-2.webp new file mode 100644 index 0000000..4c567ed Binary files /dev/null and b/img/slides/wikipedia_viewer-2.webp differ diff --git a/img/testimonial-0.jpg b/img/testimonial-0.jpg new file mode 100644 index 0000000..3c90e53 Binary files /dev/null and b/img/testimonial-0.jpg differ diff --git a/img/testimonial-0.webp b/img/testimonial-0.webp new file mode 100644 index 0000000..12d45da Binary files /dev/null and b/img/testimonial-0.webp differ diff --git a/img/tutorials/thumb-flutter-movie.jpg b/img/tutorials/thumb-flutter-movie.jpg new file mode 100644 index 0000000..407bf45 Binary files /dev/null and b/img/tutorials/thumb-flutter-movie.jpg differ diff --git a/img/tutorials/thumb-flutter-movie.webp b/img/tutorials/thumb-flutter-movie.webp new file mode 100644 index 0000000..2fad401 Binary files /dev/null and b/img/tutorials/thumb-flutter-movie.webp differ diff --git a/img/tutorials/thumb-flutter-stopwatch.jpg b/img/tutorials/thumb-flutter-stopwatch.jpg new file mode 100644 index 0000000..6e645a4 Binary files /dev/null and b/img/tutorials/thumb-flutter-stopwatch.jpg differ diff --git a/img/tutorials/thumb-flutter-stopwatch.webp b/img/tutorials/thumb-flutter-stopwatch.webp new file mode 100644 index 0000000..d6b7035 Binary files /dev/null and b/img/tutorials/thumb-flutter-stopwatch.webp differ diff --git a/img/unblockathon-3.jpg b/img/unblockathon-3.jpg new file mode 100644 index 0000000..7a1793f Binary files /dev/null and b/img/unblockathon-3.jpg differ diff --git a/img/unblockathon-3.webp b/img/unblockathon-3.webp new file mode 100644 index 0000000..d21dbdc Binary files /dev/null and b/img/unblockathon-3.webp differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..729bc99 --- /dev/null +++ b/index.html @@ -0,0 +1,1121 @@ + + + + Rashad's Website + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ +
+ Hello, I'm Rashad. +
I'm a Developer + . +
+ + + + + + +
+ +
+ + + +
+
+ +
ABOUT
+
+ + + +
+
+ + + + + My picture + + + +
+
About Me
+
+

I'm a fullstack developer and ML engineer specializing in generative AI and computer vision. I co-authored a research paper with MIT in generative AI when I was 19 and worked in generative AI projects since then. I'm also a certified freediver and PADI rescue diver. I run, weightlift, climb, and write as a hobby. +

At 15 years old, I skipped highschool and entered university as the youngest student. +

At 17, I was the youngest software engineering intern at Fave and started f...

+
+ + +
+
+ + + +
+
+
+ +
+
+ +
EXPERIENCE
+
+ +
+ +
+ +
+

Rashad Labs

+

Self-Employed

+

+ ● Freelancer/Contractor as ML Engineer specializing in Generative AI.
● Worked with individuals and companies internationally, including Idea Ink, JericVerse, Axentra Group, and Garven Labs.
● Python, PyTorch, React, Vercel, Gradio, Paypal API, Stripe API +

+
+ +
+

Massachusetts Institute of Technology

+

Research Collaborator

+

+ ● Co-authored 'CreativeGAN' conference paper for ASME IDETC-CIE with MIT DeCoDE Lab.
● Trained segmentation, generative, and novelty detection networks on a new dataset and integrated the networks for creative bike design synthesis.
● Python, Tensorflow, PyTorch, OpenCV, High-Performance Computing (HPC) +

+
+ + +
+ + +
+
+ +
+
+ +
+
+ + +
+ +
PROJECTS
+
+ +
+
+
ALL
+ +
ML
+ +
WEB
+ +
MOBILE
+ +
ELECTRONICS
+ +
+
+
+
ALL
+ +
ML
+ +
WEB
+ +
MOBILE
+ +
ELECTRONICS
+ +
+
+
+ + + +
+ +
+ +
ACTIVITY
+
+ +
+
+
ALL
+ +
WORK
+ +
SPEAKING
+ +
COMPETITION
+ +
+
+
+
ALL
+ +
WORK
+ +
SPEAKING
+ +
COMPETITION
+ +
+
+
+ + + +
+ + +
+
+ +
TESTIMONIALS
+
+ +
+
+ + + +
+
+
+
+ +
+
+ + +
+ + + +
+
CONTACT
+
+
Have a question or want to work together?
+
+ + + +
+
Your message was sent successfully. Thanks!
+
+ +
+
+
+ + +
+ +
+ My picture +
+ + + + + diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..275c76c Binary files /dev/null and b/logo.png differ diff --git a/media/sinchew.jpg b/media/sinchew.jpg new file mode 100644 index 0000000..b371ea9 Binary files /dev/null and b/media/sinchew.jpg differ diff --git a/media/theborneopost.pdf b/media/theborneopost.pdf new file mode 100644 index 0000000..6847bfa Binary files /dev/null and b/media/theborneopost.pdf differ diff --git a/scripts/canvas.js b/scripts/canvas.js new file mode 100644 index 0000000..95ed282 --- /dev/null +++ b/scripts/canvas.js @@ -0,0 +1,79 @@ +var space; + +function floatySpace() { + var colors = [ + "#FF3F8E", "#04C2C9", "#2E55C1" + ]; + + + space = new CanvasSpace("canvas", "#252934" ).display(); + var form = new Form( space ); + + // Elements + var pts = []; + var center = space.size.$divide(1.8); + var angle = -(window.innerWidth * 0.5); + var count = window.innerWidth * 0.05; + if (count > 150) count = 150; + var line = new Line(0, angle).to(space.size.x, 0); + var mouse = center.clone(); + + var r = Math.min(space.size.x, space.size.y) * 1; + for (var i=0; i 0.1) pts[i].brightness -= 0.01 + } + + var color = "rgba(255,255,255," + pts[i].brightness +")" + form.stroke(color).fill( true ).line(ln); + } + }, + + onMouseAction: function(type, x, y, evt) { + if (type=="move") { + mouse.set(x,y); + } + }, + + onTouchAction: function(type, x, y, evt) { + this.onMouseAction(type, x, y); + } + }); + + space.bindMouse(); + space.play(); +} + +floatySpace(); + +$(window).resize(function(){ + space.removeAll(); + $('canvas').remove(); + floatySpace(); +}); diff --git a/scripts/index.js b/scripts/index.js new file mode 100644 index 0000000..6bce6a5 --- /dev/null +++ b/scripts/index.js @@ -0,0 +1,238 @@ +$(function () { + + var isMobile; + if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { + isMobile = true; + + // Mobile height fix + $('.height-fix').each(function () { + var h = $(this).height(); + $(this).height(h) + }) + } + + // RESIZE RESETS + $(window).resize(function () { + posFilterBar($('.filter1').first()); + posFilterBar($('.filter2').first()) + }); + + // Sticky Nav on Mobile + if (isMobile) { + $('nav').addClass('fixed'); + } else { + $('nav').addClass('desk'); + } + + $('.experience-timeline').each(function () { + + $this = $(this); // Store reference to this + $userContent = $this.children('div'); // user content + + // Create each timeline block + $userContent.each(function () { + $(this).addClass('vtimeline-content').wrap('
'); + }); + + // Add icons to each block + $this.find('.vtimeline-point').each(function () { + $(this).prepend('
'); + }); + + // Add dates to the timeline if exists + $this.find('.vtimeline-content').each(function () { + var date = $(this).data('date'); + if (date) { // Prepend if exists + $(this).parent().prepend('' + date + ''); + } + }); + + }); + + + // NAV POSITION + var navPos = $('nav').position().top; + var lastPos = 0; + var lockTimer + + $(window).on('scroll', function () { + + var pos = $(window).scrollTop(); + var pos2 = pos + 50; + var scrollBottom = pos + $(window).height(); + + if (!isMobile) { + if (pos >= navPos + $('nav').height() && lastPos < pos) { + $('nav').addClass('fixed'); + } + if (pos < navPos && lastPos > pos) { + $('nav').removeClass('fixed'); + } + lastPos = pos; + } + + // Link Highlighting + if (pos2 > $('#home').offset().top) { highlightLink('home'); } + if (pos2 > $('#about').offset().top) { highlightLink('about'); } + if (pos2 > $('#timeline').offset().top) { highlightLink('timeline'); } + if (pos2 > $('#blog').offset().top) { highlightLink('blog'); } + if (pos2 > $('#portfolio').offset().top) { highlightLink('portfolio'); } + if (pos2 > $('#experience').offset().top) { highlightLink('experience'); } + if (pos2 > $('#testimonials').offset().top) { highlightLink('testimonials'); } + if (pos2 > $('#media').offset().top) { highlightLink('media'); } + if (pos2 > $('#contact').offset().top || + pos + $(window).height() === $(document).height()) { + highlightLink('contact'); + } + + // Prevent Hover on Scroll + clearTimeout(lockTimer); + if (!$('body').hasClass('disable-hover')) { + $('body').addClass('disable-hover') + } + + lockTimer = setTimeout(function () { + $('body').removeClass('disable-hover') + }, 500); + }); + + function highlightLink(anchor) { + $('nav .active').removeClass('active'); + $("nav").find('[dest="' + anchor + '"]').addClass('active'); + } + + function scrollToAnchor(anchor) { + $('.link-wrap').removeClass('visible'); + + $('nav span').removeClass('active'); + $("nav").find('[dest="' + anchor + '"]').addClass('active'); + + $('html, body').animate({ + scrollTop: $('#' + anchor).offset().top + }, 400); + } + + // EVENT HANDLERS + $('.page-link').click(function () { + var anchor = $(this).attr("dest"); + scrollToAnchor(anchor); + }); + + $('.mdi-menu').click(function () { + $('.link-wrap').toggleClass('visible'); + }); + + // ABOUT SHOW MORE / SHOW LESS FUNCTION + $('.read-more-btn').on('click', function () { + $(this).siblings('.full-content').toggleClass('hidden'); + $(this).siblings('.excerpt-container').toggleClass('hidden'); + var anchor = $(this).attr("dest"); + if ($(this).siblings('.excerpt-container').hasClass('hidden')) { + console.log('less') + $(this).html("Show Less "); + } else { + console.log('more') + $(this).html("Show More "); + scrollToAnchor(anchor); + } + }); + + // PORTFOLIO SHOW MORE / SHOW LESS FUNCTION + $('.expand-button').on('click', function () { + $(this).siblings('.collapsible').toggleClass('-expanded'); + var anchor = $(this).attr("dest"); + if ($(this).siblings('.collapsible').hasClass('-expanded')) { + $(this).html("Show Less "); + } else { + $(this).html("Show More "); + scrollToAnchor(anchor); + } + }); + + // $('.blog-wrap').hover( function() { + // $('.blog-wrap').not(this).addClass('fade'); + // $( this ).addClass( "hover" ); + // }, function() { + // $( this ).removeClass( "hover" ); + // $('.blog-wrap').removeClass('fade'); + // }); + + posFilterBar($('.filter1').first()); + posFilterBar($('.filter2').first()) + + $('.filter').click(function () { + posFilterBar(this); + }); + + function posFilterBar(elem) { + var origin = $(elem).parent().offset().left; + var pos = $(elem).offset().left; + $(elem).closest('.filter-wrap').find('.float-bar').css({ + left: pos - origin, + width: $(elem).innerWidth() + }); + $(elem).closest('.filter-wrap').find('.float-bar .row').css('left', (pos - origin) * -1); + } + + // GALLERY + $('#portfolio .gallery').mixItUp({ + selectors: { filter: '.filter1' } + }); + $('#experience .gallery').mixItUp({ + selectors: { filter: '.filter2' } + }); + + function mixClear() { + setTimeout(function () { $('.gallery').removeClass('waypoint') }, 2000); + } + + // SCROLL ANIMATIONS + function onScrollInit(items, elemTrigger) { + var offset = $(window).height() / 1.6 + items.each(function () { + var elem = $(this), + animationClass = elem.attr('data-animation'), + animationDelay = elem.attr('data-delay'); + + elem.css({ + '-webkit-animation-delay': animationDelay, + '-moz-animation-delay': animationDelay, + 'animation-delay': animationDelay + }); + + var trigger = (elemTrigger) ? trigger : elem; + + trigger.waypoint(function () { + elem.addClass('animated').addClass(animationClass); + if (elem.hasClass('gallery')) mixClear(); //OPTIONAL + }, { + triggerOnce: true, + offset: offset + }); + }); + } + + setTimeout(function () { onScrollInit($('.waypoint')) }, 10); + + // CONTACT FORM + $('#contact-form').submit(function (e) { + $('#success').addClass('expand'); + /* + e.preventDefault(); + $.ajax({ + url: "https://formspree.io/m.fathyrashad@gmail.com", + method: "POST", + data: { message: $('form').serialize() }, + dataType: "json" + }).done(function(response) { + $('#success').addClass('expand'); + $('#contact-form').find("input[type=text], input[type=email], textarea").val(""); + }); + */ + }); + + $('#close').click(function () { + $('#success').removeClass('expand'); + }) + +}); diff --git a/scripts/medium-rss.js b/scripts/medium-rss.js new file mode 100644 index 0000000..bcb2e27 --- /dev/null +++ b/scripts/medium-rss.js @@ -0,0 +1,52 @@ +$(function () { + var $content = $('#medium-content'); + var data = { + rss_url: 'http://medium.com/feed/@mfrashad' + }; + $.get('https://api.rss2json.com/v1/api.json', data, function (response) { + if (response.status == 'ok') { + var output = ''; + $.each(response.items, function (k, item) { + var visibleSm; + if(k < 3){ + visibleSm = ''; + } else { + visibleSm = ' visible-sm'; + } + + + var dateOptions = { year: 'numeric', month: 'long', day: 'numeric' }; + var pubDate = new Date(item.pubDate).toLocaleDateString("en-US", dateOptions); + var tagIndex = item.description.indexOf(']*>/g,""); //replace with your string. + var pStart = yourString.indexOf(' +
+
+
+
+
${item.title}
+
${pubDate}
+
+
+ ${trimmedString}... +
+
+
+ ` + return k < 3; + }); + $content.html(output); + } + }); +}); \ No newline at end of file diff --git a/scripts/modal.js b/scripts/modal.js new file mode 100644 index 0000000..aafbeed --- /dev/null +++ b/scripts/modal.js @@ -0,0 +1,373 @@ +$(document).ready(function(){ + + // MODAL + var modalText = { + + creativegan: { + title: 'CreativeGAN', + tag: 'ml', + detail: "Conference paper by MIT DeCoDE lab accepted at ASME IDETC/CIE 2021 Conference. This paper proposes an automated method, named CreativeGAN, for generating novel designs. It does so by identifying components that make a design unique and modifying a GAN model such that it becomes more likely to generate designs with identified unique components. The method combines state-of-art novelty detection, segmentation, novelty localization, rewriting, and generative models for creative design synthesis. Using a dataset of bicycle designs, we demonstrate that the method can create new bicycle designs with unique frames and handles, and generalize rare novelties", + pictures: '3', + link: 'http://decode.mit.edu/projects/creativegan' + }, + + gancreate: { + title: 'GANCREATE', + tag: 'ml', + detail: "Gancreate enables everyone to make videos easily. Users can quickly convert a script into an editable talking avatar and also animate it using AI motion transfer. Currently, there are 3 types of avatar, face portrait, full body 2d characters, and full body fashion models. Users can easily generate a unique avatar using our AI models. Furthermore, you can edit its attribute such as gender, age, realism and even mix between two avatars. Once you created an avatar, simply give a script or reference video as an input and the app will animate it accordingly.", + pictures: '4', + link: 'https://devpost.com/software/gancreate' + }, + + text2art: { + title: 'Text2Art', + tag: 'ml', + detail: "Text2Art can generate all kind of arts from pixel art, drawings, photos, to paintings. In addition, Text 2Art also generates a video showing the process of how the art is generated.", + pictures: '3', + link: 'https://github.com/mfrashad/text2art' + }, + + clothinggan: { + title: 'ClothingGAN', + tag: 'ml', + detail: "ClothingGAN is able to generate clothing images and mix these images. While mixing, you can control which structure or style that you want the clothing to copy. Additionally, you can edit the generated clothing with several given attributes such as dark color, jacket, dress, or coat.", + pictures: '3', + link: 'https://devpost.com/software/clothinggan' + }, + + aide_glass: { + title: 'Aide Glass', + tag: 'electronics', + detail: "Aide Glass is a smart glasses that transcribes surrounding voices to text that will be shown on the lens. It aims to help hearing impaired people in communicating with normal people using a cheaper alternative solution than hearing aids or implants. The project uses Raspberry Pi, Python and React Native.

The project also won the Chairman's Award in 42nd Science & Engineering Design Exhibition in Malaysia out of 160 teams that participated.", + pictures: '5', + link: '' + }, + + photosketch: { + title: 'PhotoSketch', + tag: '', + detail: "Hand-drawn sketch game prototyping tool app made for Hack & Roll Hackathon 2020 at NUS, Singapore organized by MLH (Major League Hacking). The app allows user to bring their hand-drawn sketch game design alive (currently limited to 2D platform game).
PhotoSketch uses Firebase for authentication and database, and use OpenCV hosted with Flask server to do image processing such as color filtering and game object type classification to produce the game map data. On the other hand the frontend is made using React Native. The app was built together with Chen Nuode.", + pictures: '2', + link: 'https://github.com/mfrashad/photosketch' + }, + + legacybrand: { + title: 'Legacy Brand', + tag: 'web', + detail: "Legacy Brands is an online products and services subscription platform dedicated to rebuilding US inner cities. The website is made using Jekyll and integrated with Firebase authentication, Firebase cloud functions, and Stripe payment gateway for subscription system.", + pictures: '2', + link: 'https://www.inspiringamerica.org' + }, + + bustime: { + title: 'Bustime', + tag: 'mobile', + detail: "Bustime is an app to track real-time location of public buses and predict their time of arrival made during 3 Days of Code Hackathon. The project consist of 2 apps, the first is Driver App for the bus driver to use which will track the bus location and the second is the user app which display the location, route and predicted time arrival of the bus to the user. Technology used are React Native as the mobile front-end and Node.js as the backend.", + pictures: '4', + link: '' + }, + + ioasis: { + title: 'iOASIS', + tag: 'mobile', + detail: "A mobile app for UTP library. Students are able to search books availability from the app, manage their borrowing period, make appointment with librarians, and many more! The app was made with React Native.", + pictures: '2', + link: 'https://play.google.com/store/apps/details?id=com.utp.ioasis&hl=en' + }, + + istaid: { + title: 'Istaid Center Website', + tag: 'web', + detail: "An non-profit organization website made with Ruby on Rails. Built with customized CMS (Content Management System) made from scratch using Postgresql as the database

Technologies Used:
• Materialize - CSS Framework
• Rails - Backend Framework
• Postgresql - Database
• Amazon EC2 - Hosting Server
• Cloudinary - Image Hosting
", + pictures: '3', + link: 'https://www.istaidcenter.com' + }, + + hazwan: { + title: 'Hazwan & Alia Dental Clinic', + tag: 'web', + detail: "A landing page for dental clinic made with Jekyll with email-based appointment system using formspree.", + pictures: '2', + link: 'https://klinikpergigianhazwanalia.com' + }, + + dscutp: { + title: 'DSC UTP', + tag: 'web', + detail: "Official website for Developer Student Clubs UTP (DSCUTP) made with Jekyll. DSC is a program by Google Developers for university students.", + pictures: '2', + link: 'https://dscutp.com' + }, + + dot_hit: { + title: 'Dot Hit!', + tag: 'mobile', + detail: "Dot Hit is an 2D android game developed with Unity3D Game Engine. The game is available on Playstore

What I learned:
- Improved my skills in photoshop
- Improved my skills in Unity3D
- Improved my skills in C#
", + pictures: '3', + link: 'https://play.google.com/store/apps/details?id=com.RashadProduction.Dot&hl=en' + }, + + cube_runner: { + title: 'Cube Runner', + tag: 'mobile', + detail: "Cube Runner is a 3D android game developed with Unity3D game engine. It is an arcade endless runner game. It is available in playstore and have reached 1K+ installs.

What I learned:
- Design Pattern (Singleton, Object Pool, Factory)
- Unity3D
- C#
- Graphic Design (Photoshop)
- Sound Editing (Audacity)
- Copywriting (Game description in Playstore)
", + pictures: '5', + link: 'https://play.google.com/store/apps/details?id=com.RashadProduction.CubeRunner&hl=en' + }, + + robocon_robot: { + title: 'Autonomous Line Following Catapult (Robocon)', + tag: 'electronics', + detail: "A robot that will be passed a ball and throws the ball to enter 3 tall hoop with different height from a distance. The robot will navigate using white line provided on the the field. This robot was made for Robocon Malaysia 2018 Competition. I am mostly responsible for the code while the robot mechanic and circuitry was mostly done by other team member.

What I did:
- Coded autonomous line following algorithm with PID control
- Integrated the code to work with mecanum wheel
- Integrated the code for pressure controller (throwing mechanism)
- Coded positioning algorithm to recieve passed ball accurately", + pictures: '6', + link: '' + }, + + quote_generator: { + title: 'Quote Generator', + tag: 'web', + detail: "A site which generates a random quote fetched by API call made for FreeCodeCamp", + pictures: '3', + link: 'https://mfrashad.github.io/quote-generator/' + }, + + merchant_portal: { + title: 'Merchant Portal', + tag: 'web', + detail: "A merchant portal developen during Can You Hack It Hackathon 2018 for CashBear app", + pictures: '3', + link: 'https://mfrashad-merchant-portal.herokuapp.com' + }, + + url_shortener: { + title: 'URL Shortener Microservice', + tag: 'web', + detail: "An API made with Express.js, Node.js and MongoDB that returns shortened URL in JSON format and hosted in Heroku.", + pictures: '3', + link: 'https://mfrashad-urlshortener.herokuapp.com/' + }, + + twitchtv: { + title: 'TwitchTV Online Tracker', + tag: 'web', + detail: "Project made for FreeCodeCamp using TwitchTv JSON API", + pictures: '3', + link: 'https://mfrashad.github.io/twitchtv-online-tracker/' + }, + + + mit_research: { + title: 'Research with MIT', + tag: 'work', + detail: "● Joined and collaborated with MIT DeCoDE Lab for 10 months.
● Co-authored “CreativeGAN: Editing Generative Adversarial Network for Creative Design Synthesis” paper for ASME IDETC-CIE 2021 conference and contributed 80% of the experiment.
● Trained segmentation, generative, and anomaly detection network on a new dataset and integrated the networks for creative bike design synthesis.
● Python, Tensorflow, PyTorch, OpenCV, High-Performance Computing (HPC).", + pictures: '4', + link: '' + }, + + dsc_flutter_1: { + title: 'Flutter Workshop', + tag: 'speaking', + detail: "The workshop aim to introduce mobile app development to the students in our university. We guided them from installation and setup to the final result which is a movies app and stopwatch app.", + pictures: '5', + link: '' + }, + + ium2020: { + title: 'iUM Disrupt Hackathon 2020', + tag: 'competition', + detail: "Led a team of 3 inn building a COVID-19 AI-based pre-assessment app along with doctor apppointment booking and E-medical record. Secured the 2nd Place out of 30+ teams (100+ participants).", + pictures: '2', + link: '' + }, + + dscutp_hack_intro: { + title: 'DSCUTP Flutter Workshop', + tag: 'speaking', + detail: "Invited as speaker for DSCUTP Hackathon. Presented 'Introduction to Hakcathon'.", + pictures: '2', + link: '' + }, + + flutter_workshop2: { + title: 'Flutter Workshop 2', + tag: 'speaking', + detail: "Organized another flutter technical workshop and was the speaker for the event.", + pictures: '2', + link: '' + }, + + voi: { + title: 'Voice of Intern', + tag: 'speaking', + detail: "Invited to speak as a forum speaker in a live QnA regarding how I scored A in compulsory internship program (SIIP).", + pictures: '2', + link: '' + }, + + taces: { + title: 'T-ACES International Webinar', + tag: 'speaking', + detail: "Invited as speaker for Telkom Annual Competition for English Society (T-ACES) Webinar. This is my first paid speaking gig and I shared on 'How to Overcome Your Fear of Starting Something New'.", + pictures: '4', + link: '' + }, + + sedex42: { + title: '42nd Science & Engineering Design Exhibition', + tag: 'competition', + detail: "Won the Chairman's Award out of 160 teams that participated by presenting the project Aide Glass, a low cost transcribing smart glasses for the hearing impaired.", + pictures: '4', + link: '' + }, + + dsckitahack: { + title: 'DSC Kita Hack', + tag: 'competition', + detail: "DSC Kita Hack is an online hackathon by DSC Malaysia and Google Developers during COVID-19 season. We built a food aid management system to ease the food distribution process and prevent hoarding and fraud during the COVID-19 crisis.", + pictures: '2', + link: '' + }, + + dsc_github: { + title: 'DSC GitHub Workshop', + tag: 'speaking', + detail: "Hands-on Git & GitHub workshop conducted by Developer Student Club (DSC) UTP.", + pictures: '3', + link: '' + }, + + adc_github: { + title: 'UTP App Dev Club Git & GitHub Workshop', + tag: 'speaking', + detail: "Organized and spoke for Git & GitHub workshop with UTP App Dev Club", + pictures: '3', + link: '' + }, + + lhdshare: { + title: 'Local Hack Day: Share', + tag: 'competition', + detail: "Won the Best Open Source Project on GitHub’s award out of 292 participants globally in Local Hack Day: Share competition.", + pictures: '2', + link: '' + }, + + fave: { + title: 'Fave Internship', + tag: 'work', + detail: "I interned as Software Engineer in Fave, a fintech startup in Malaysia. I was placed in Merchant Team which mostly deal with backend tasks related to Merchants (Business Partner who uses Fave).

What I did:
- Learned to use various tool such as CircleCI, Jira, Sentry
- Refactored part of code base
- Wrote Unit Test
- Tracked and fixed bugs using sentry
- Designed new feature for Admin Tool used by Operation Team
- Automated PDF report generation and emailing.
- Practiced Agile Methodologies
", + pictures: '5', + link: '' + }, + + robocon18: { + title: 'Robocon 2018', + tag: 'competition', + detail: "I participated in Robocon 2018 Malaysia along as Petrobot (Robotic Society in my university) member as the Main Programmer in the team.

What I did:
- Coded autonomous line following algorithm with PID control
- Integrated the code to work with mecanum wheel
- Integrated the code for pressure controller (throwing mechanism)
- Coded positioning algorithm to recieve passed ball accurately", + pictures: '5', + link: '' + }, + + rpi_workshop: { + title: 'Raspberry Pi Workshop', + tag: 'speaking', + detail: "The workshop aim to introduce Raspberry Pi to the students in our university. We guided them from installation and setup to the final result which is an LED controlled telegram bot.", + pictures: '7', + link: '' + }, + + }; + + $('.gallery .button').on('click', function(){ + fillModal(this.id); + $('.modal-wrap').addClass('visible'); + }); + + $('.close').on('click', function(){ + $('.modal-wrap, #modal .button').removeClass('visible'); + }); + + $('.mask').on('click', function(){ + $('.modal-wrap, #modal .button').removeClass('visible'); + }); + + var carousel = $('#carousel'), + slideWidth = 600, + threshold = slideWidth/3, + dragStart, + dragEnd; + + setDimensions(); + + $('#next').click(function(){ shiftSlide(-1) }) + $('#prev').click(function(){ shiftSlide(1) }) + + carousel.on('mousedown', function(){ + if (carousel.hasClass('transition')) return; + dragStart = event.pageX; + $(this).on('mousemove', function(){ + dragEnd = event.pageX; + $(this).css('transform','translateX('+ dragPos() +'px)'); + }); + $(document).on('mouseup', function(){ + if (dragPos() > threshold) { return shiftSlide(1) } + if (dragPos() < -threshold) { return shiftSlide(-1) } + shiftSlide(0); + }); + }); + + function setDimensions() { + if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) { + slideWidth = $(window).innerWidth(); + } + $('.carousel-wrap, .slide').css('width', slideWidth); + $('.modal').css('max-width', slideWidth); + $('#carousel').css('left', slideWidth * -1) + } + + function dragPos() { + return dragEnd - dragStart; + } + + function shiftSlide(direction) { + if (carousel.hasClass('transition')) return; + dragEnd = dragStart; + $(document).off('mouseup') + carousel.off('mousemove') + .addClass('transition') + .css('transform','translateX(' + (direction * slideWidth) + 'px)'); + setTimeout(function(){ + if (direction === 1) { + $('.slide:first').before($('.slide:last')); + } else if (direction === -1) { + $('.slide:last').after($('.slide:first')); + } + carousel.removeClass('transition') + carousel.css('transform','translateX(0px)'); + },600) + } + + function fillModal(id) { + $('#modal .title').text(modalText[id].title); + $('#modal .detail').html(modalText[id].detail); + $('#modal .tag').text(modalText[id].tag.toUpperCase()); + if (modalText[id].link) $('#modal .button').addClass('visible') + .parent() + .attr('href', modalText[id].link) + + $.each($('#modal li'), function(index, value ) { + $(this).text(modalText[id].bullets[index]); + }); + + $('#modal .slide').remove(); + for(i=0; i").css({ + width: $('.carousel-wrap').css('width'), + background: "url('img/slides/" + id + '-' + i + ".webp') center center/cover", + backgroundSize: 'cover' + }) + ); + } + } +}) diff --git a/scripts/pt.min.js b/scripts/pt.min.js new file mode 100644 index 0000000..b68d08b --- /dev/null +++ b/scripts/pt.min.js @@ -0,0 +1,7 @@ + +/* Licensed under the Apache License, Version 2.0. (http://www.apache.org/licenses/LICENSE-2.0). Copyright 2015-2016 William Ngan. (https://github.com/williamngan/pt/) */ + +var CanvasSpace,Circle,Color,Const,Curve,DOMSpace,Delaunay,Easing,Form,Grid,GridCascade,Line,Matrix,Noise,Pair,Particle,ParticleEmitter,ParticleField,ParticleSystem,Point,PointSet,QuadTree,Rectangle,SVGForm,SVGSpace,SamplePoints,Space,StripeBound,Timer,Triangle,UI,Util,Vector,bind=function(t,i){return function(){return t.apply(i,arguments)}},extend=function(t,i){function e(){this.constructor=t}for(var n in i)hasProp.call(i,n)&&(t[n]=i[n]);return e.prototype=i.prototype,t.prototype=new e,t.__super__=i.prototype,t},hasProp={}.hasOwnProperty,slice=[].slice;Const=function(){function t(){}return t.xy="xy",t.yz="yz",t.xz="xz",t.xyz="xyz",t.identical=-1,t.right=3,t.bottom_right=4,t.bottom=5,t.bottom_left=6,t.left=7,t.top_left=0,t.top=1,t.top_right=2,t.sideLabels=["identical","right","bottom right","bottom","bottom left","left","top left","top","top right"],t.epsilon=1e-4,t.pi=Math.PI,t.two_pi=6.283185307179586,t.half_pi=1.5707963267948966,t.quarter_pi=.7853981633974483,t.one_degree=.017453292519943295,t.rad_to_deg=57.29577951308232,t.deg_to_rad=.017453292519943295,t.gravity=9.81,t.newton=.10197,t.gaussian=.3989422804014327,t}(),this.Const=Const,Matrix=function(){function t(){}return t.rotateAnchor2D=function(t,i,e){var n,s,r;return null==e&&(e=Const.xy),n=i.get2D(e),s=Math.cos(t),r=Math.sin(t),[s,r,0,-r,s,0,n.x*(1-s)+n.y*r,n.y*(1-s)-n.x*r,1]},t.reflectAnchor2D=function(t,i){var e,n,s,r;return null==i&&(i=Const.xy),s=t.intercept(i),e=2*Math.atan(s.slope),n=Math.cos(e),r=Math.sin(e),[n,r,0,r,-n,0,-s.yi*r,s.yi+s.yi*n,1]},t.shearAnchor2D=function(t,i,e,n){var s,r,o;return null==n&&(n=Const.xy),s=e.get2D(n),r=Math.tan(t),o=Math.tan(i),[1,r,0,o,1,0,-s.y*o,-s.x*r,1]},t.scaleAnchor2D=function(t,i,e,n){var s;return null==n&&(n=Const.xy),s=e.get2D(n),[t,0,0,0,i,0,-s.x*t+s.x,-s.y*i+s.y,1]},t.scale2D=function(t,i){return[t,0,0,0,i,0,0,0,1]},t.shear2D=function(t,i){return[1,Math.tan(t),0,Math.tan(i),1,0,0,0,1]},t.rotate2D=function(t,i){return[t,i,0,-i,t,0,0,0,1]},t.translate2D=function(t,i){return[1,0,0,0,1,0,t,i,1]},t.transform2D=function(t,i,e,n){var s,r,o;return null==e&&(e=Const.xy),null==n&&(n=!1),s=t.get2D(e),r=s.x*i[0]+s.y*i[3]+i[6],o=s.x*i[1]+s.y*i[4]+i[7],s.x=r,s.y=o,s=s.get2D(e,!0),n?s:(t.set(s),t)},t}(),this.Matrix=Matrix,Util=function(){function t(){}return t.toRadian=function(t){return t*Const.deg_to_rad},t.toDegree=function(t){return t*Const.rad_to_deg},t.toHexColor=function(t){var i;return i=Math.floor(t).toString(16),1===i.length?"0"+i:i},t.toRGBColor=function(t,i,e){var n,s,r;return null==i&&(i=!1),null==e&&(e=1),"#"===t[0]&&(t=t.substr(1)),3===t.length?(r=parseInt(t[0]+t[0],16),s=parseInt(t[1]+t[1],16),n=parseInt(t[2]+t[2],16)):t.length>=6?(r=parseInt(t[0]+t[1],16),s=parseInt(t[2]+t[3],16),n=parseInt(t[4]+t[5],16)):(r=0,s=0,n=0),i?"rgba("+r+","+s+","+n+","+e+")":[r,s,n,e]},t.bound=function(t,i,e){var n,s;return null==e&&(e=!1),n=t%i,s=i/2,n>s?n-=i:-s>n&&(n+=i),e&&0>n?n+i:n},t.boundAngle=function(i,e){return t.bound(i,360,e)},t.boundRadian=function(i,e){return t.bound(i,Const.two_pi,e)},t.boundingBox=function(t,i){var e,n,s,r,o;for(null==i&&(i=!1),r=new Point(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),s=new Point(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),e=0,n=t.length;n>e;e++)o=t[e],o.xs.x&&(s.x=o.x),o.y>s.y&&(s.y=o.y),i&&(o.zs.z&&(s.z=o.z));return new Rectangle(r).to(s)},t.lerp=function(t,i,e){return(1-e)*t+e*i},t.centroid=function(t){var i,e,n,s;for(e=new Vector,i=0,n=t.length;n>i;i++)s=t[i],e.add(s);return e.divide(t.length)},t.same=function(t,i,e){return null==e&&(e=Const.epsilon),Math.abs(t-i)=Math.min(i,e)&&t<=Math.max(i,e)},t.randomRange=function(t,i){var e;return null==i&&(i=0),e=t>i?t-i:i-t,t+Math.random()*e},t.mixin=function(t,i){var e,n;for(e in i)n=i[e],i.hasOwnProperty(e)&&(t.prototype[e]=i[e]);return t},t.extend=function(t,i){return t.prototype=Object.create(i.prototype),t.prototype.constructor=t,t},t.clonePoints=function(t){var i,e,n,s;for(s=[],i=0,e=t.length;e>i;i++)n=t[i],s.push(n.clone());return s},t.contextRotateOrigin=function(t,i,e,n,s){var r,o;return null==n&&(n=!1),o=i.size(),n||(n=o.$multiply(.5),n.add(i)),s&&(r=s.size(),Form.rect(t,s),t.clip()),t.translate(n.x,n.y),t.rotate(e),t.translate(-n.x,-n.y)},t.sinCosTable=function(){var t,i,e,n;for(i=[],n=[],e=t=0;360>=t;e=t+=1)i[e]=Math.cos(e*Math.PI/180),n[e]=Math.sin(e*Math.PI/180);return{sin:n,cos:i}},t.chance=function(t){return Math.random()=this.duration?this._time=Date.now():void 0},t.prototype.setEasing=function(t){return this._ease=t},t.prototype.check=function(){var t;return t=Math.min(Date.now()-this._time,this.duration),this._ease(t,0,1,this.duration)},t.prototype.track=function(t){var i;return clearInterval(this._intervalID),this.start(!0),i=this,this._intervalID=setInterval(function(){var e;return e=i.check(),t(e),e>=1?clearInterval(i._intervalID):void 0},25),this._intervalID},t}(),this.Timer=Timer,Space=function(){function t(t){null==t&&(t="space"),this.id=t,this.size=new Vector,this.center=new Vector,this._timePrev=0,this._timeDiff=0,this._timeEnd=-1,this.items={},this._animID=-1,this._animCount=0,this._animPause=!1,this._refresh=!0}return t.prototype.refresh=function(t){return this._refresh=t,this},t.prototype.render=function(t){return this},t.prototype.resize=function(t,i){},t.prototype.clear=function(){},t.prototype.add=function(t){var i;if(null==t.animate||"function"!=typeof t.animate)throw"a player object for Space.add must define animate()";return i=this._animCount++,this.items[i]=t,t.animateID=i,null!=t.onSpaceResize&&t.onSpaceResize(this.size.x,this.size.y),this},t.prototype.remove=function(t){return delete this.items[t.animateID],this},t.prototype.removeAll=function(){return this.items={},this},t.prototype.play=function(t){var i;if(null==t&&(t=0),this._animID=requestAnimationFrame(function(t){return function(i){return t.play(i)}}(this)),!this._animPause){this._timeDiff=t-this._timePrev;try{this._playItems(t)}catch(e){throw i=e,cancelAnimationFrame(this._animID),console.error(i.stack),i}return this._timePrev=t,this}},t.prototype._playItems=function(t){var i,e,n;this._refresh&&this.clear(),e=this.items;for(i in e)n=e[i],n.animate(t,this._timeDiff,this.ctx);return this._timeEnd>=0&&t>this._timeEnd&&cancelAnimationFrame(this._animID),this},t.prototype.pause=function(t){return null==t&&(t=!1),this._animPause=t?!this._animPause:!0,this},t.prototype.resume=function(){return this._animPause=!1,this},t.prototype.stop=function(t){return null==t&&(t=0),this._timeEnd=t,this},t.prototype.playTime=function(t){return null==t&&(t=5e3),this.play(),this.stop(t)},t.prototype.bindCanvas=function(t,i){return this.space.addEventListener?this.space.addEventListener(t,i):void 0},t.prototype.bindMouse=function(t){return null==t&&(t=!0),this.space.addEventListener&&this.space.removeEventListener?t?(this.space.addEventListener("mousedown",this._mouseDown.bind(this)),this.space.addEventListener("mouseup",this._mouseUp.bind(this)),this.space.addEventListener("mouseover",this._mouseOver.bind(this)),this.space.addEventListener("mouseout",this._mouseOut.bind(this)),this.space.addEventListener("mousemove",this._mouseMove.bind(this))):(this.space.removeEventListener("mousedown",this._mouseDown.bind(this)),this.space.removeEventListener("mouseup",this._mouseUp.bind(this)),this.space.removeEventListener("mouseover",this._mouseOver.bind(this)),this.space.removeEventListener("mouseout",this._mouseOut.bind(this)),this.space.removeEventListener("mousemove",this._mouseMove.bind(this))):void 0},t.prototype.bindTouch=function(t){return null==t&&(t=!0),this.space.addEventListener&&this.space.removeEventListener?t?(this.space.addEventListener("touchstart",this._mouseDown.bind(this)),this.space.addEventListener("touchend",this._mouseUp.bind(this)),this.space.addEventListener("touchmove",function(t){return function(i){return i.preventDefault(),t._mouseMove(i)}}(this)),this.space.addEventListener("touchcancel",this._mouseOut.bind(this))):(this.space.removeEventListener("touchstart",this._mouseDown.bind(this)),this.space.removeEventListener("touchend",this._mouseUp.bind(this)),this.space.removeEventListener("touchmove",this._mouseMove.bind(this)),this.space.removeEventListener("touchcancel",this._mouseOut.bind(this))):void 0},t.prototype.touchesToPoints=function(t,i){var e;return null==i&&(i="touches"),t&&t[i]?function(){var n,s,r,o;for(r=t[i],o=[],n=0,s=r.length;s>n;n++)e=r[n],o.push(new Vector(e.pageX-this.boundRect.left,e.pageY-this.boundRect.top));return o}.call(this):[]},t.prototype._mouseAction=function(t,i){var e,n,s,r,o,h,u,a,c;if(i.touches||i.changedTouches){o=this.items,u=[];for(n in o)c=o[n],null!=c.onTouchAction?(e=i.changedTouches&&i.changedTouches.length>0,s=e?i.changedTouches.item(0).pageX:0,r=e?i.changedTouches.item(0).pageY:0,u.push(c.onTouchAction(t,s,r,i))):u.push(void 0);return u}h=this.items,a=[];for(n in h)c=h[n],null!=c.onMouseAction?(s=i.offsetX||i.layerX,r=i.offsetY||i.layerY,a.push(c.onMouseAction(t,s,r,i))):a.push(void 0);return a},t.prototype._mouseDown=function(t){return this._mouseAction("down",t),this._mdown=!0},t.prototype._mouseUp=function(t){return this._mouseAction("up",t),this._mdrag&&this._mouseAction("drop",t),this._mdown=!1,this._mdrag=!1},t.prototype._mouseMove=function(t){return this._mouseAction("move",t),this._mdown?(this._mdrag=!0,this._mouseAction("drag",t)):void 0},t.prototype._mouseOver=function(t){return this._mouseAction("over",t)},t.prototype._mouseOut=function(t){return this._mouseAction("out",t),this._mdrag&&this._mouseAction("drop",t),this._mdrag=!1},t}(),this.Space=Space,CanvasSpace=function(t){function i(t,e,n){null==t&&(t="pt_space"),null==e&&(e=!1),null==n&&(n="2d"),this._resizeHandler=bind(this._resizeHandler,this),i.__super__.constructor.apply(this,arguments),this.space=document.querySelector("#"+this.id),this.bound=null,this.boundRect={top:0,left:0,width:0,height:0},this.pixelScale=1,this.appended=!0,this.space||(this.space=document.createElement("canvas"),this.space.setAttribute("id",this.id),this.appended=!1),this._mdown=!1,this._mdrag=!1,this.bgcolor=e,this.ctx=this.space.getContext(n)}return extend(i,t),i.prototype.display=function(t,i,e){var n,s;if(null==t&&(t="#pt"),null==e&&(e=!0),!this.appended){if(this.bound=document.querySelector(t),this.boundRect=this.bound.getBoundingClientRect(),this.pixelScale=1,e&&(n=window.devicePixelRatio||1,s=this.ctx.webkitBackingStorePixelRatio||this.ctx.mozBackingStorePixelRatio||this.ctx.msBackingStorePixelRatio||this.ctx.oBackingStorePixelRatio||this.ctx.backingStorePixelRatio||1,this.pixelScale=n/s),!this.bound)throw"Cannot add canvas to element "+t;this.resize(this.boundRect.width,this.boundRect.height),this.autoResize(!0),this.space.parentNode!==this.bound&&this.bound.appendChild(this.space),this.appended=!0,setTimeout(function(){return this.space.dispatchEvent(new Event("ready")),i?i(this.boundRect.width,this.boundRect.height,this.space):void 0}.bind(this))}return this},i.prototype._resizeHandler=function(t){return this.boundRect=this.bound.getBoundingClientRect(),this.resize(this.boundRect.width,this.boundRect.height,t)},i.prototype.autoResize=function(t){return null==t&&(t=!0),t?window.addEventListener("resize",this._resizeHandler):window.removeEventListener("resize",this._resizeHandler),this},i.prototype.resize=function(t,i,e){var n,s,r;t=Math.floor(t),i=Math.floor(i),this.size.set(t,i),this.center=new Vector(t/2,i/2),this.boundRect.width=t,this.boundRect.height=i,this.space.width=t*this.pixelScale,this.space.height=i*this.pixelScale,this.space.style.width=t+"px",this.space.style.height=i+"px",1!==this.pixelScale&&this.ctx.scale(this.pixelScale,this.pixelScale),r=this.items;for(n in r)s=r[n],null!=s.onSpaceResize&&s.onSpaceResize(t,i,e);return this.render(this.ctx),this},i.prototype.clear=function(t){var i;return t&&(this.bgcolor=t),i=this.ctx.fillStyle,this.bgcolor?(this.ctx.fillStyle=this.bgcolor,this.ctx.fillRect(0,0,this.size.x,this.size.y)):this.ctx.clearRect(0,0,this.size.x,this.size.y),this.ctx.fillStyle=i,this},i.prototype.animate=function(t){var i,e,n;this.ctx.save(),this._refresh&&this.clear(),e=this.items;for(i in e)n=e[i],n.animate(t,this._timeDiff,this.ctx);return this._timeEnd>=0&&t>this._timeEnd&&cancelAnimationFrame(this._animID),this.ctx.restore(),this},i}(Space),this.CanvasSpace=CanvasSpace,DOMSpace=function(t){function i(t,e,n){null==t&&(t="pt_space"),null==e&&(e=!1),null==n&&(n="html"),this._resizeHandler=bind(this._resizeHandler,this),i.__super__.constructor.apply(this,arguments),this.space=document.querySelector("#"+this.id),this.css={width:"100%",height:"100%"},this.bound=null,this.boundRect={top:0,left:0,width:0,height:0},this.appended=!0,this.space||this._createSpaceElement(),this._mdown=!1,this._mdrag=!1,this.bgcolor=e,this.ctx={}}return extend(i,t),i.prototype._createSpaceElement=function(){return this.space=document.createElement("div"),this.space.setAttribute("id",this.id),this.appended=!1},i.prototype.setCSS=function(t,i,e){return null==e&&(e=!1),this.css[t]=e?i+"px":i,this},i.prototype.updateCSS=function(){var t,i,e,n;i=this.css,e=[];for(t in i)n=i[t],e.push(this.space.style[t]=n);return e},i.prototype.display=function(t,i){if(null==t&&(t="#pt"),!this.appended){if(this.bound=document.querySelector(t),this.boundRect=this.bound.getBoundingClientRect(),!this.bound)throw"Cannot add canvas to element "+t;this.resize(this.boundRect.width,this.boundRect.height),this.autoResize(!0),this.space.parentNode!==this.bound&&this.bound.appendChild(this.space),this.appended=!0,setTimeout(function(){return this.space.dispatchEvent(new Event("ready")),i?i(this.boundRect.width,this.boundRect.height,this.space):void 0}.bind(this))}return this},i.prototype._resizeHandler=function(t){return this.boundRect=this.bound.getBoundingClientRect(),this.resize(this.boundRect.width,this.boundRect.height,t)},i.prototype.autoResize=function(t){return null==t&&(t=!0),t?window.addEventListener("resize",this._resizeHandler):window.removeEventListener("resize",this._resizeHandler),this},i.prototype.resize=function(t,i,e){var n,s,r;this.size.set(t,i),this.center=new Vector(t/2,i/2),r=this.items;for(n in r)s=r[n],null!=s.onSpaceResize&&s.onSpaceResize(t,i,e);return this},i.prototype.clear=function(){return this.space.innerHML=""},i.prototype.animate=function(t){var i,e,n;e=this.items;for(i in e)n=e[i],n.animate(t,this._timeDiff,this.ctx);return this._timeEnd>=0&&t>this._timeEnd&&cancelAnimationFrame(this._animID),this},i.attr=function(t,i){var e,n,s;n=[];for(e in i)s=i[e],n.push(t.setAttribute(e,s));return n},i.css=function(t){var i,e,n;e="";for(i in t)n=t[i],n&&(e+=i+": "+n+"; ");return e},i}(Space),this.DOMSpace=DOMSpace,Form=function(){function t(t){this.space=t,this.cc=t.ctx,this.cc.fillStyle="#999",this.cc.strokeStyle="#666",this.cc.lineWidth=1,this.cc.font="11px sans-serif",this.filled=!0,this.stroked=!0,this.fontSize=11,this.fontFace="sans-serif"}return t.context=function(t){var i,e;if(e=document.getElementById(t),i=e&&e.getContext?e.getContext("2d"):!1,!i)throw"Cannot initiate canvas 2d context";return i},t.line=function(t,i){if(!i.p1)throw i.toString()+" is not a Pair";return t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(i.p1.x,i.p1.y),t.stroke()},t.lines=function(i,e){var n,s,r,o;for(o=[],n=0,s=e.length;s>n;n++)r=e[n],o.push(t.line(i,r));return o},t.rect=function(t,i,e,n){if(null==e&&(e=!0),null==n&&(n=!1),!i.p1)throw""+(i.toString()===!a(Pair));return t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(i.x,i.p1.y),t.lineTo(i.p1.x,i.p1.y),t.lineTo(i.p1.x,i.y),t.closePath(),n&&t.stroke(),e?t.fill():void 0},t.circle=function(t,i,e,n){null==e&&(e=!0),null==n&&(n=!1),t.beginPath(),t.arc(i.x,i.y,i.radius,0,Const.two_pi,!1),e&&t.fill(),n&&t.stroke()},t.arc=function(t,i,e,n,s){return t.beginPath(),t.arc(i.x,i.y,e,n,s),t.stroke()},t.triangle=function(t,i,e,n){null==e&&(e=!0),null==n&&(n=!1),t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(i.p1.x,i.p1.y),t.lineTo(i.p2.x,i.p2.y),t.closePath(),e&&t.fill(),n&&t.stroke()},t.point=function(t,i,e,n,s,r){var o,h,u,a;return null==e&&(e=2),null==n&&(n=!0),null==s&&(s=!1),null==r&&(r=!1),r?(t.beginPath(),t.arc(i.x,i.y,e,0,Const.two_pi,!1)):(o=i.x-e,u=i.y-e,h=i.x+e,a=i.y+e,t.beginPath(),t.moveTo(o,u),t.lineTo(o,a),t.lineTo(h,a),t.lineTo(h,u),t.closePath()),n&&t.fill(),s&&t.stroke(),i},t.points=function(i,e,n,s,r,o){var h,u,a,c;for(null==n&&(n=2),null==s&&(s=!0),null==r&&(r=!1),null==o&&(o=!1),c=[],h=0,u=e.length;u>h;h++)a=e[h],c.push(t.point(i,a,n,s,r,o));return c},t.polygon=function(t,i,e,n,s){var r,o,h;if(null==e&&(e=!0),null==n&&(n=!0),null==s&&(s=!0),!(i.length<=1)){for(t.beginPath(),t.moveTo(i[0].x,i[0].y),o=r=1,h=i.length;h>r;o=r+=1)t.lineTo(i[o].x,i[o].y);e&&t.closePath(),n&&t.fill(),s&&t.stroke()}},t.curve=function(i,e){return t.polygon(i,e,!1,!1,!0)},t.text=function(t,i,e,n){return t.fillText(e,i.x,i.y,n)},t.prototype.fill=function(t){return this.cc.fillStyle=t?t:"transparent",this.filled=!!t,this},t.prototype.stroke=function(t,i,e){return this.cc.strokeStyle=t?t:"transparent",this.stroked=!!t,i&&(this.cc.lineWidth=i),e&&(this.cc.lineJoin=e),this},t.prototype.font=function(t,i){return null==i&&(i=this.fontFace),this.fontSize=t,this.cc.font=t+"px "+i,this},t.prototype.draw=function(t){return this.sketch(t)},t.prototype.sketch=function(i){return i.floor(),i instanceof Circle?t.circle(this.cc,i,this.filled,this.stroked):i instanceof Rectangle?t.rect(this.cc,i,this.filled,this.stroked):i instanceof Triangle?t.triangle(this.cc,i,this.filled,this.stroked):i instanceof Line||i instanceof Pair?t.line(this.cc,i):i instanceof PointSet?t.polygon(this.cc,i.points):(i instanceof Vector||i instanceof Point)&&t.point(this.cc,i),this},t.prototype.point=function(i,e,n){return null==e&&(e=2),null==n&&(n=!1),t.point(this.cc,i,e,this.filled,this.stroked,n),this},t.prototype.points=function(i,e,n){return null==e&&(e=2),null==n&&(n=!1),t.points(this.cc,i,e,this.filled,this.stroked,n),this},t.prototype.line=function(i){return t.line(this.cc,i),this},t.prototype.lines=function(i){return t.lines(this.cc,i),this},t.prototype.rect=function(i){return t.rect(this.cc,i,this.filled,this.stroked),this},t.prototype.circle=function(i){return t.circle(this.cc,i,this.filled,this.stroked),this},t.prototype.arc=function(i,e,n){return t.arc(this.cc,i,i.radius,e,n),this},t.prototype.triangle=function(i){return t.triangle(this.cc,i,this.filled,this.stroked),this},t.prototype.polygon=function(i,e){return t.polygon(this.cc,i,e,this.filled,this.stroked),this},t.prototype.curve=function(i){return t.curve(this.cc,i),this},t.prototype.text=function(t,i,e,n,s){var r;return null==e&&(e=1e3),r=new Vector(t),n&&r.add(n,0),s&&r.add(0,s),this.cc.fillText(i,r.x,r.y,e),this},t}(),this.Form=Form,Point=function(){function t(i){this.copy(t.get(arguments))}return t.get=function(t){return t.length>0?"object"==typeof t[0]?t[0]instanceof Array||t[0].length>0?{x:t[0][0]||0,y:t[0][1]||0,z:t[0][2]||0}:{x:t[0].x||0,y:t[0].y||0,z:t[0].z||0}:{x:t[0]||0,y:t[1]||0,z:t[2]||0}:{x:0,y:0,z:0}},t.prototype.quadrant=function(t,i){return null==i&&(i=Const.epsilon),t.near(this)?Const.identical:Math.abs(t.x-this.x)this.x?Const.top_right:t.ythis.y&&t.x1?t:t[0]},i.prototype.add=function(t){var i;return"number"==typeof arguments[0]&&1===arguments.length?(this.x+=arguments[0],this.y+=arguments[0],this.z+=arguments[0]):(i=Point.get(arguments),this.x+=i.x,this.y+=i.y,this.z+=i.z),this},i.prototype.$add=function(t){var e;return e=this._getArgs(arguments),new i(this).add(e)},i.prototype.subtract=function(t){var i;return"number"==typeof arguments[0]&&1===arguments.length?(this.x-=arguments[0],this.y-=arguments[0],this.z-=arguments[0]):(i=Point.get(arguments),this.x-=i.x,this.y-=i.y,this.z-=i.z),this},i.prototype.$subtract=function(t){var e;return e=this._getArgs(arguments),new i(this).subtract(e)},i.prototype.multiply=function(t){var i;return 1===arguments.length&&("number"==typeof arguments[0]||"object"==typeof arguments[0]&&1===arguments[0].length)?(this.x*=arguments[0],this.y*=arguments[0],this.z*=arguments[0]):(i=Point.get(arguments),this.x*=i.x,this.y*=i.y,this.z*=i.z),this},i.prototype.$multiply=function(t){var e;return e=this._getArgs(arguments),new i(this).multiply(e)},i.prototype.divide=function(t){var i;return 1===arguments.length&&("number"==typeof arguments[0]||"object"==typeof arguments[0]&&1===arguments[0].length)?(this.x/=arguments[0],this.y/=arguments[0],this.z/=arguments[0]):(i=Point.get(arguments),this.x/=i.x,this.y/=i.y,this.z/=i.z),this},i.prototype.$divide=function(t){var e;return e=this._getArgs(arguments),new i(this).divide(e)},i.prototype.op=function(){var t,i,e,n,s,r;for(n=arguments[0],i=2<=arguments.length?slice.call(arguments,1):[],r=this.toArray(),t=0,e=r.length;e>t;t++)s=r[t],s[n].apply(s,i);return this},i.prototype.$op=function(){var t,i,e,n,s,r,o;for(s=arguments[0],i=2<=arguments.length?slice.call(arguments,1):[],e=this.clone(),o=e.toArray(),t=0,n=o.length;n>t;t++)r=o[t],r[s].apply(r,i);return e},i.prototype.angle=function(t){var i,e;return 0===arguments.length?Math.atan2(this.y,this.x):("string"==typeof arguments[0]?(i=arguments[0],e=arguments.length>1?this.$subtract(arguments[1]).multiply(-1):void 0):(e=this.$subtract(arguments[0]).multiply(-1),i=!1),e&&!i?Math.atan2(e.y,e.x):i===Const.xy?e?Math.atan2(e.y,e.x):Math.atan2(this.y,this.x):i===Const.yz?e?Math.atan2(e.z,e.y):Math.atan2(this.z,this.y):i===Const.xz?e?Math.atan2(e.z,e.x):Math.atan2(this.z,this.x):void 0)},i.prototype.angleBetween=function(t,i){return null==i&&(i=Const.xy),Util.boundRadian(this.angle(i),!0)-Util.boundRadian(t.angle(i),!0)},i.prototype.magnitude=function(t){var i,e,n,s,r,o;return n={x:this.x*this.x,y:this.y*this.y,z:this.z*this.z},o=arguments.length>=1&&!arguments[arguments.length-1],i=o?function(t){return t}:Math.sqrt,0===arguments.length?i(n.x+n.y+n.z):("string"==typeof arguments[0]?(e=arguments[0],r=arguments.length>1&&arguments[1]?this.$subtract(arguments[1]):void 0):(r=this.$subtract(arguments[0]),e=!1),s=r?{x:r.x*r.x,y:r.y*r.y,z:r.z*r.z}:n,r&&!e?i(s.x+s.y+s.z):e===Const.xy?i(s.x+s.y):e===Const.yz?i(s.y+s.z):e===Const.xz?i(s.x+s.z):void 0)},i.prototype.distance=function(t,i){return null==i&&(i=Const.xy),this.magnitude(i,t)},i.prototype.normalize=function(){return this.set(this.$normalize()),this},i.prototype.$normalize=function(){var t;return t=this.magnitude(),0===t?new i:new i(this.x/t,this.y/t,this.z/t)},i.prototype.abs=function(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this},i.prototype.dot=function(t,i){return null==i&&(i=Const.xyz),i===Const.xyz?this.x*t.x+this.y*t.y+this.z*t.z:i===Const.xy?this.x*t.x+this.y*t.y:i===Const.yz?this.y*t.y+this.z*t.z:i===Const.xz?this.x*t.x+this.z*t.z:this.x*t.x+this.y*t.y+this.z*t.z},i.prototype.projection=function(t,e){var n,s,r,o;return null==e&&(e=Const.xyz),o=t.magnitude(),n=this.$normalize(),s=new i(t.x/o,t.y/o,t.z/o),r=n.dot(s,e),n.$multiply(o*r)},i.prototype.cross=function(t){return new i(this.y*t.z-this.z*t.y,this.z*t.x-this.x*t.z,this.x*t.y-this.y*t.x)},i.prototype.bisect=function(t,i){return null==i&&(i=!1),i?this.$add(t).divide(2):this.$normalize().add(t.$normalize()).divide(2)},i.prototype.perpendicular=function(t){switch(null==t&&(t=Const.xy),t){case Const.xy:return[new i(-this.y,this.x,this.z),new i(this.y,-this.x,this.z)];case Const.yz:return[new i(this.x,-this.z,this.y),new i(this.x,this.z,-this.y)];case Const.xz:return[new i(-this.z,this.y,this.x),new i(this.z,-this.y,this.x)];default:return[new i(-this.y,this.x,this.z),new i(this.y,-this.x,this.z)]}},i.prototype.isPerpendicular=function(t,i){return null==i&&(i=Const.xyz),0===this.dot(t,i)},i.prototype.surfaceNormal=function(t){return this.cross(t).normalize(!0)},i.prototype.moveTo=function(t){var i,e,n,s,r,o;for(o=Point.get(arguments),e=this.$subtract(o),r=this.toArray(),i=0,n=r.length;n>i;i++)s=r[i],s.subtract(e);return this},i.prototype.moveBy=function(t){var i,e,n,s,r;for(e=Point.get(arguments),r=this.toArray(),i=0,n=r.length;n>i;i++)s=r[i],s.add(e);return this},i.prototype.rotate2D=function(t,i,e){var n,s,r,o,h;for(null==e&&(e=Const.xy),i||(i=new Point(0,0,0)),r=Matrix.rotateAnchor2D(t,i,e),h=this.toArray(),n=0,s=h.length;s>n;n++)o=h[n],Matrix.transform2D(o,r,e);return this},i.prototype.reflect2D=function(t,i){var e,n,s,r,o;for(null==i&&(i=Const.xy),s=Matrix.reflectAnchor2D(t,i),o=this.toArray(),e=0,n=o.length;n>e;e++)r=o[e],Matrix.transform2D(r,s,i);return this},i.prototype.scale2D=function(t,i,e,n){var s,r,o,h,u;for(null==n&&(n=Const.xy),e||(e=new Point(0,0,0)),o=Matrix.scaleAnchor2D(t,i,e,n),u=this.toArray(),s=0,r=u.length;r>s;s++)h=u[s],Matrix.transform2D(h,o,n);return this},i.prototype.shear2D=function(t,i,e,n){var s,r,o,h,u;for(null==n&&(n=Const.xy),e||(e=new Point(0,0,0)),o=Matrix.shearAnchor2D(t,i,e,n),u=this.toArray(),s=0,r=u.length;r>s;s++)h=u[s],Matrix.transform2D(h,o,n);return this},i.prototype.clone=function(){return new i(this)},i.prototype.toString=function(){return"Vector "+this.x+", "+this.y+", "+this.z},i}(Point),this.Vector=Vector,Color=function(t){function i(t){i.__super__.constructor.apply(this,arguments),this.alpha=arguments.length>=4?Math.min(1,Math.max(arguments[3],0)):1,this.mode=arguments.length>=5?arguments[4]:"rgb"}return extend(i,t),i.XYZ={D65:{x:95.047,y:100,z:108.883}},i.parseHex=function(t,e){var n,s;return null==e&&(e=!1),0===t.indexOf("#")&&(t=t.substr(1)),3===t.length&&(t=""+t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),8===t.length&&(this.alpha=1&t.substr(6),t=t.substring(0,6)),n=parseInt(t,16),s=[n>>16,n>>8&255,255&n],e?new i(s[0],s[1],s[2]):s},i.prototype.setMode=function(t){if(t=t.toLowerCase(),t!==this.mode){switch(this.mode){case"hsl":this.copy(Point.get(i.HSLtoRGB(this.x,this.y,this.z)));break;case"hsb":this.copy(Point.get(i.HSBtoRGB(this.x,this.y,this.z)));break;case"lab":this.copy(Point.get(i.LABtoRGB(this.x,this.y,this.z)));break;case"lch":this.copy(Point.get(i.LCHtoRGB(this.x,this.y,this.z)));break;case"xyz":this.copy(Point.get(i.XYZtoRGB(this.x,this.y,this.z)))}switch(t){case"hsl":this.copy(Point.get(i.RGBtoHSL(this.x,this.y,this.z)));break;case"hsb":this.copy(Point.get(i.RGBtoHSB(this.x,this.y,this.z)));break;case"lab":this.copy(Point.get(i.RGBtoLAB(this.x,this.y,this.z)));break;case"lch":this.copy(Point.get(i.RGBtoLCH(this.x,this.y,this.z)));break;case"xyz":this.copy(Point.get(i.RGBtoXYZ(this.x,this.y,this.z)))}}return this.mode=t,this},i.prototype.hex=function(){var t,i,e,n;return"rgb"===this.mode&&this.floor(),i=this.values("rgb"!==this.mode),t=function(t){return t=t.toString(16),t.length<2?"0"+t:t},e=function(){var e,s,r;for(r=[],e=0,s=i.length;s>e;e++)n=i[e],r.push(t(n));return r}(),"#"+e[0]+e[1]+e[2]},i.prototype.rgb=function(){var t;return"rgb"===this.mode&&this.floor(),t=this.values("rgb"!==this.mode),"rgb("+t[0]+", "+t[1]+", "+t[2]+")"},i.prototype.rgba=function(){var t;return"rgb"===this.mode&&this.floor(),t=this.values("rgb"!==this.mode),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+this.alpha+")"},i.prototype.values=function(t){var e,n;if(null==t&&(t=!1),e=[this.x,this.y,this.z],t&&"rgb"!==this.mode)switch(this.mode){case"hsl":e=i.HSLtoRGB(this.x,this.y,this.z);break;case"hsb":e=i.HSBtoRGB(this.x,this.y,this.z);break;case"lab":e=i.LABtoRGB(this.x,this.y,this.z);break;case"lch":e=i.LCHtoRGB(this.x,this.y,this.z);break;case"xyz":e=i.XYZtoRGB(this.x,this.y,this.z)}return function(){var t,i,s;for(s=[],t=0,i=e.length;i>t;t++)n=e[t],s.push(Math.floor(n));return s}()},i.prototype.clone=function(){var t;return t=new i(this.x,this.y,this.z,this.alpha),t.mode=this.mode,t},i.RGBtoHSL=function(t,i,e,n,s){var r,o,h,u,a,c;if(n||(t/=255,i/=255,e/=255),u=Math.max(t,i,e),a=Math.min(t,i,e),o=(u+a)/2,c=o,h=o,u===a)o=0,c=0;else switch(r=u-a,c=h>.5?r/(2-u-a):r/(u+a),u){case t:o=(i-e)/r+(e>i?6:0);break;case i:o=(e-t)/r+2;break;case e:o=(t-i)/r+4;break;default:o=0}return s?[o/60,c,h]:[60*o,c,h]},i.HSLtoRGB=function(t,i,e,n,s){var r,o,h,u,a,c;return 0===i?s?[1,1,1]:[255,255,255]:(n||(t/=360),a=.5>=e?e*(1+i):e+i-e*i,u=2*e-a,h=function(t,i,e){return 0>e?e+=1:e>1&&(e-=1),1>6*e?t+(i-t)*e*6:1>2*e?i:2>3*e?t+(i-t)*(2/3-e)*6:t},c=h(u,a,t+1/3),o=h(u,a,t),r=h(u,a,t-1/3),s?[c,o,r]:[255*c,255*o,255*r])},i.RGBtoHSB=function(t,i,e,n,s){var r,o,h,u,a,c;if(n||(t/=255,i/=255,e/=255),h=Math.max(t,i,e),u=Math.min(t,i,e),r=h-u,a=0===h?0:r/h,c=h,h===u)o=0;else switch(h){case t:o=(i-e)/r+(e>i?6:0);break;case i:o=(e-t)/r+2;break;case e:o=(t-i)/r+4;break;default:o=0}return s?[o/60,a,c]:[60*o,a,c]},i.HSBtoRGB=function(t,i,e,n,s){var r,o,h,u,a,c;switch(n||(t/=360),o=Math.floor(6*t),r=6*t-o,h=e*(1-i),u=e*(1-r*i),c=e*(1-(1-r)*i),o%6){case 0:a=[e,c,h];break;case 1:a=[u,e,h];break;case 2:a=[h,e,c];break;case 3:a=[h,u,e];break;case 4:a=[c,h,e];break;case 5:a=[e,h,u];break;default:a=[0,0,0]}return s?a:[255*a[0],255*a[1],255*a[2]]},i.RGBtoLAB=function(t,e,n,s,r){var o;return s&&(t*=255,e*=255,n*=255),o=i.RGBtoXYZ(t,e,n),i.XYZtoLAB(o[0],o[1],o[2])},i.LABtoRGB=function(t,e,n,s,r){var o,h;return s&&(t*=100,e=127*(e-.5),n=127*(n-.5)),h=i.LABtoXYZ(t,e,n),o=i.XYZtoRGB(h[0],h[1],h[2]),r?[o[0]/255,o[1]/255,o[2]/255]:o},i.RGBtoLCH=function(t,e,n,s,r){var o,h;return s&&(t*=255,e*=255,n*=255),o=i.RGBtoLAB(t,e,n),h=i.LABtoLCH(o[0],o[1],o[2]),r?[h[0]/100,h[1]/100,h[2]/360]:h},i.LCHtoRGB=function(t,e,n,s,r){var o,h,u;return s&&(t*=100,e*=100,n*=360),o=i.LCHtoLAB(t,e,n),u=i.LABtoXYZ(o[0],o[1],o[2]),h=i.XYZtoRGB(u[0],u[1],u[2]),r?[h[0]/255,h[1]/255,h[2]/255]:h},i.XYZtoRGB=function(t,i,e,n,s){ +var r,o,h,u,a;for(n||(t/=100,i/=100,e/=100),a=[3.2404542*t+-1.5371385*i+e*-.4985314,t*-.969266+1.8760108*i+.041556*e,.0556434*t+i*-.2040259+1.0572252*e],h=r=0,u=a.length;u>r;h=++r)o=a[h],a[h]=0>o?0:Math.min(1,o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o);return s?a:[Math.round(255*a[0]),Math.round(255*a[1]),Math.round(255*a[2])]},i.RGBtoXYZ=function(t,i,e,n,s){return n||(t/=255,i/=255,e/=255),t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92,e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92,s||(t=100*t,i=100*i,e=100*e),[.4124564*t+.3575761*i+.1804375*e,.2126729*t+.7151522*i+.072175*e,.0193339*t+.119192*i+.9503041*e]},i.XYZtoLAB=function(t,e,n){var s,r;return t/=i.XYZ.D65.x,e/=i.XYZ.D65.y,n/=i.XYZ.D65.z,s=function(t){return t>.008856?Math.pow(t,1/3):7.787*t+16/116},r=s(e),[116*r-16,500*(s(t)-r),200*(r-s(n))]},i.LABtoXYZ=function(t,e,n){var s,r,o,h,u;return h=(t+16)/116,r=e/500+h,u=h-n/200,s=function(t){var i;return i=Math.pow(t,3),i>.008856?i:(t-16/116)/7.787},o=[Math.min(i.XYZ.D65.x,i.XYZ.D65.x*s(r)),Math.min(i.XYZ.D65.y,i.XYZ.D65.y*s(h)),Math.min(i.XYZ.D65.y,i.XYZ.D65.z*s(u))]},i.XYZtoLUV=function(t,e,n){var s,r,o,h,u;return h=4*t/(t+15*e+3*n),u=9*e/(t+15*e+3*n),e/=100,e=e>.008856?Math.pow(e,1/3):7.787*e+16/116,r=4*i.XYZ.D65.x/(i.XYZ.D65.x+15*i.XYZ.D65.y+3*i.XYZ.D65.z),o=9*i.XYZ.D65.y/(i.XYZ.D65.x+15*i.XYZ.D65.y+3*i.XYZ.D65.z),s=116*e-16,[s,13*s*(h-r),13*s*(u-o)]},i.LUVtoXYZ=function(t,e,n){var s,r,o,h,u;return u=(t+16)/116,s=u*u*u,u=s>.008856?s:(u-16/116)/7.787,r=4*i.XYZ.D65.x/(i.XYZ.D65.x+15*i.XYZ.D65.y+3*i.XYZ.D65.z),o=9*i.XYZ.D65.y/(i.XYZ.D65.x+15*i.XYZ.D65.y+3*i.XYZ.D65.z),e=e/(13*t)+r,n=n/(13*t)+o,u=100*u,h=-9*u*e/((e-4)*n-e*n),[h,u,(9*u-15*n*u-n*h)/(3*n)]},i.LABtoLCH=function(t,i,e){var n;return n=Math.atan2(e,i),n=n>0?180*n/Math.PI:360-180*Math.abs(n)/Math.PI,[t,Math.sqrt(i*i+e*e),n]},i.LCHtoLAB=function(t,i,e){var n;return n=Math.PI*e/180,[t,Math.cos(n)*i,Math.sin(n)*i]},i.LUVtoLCH=function(t,i,e){return LABtoLCH(t,i,e)},i.LCHtoLUV=function(t,i,e){return LCHtoLAB(t,i,e)},i}(Vector),this.Color=Color,Circle=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.radius=null!=arguments[3]?arguments[3]:0}return extend(i,t),i.prototype.setRadius=function(t){return this.radius=t,this},i.prototype.intersectPoint=function(t){var i,e;return e=new Vector(Point.get(arguments)),i=e.$subtract(this),i.x*i.x+i.y*i.yo?i?[]:!1:i?(h=Math.sqrt(o),y=-a+h,f=-a-h,c=new Point(t.x-r.x*y,t.y-r.y*y),p=new Point(t.x-r.x*f,t.y-r.y*f),0===o?[c]:[c,p]):!0)},i.prototype.intersectLine=function(t,i){var e,n,s,r,o,h;if(null==i&&(i=!0),h=this.intersectPath(t),h&&h.length>0){for(o=[],n=t.bounds(),e=0,s=h.length;s>e;e++)if(r=h[e],Rectangle.contain(r,n,n.p1)){if(!i)return!0;o.push(r)}return i?o:o.length>0}return i?[]:!1},i.prototype.intersectLines=function(t,i){return null==i&&(i=!0),Line.intersectLines(this,t,i)},i.prototype.intersectCircle=function(t,i){var e,n,s,r,o,h,u,a;return null==i&&(i=!0),h=t.$subtract(this),o=h.magnitude(!1),r=Math.sqrt(o),n=this.radius*this.radius,s=t.radius*t.radius,r>this.radius+t.radius?i?[]:!1:r0):t instanceof Point?(n=t.$subtract(this),n.x*n.x+n.y*n.y0;)e=Math.min(i,this.frame_ms),this.integrate(s/1e3,e/1e3),i-=e,s+=e,n.push(this.life.age++);return n},i.prototype.integrate=function(t,i){return this.integrateRK4(t,i)},i.prototype.forces=function(t,i){return{force:new Vector}},i.prototype.impulse=function(t){return this.momentum.add(t),this.velocity=this.momentum.$divide(this.mass)},i.prototype._evaluate=function(t,i,e){var n,s;return null==i&&(i=0),null==e&&(e=!1),s=0!==i&&e?{position:this.$add(e.velocity.$multiply(i)),momentum:this.momentum.$add(e.force.$multiply(i))}:{position:new Vector(this),momentum:new Vector(this.momentum)},s.velocity=s.momentum.$divide(this.mass),n=this.forces(s,t+i),{velocity:s.velocity,force:n.force}},i.prototype.integrateRK4=function(t,i){var e,n,s,r,o;return e=function(t,i,e,n){var s;return s=new Vector((t.x+2*(i.x+e.x)+n.x)/6,(t.y+2*(i.y+e.y)+n.y)/6,(t.z+2*(i.z+e.z)+n.z)/6)},n=this._evaluate(t,0),s=this._evaluate(t,.5*i,n),r=this._evaluate(t,.5*i,s),o=this._evaluate(t,i,r),this.add(e(n.velocity,s.velocity,r.velocity,o.velocity)),this.momentum.add(e(n.force,s.force,r.force,o.force))},i.prototype.integrateEuler=function(t,i){var e;return e=this.forces({position:new Vector(this),momentum:new Vector(this.momentum)},t+i),this.add(this.velocity),this.momentum.add(e.force),this.velocity=this.momentum.$divide(this.mass)},i.prototype.collideLine2d=function(t,i){var e,n,s,r,o,h,u,a,c,p,l,y,f,d,m,g,x,v,z,_;if(null==i&&(i=!0),o=new Vector(this),r=Math.abs(t.getDistanceFromPoint(o)),n=Math.abs(r)t.p1.x?(this.x-this.radiust.p1.x&&(this.x=t.p1.x-this.radius),this.velocity.x*=-1,this.momentum=this.velocity.$multiply(this.mass),!0):this.y-this.radiust.p1.y?(this.y-this.radiust.p1.y&&(this.y=t.p1.y-this.radius),this.velocity.y*=-1,this.momentum=this.velocity.$multiply(this.mass),!0):!1},i.prototype.collideParticle2d=function(t){return this.hasIntersect(t)?i.collideParticle2d(this,t,!0):!1},i.collideParticle2d=function(t,i,e,n){var s,r,o,h,u,a,c,p,l,y,f,d,m,g,x,v,z;return null==e&&(e=!0),null==n&&(n=!0),y=t.$subtract(i).normalize(),m=new Vector(-y.y,y.x),h=y.dot(t.velocity),u=m.dot(t.velocity),a=y.dot(i.velocity),c=m.dot(i.velocity),s=(h*(t.mass-i.mass)+2*i.mass*a)/(t.mass+i.mass),r=(a*(i.mass-t.mass)+2*t.mass*h)/(t.mass+i.mass),g=y.$multiply(s),x=m.$multiply(u),v=y.$multiply(r),z=m.$multiply(c),f=g.$add(x),d=v.$add(z),n&&(p=t.magnitude(i),ps;o=++s)c=p[o],c.life.complete?n.push(o):c.life.active&&c.animate(t,i,e);if(n.length>0){for(l=[],r=0,a=n.length;a>r;r++)h=n[r],l.push(this.particles.splice(h,1));return l}},t}(),this.ParticleSystem=ParticleSystem,Pair=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.p1=new Vector(this.x,this.y,this.z),4===arguments.length?(this.z=0,this.p1.set(arguments[2],arguments[3])):6===arguments.length&&this.p1.set(arguments[3],arguments[4],arguments[5])}return extend(i,t),i.prototype.to=function(){return this.p1=new Vector(Point.get(arguments)),this},i.prototype.getAt=function(t){return 1===t||"p1"===t?this.p1:this},i.prototype.$getAt=function(t){return new Vector(this.getAt(t))},i.prototype.relative=function(){return this.p1.add(this),this},i.prototype.$relative=function(){return this.$add(this.p1)},i.prototype.bounds=function(){return new i(this.$min(this.p1)).to(this.$max(this.p1))},i.prototype.withinBounds=function(t,i){var e,n;return i?(e=this.get2D(i),n=this.p1.get2D(i),e.x===n.x?t.y>=Math.min(e.y,n.y)&&t.y<=Math.max(e.y,n.y):e.y===n.y?t.x>=Math.min(e.x,n.x)&&t.x<=Math.max(e.x,n.x):t.x>=Math.min(e.x,n.x)&&t.y>=Math.min(e.y,n.y)&&t.x<=Math.max(e.x,n.x)&&t.y<=Math.max(e.y,n.y)):t.x>=Math.min(this.x,this.p1.x)&&t.y>=Math.min(this.y,this.p1.y)&&t.z>=Math.min(this.z,this.p1.z)&&t.x<=Math.max(this.x,this.p1.x)&&t.y<=Math.max(this.y,this.p1.y)&&t.z<=Math.max(this.z,this.p1.z)},i.prototype.interpolate=function(t,i){var e;return null==i&&(i=!1),e=i?this.$relative():this.p1,new Vector((1-t)*this.x+t*e.x,(1-t)*this.y+t*e.y,(1-t)*this.z+t*e.z)},i.prototype.midpoint=function(){return this.interpolate(.5)},i.prototype.direction=function(t){return t?this.$subtract(this.p1):this.p1.$subtract(this)},i.prototype.size=function(){return arguments.length>0?(this.p1=this.$add(Point.get(arguments)),this):this.p1.$subtract(this).abs()},i.prototype.length=function(t){var i,e,n,s;return null==t&&(t=!0),s=this.z-this.p1.z,n=this.y-this.p1.y,e=this.x-this.p1.x,i=e*e+n*n+s*s,t?Math.sqrt(i):i},i.prototype.collinear=function(t){return(this.p1.x-this.x)*(t.y-this.y)-(t.x-this.x)*(this.p1.y-this.y)},i.prototype.resetBounds=function(){var t;return t=this.$min(this.p1),this.p1.set(this.$max(this.p1)),this.set(t),this},i.prototype.equal=function(t){return null==t&&(t=!1),arguments[0]instanceof i?i.__super__.equal.call(this,arguments[0])&&this.p1.equal(arguments[0].p1):i.__super__.equal.apply(this,arguments)},i.prototype.clone=function(){var t;return t=new i(this),t.to(this.p1.clone()),t},i.prototype.floor=function(){return i.__super__.floor.apply(this,arguments),this.p1.floor()},i.prototype.toString=function(){return"Pair of vectors from ("+this.x+", "+this.y+", "+this.z+") to ("+this.p1.x+", "+this.p1.y+", "+this.p1.z+")"},i.prototype.toArray=function(){return[this,this.p1]},i}(Vector),this.Pair=Pair,Line=function(t){function i(){i.__super__.constructor.apply(this,arguments)}return extend(i,t),i.slope=function(t,i,e){var n,s;return null==e&&(e=Const.xy),n=t.get2D(e),s=i.get2D(e),s.x-n.x===0?!1:(s.y-n.y)/(s.x-n.x)},i.intercept=function(t,i,e){var n,s,r,o;return null==e&&(e=Const.xy),r=t.get2D(e),o=i.get2D(e),o.x-r.x===0?!1:(s=(o.y-r.y)/(o.x-r.x),n=r.y-s*r.x,{slope:s,yi:n,xi:0===s?!1:-n/s})},i.isPerpendicularLine=function(t,e,n){var s,r;return null==n&&(n=Const.xy),s=i.slope(t,t.p1,n),r=i.slope(e,e.p1,n),s===!1?0===r:r===!1?0===s:s*r===-1},i.prototype.slope=function(t){return null==t&&(t=Const.xy),i.slope(this,this.p1,t)},i.prototype.intercept=function(t){return null==t&&(t=Const.xy),i.intercept(this,this.p1,t)},i.prototype.getPerpendicular=function(t,e,n,s){var r,o,h;return null==e&&(e=10),null==n&&(n=!1),null==s&&(s=Const.xy),o=this.direction().normalize().perpendicular(s),h=n?o[1]:o[0],r=new i(this.interpolate(t)),r.to(h.multiply(e).add(r)),r},i.prototype.getDistanceFromPoint=function(t){var i,e;return e=this.$subtract(this.p1),i=new Vector(-e.y,e.x).normalize(),this.$subtract(t).dot(i)},i.prototype.getPerpendicularFromPoint=function(t,i){var e;return null==i&&(i=!0),e=this.p1.$subtract(this).projection(t.$subtract(this)),i?e.add(this):e},i.prototype.intersectPath=function(t,i){var e,n,s,r,o,h,u;return null==i&&(i=Const.xy),e=this.intercept(i),n=t.intercept(i),r=this.get2D(i),s=t.get2D(i),e===!1?n===!1?!1:(u=-n.slope*(s.x-r.x)+s.y,i===Const.xy?new Vector(r.x,u):new Vector(r.x,u).get2D(i,!0)):n===!1?(u=-e.slope*(r.x-s.x)+r.y,new Vector(s.x,u)):n.slope!==e.slope?(o=(e.slope*r.x-n.slope*s.x+s.y-r.y)/(e.slope-n.slope),h=e.slope*(o-r.x)+r.y,i===Const.xy?new Vector(o,h):new Vector(o,h).get2D(i,!0)):e.yi===n.yi?null:!1},i.prototype.intersectLine=function(t,i){var e;return null==i&&(i=Const.xy),e=this.intersectPath(t,i),e&&this.withinBounds(e,i)&&t.withinBounds(e,i)?e:null===e?null:!1},i.intersectLines=function(t,i,e){var n,s,r,o,h,u,a;if(null==e&&(e=!0),!t.intersectLine)throw"No intersectLine function found in "+t.toString();a=[];for(s in i)if(h=i[s],r=t.intersectLine(h,e)){if(!e)return!0;if(r.length>0)for(n=0,o=r.length;o>n;n++)u=r[n],a.push(u)}return e?a:!1},i.prototype.intersectGridLine=function(t,i,e){var n,s,r,o;if(null==i&&(i=!1),null==e&&(e=Const.xy),n=this.get2D(e),s=this.p1.get2D(e),r=t.get2D(e),o=t.p1.get2D(e),s.x-n.x===0){if(o.y-r.y===0&&Util.within(n.x,r.x,o.x)&&(i||Util.within(r.y,n.y,s.y)))return new Vector(n.x,r.y)}else{if(s.y-n.y!==0)return!1;if(o.x-r.x===0&&Util.within(n.y,r.y,o.y)&&(i||Util.within(r.x,n.x,s.x)))return new Vector(r.x,n.y)}},i.prototype.subpoints=function(t){var i,e,n,s;for(n=[],s=i=0,e=t;e>=0?e>=i:i>=e;s=e>=0?++i:--i)n.push(this.interpolate(s/t));return n},i.prototype.clone=function(t){return new i(this).to(this.p1)},i}(Pair),this.Line=Line,Rectangle=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.center=new Vector}return extend(i,t),i.contain=function(t,i,e){return t.x>=i.x&&t.x<=e.x&&t.y>=i.y&&t.y<=e.y&&t.z>=i.z&&t.z<=e.z},i.prototype.toString=function(){var t;return t=this.size(),"Rectangle x1 "+this.x+", y1 "+this.y+", z1 "+this.z+", x2 "+this.p1.x+", y2 "+this.p1.y+", z2 "+this.p1.z+", width "+t.x+", height "+t.y},i.prototype.toPointSet=function(){var t;return t=this.corners(),new PointSet(this).to([t.topRight,t.bottomRight,t.bottomLeft,t.topLeft])},i.prototype.to=function(t){return this.p1=new Vector(Point.get(arguments)),this.resetBounds(),this.center=this.midpoint(),this},i.prototype.setCenter=function(t){var i;return 0===arguments.length?void(this.center=this.midpoint()):(i=this.size().$divide(2),this.center.set(Point.get(arguments)),this.set(this.center.$subtract(i)),this.p1.set(this.center.$add(i)),this)},i.prototype.resizeTo=function(){return this.p1=new Vector(Point.get(arguments)),this.relative(),this.center=this.midpoint(),this},i.prototype.resizeCenterTo=function(){var t;return t=new Vector(Point.get(arguments)).divide(2),this.set(this.center.$subtract(t)),this.p1.set(this.center.$add(t)),this},i.prototype.enclose=function(t){return this.set(this.$min(t)),this.p1.set(this.p1.$max(t.p1)),this.center=this.midpoint(),this},i.prototype.$enclose=function(t){return this.clone().enclose(t)},i.prototype.isEnclosed=function(t){var i,e;return i=this.$subtract(t).multiply(this.p1.$subtract(t.p1)),e=this.size().subtract(t.size()),i.x<=0&&i.y<=0&&i.z<=0&&e.x*e.y>=0},i.prototype.isLarger=function(t){var i,e;return i=this.size(),e=t.size(),i.x*i.y>e.x*e.y},i.prototype.intersectPoint=function(){var t;return t=Point.get(arguments),t.x>=this.x&&t.x<=this.p1.x&&t.y>=this.y&&t.y<=this.p1.y&&t.z>=this.z&&t.z<=this.p1.z},i.prototype.intersectPath=function(t,i){var e,n,s,r,o,h;for(null==i&&(i=!0),h=this.sides(),r=[],e=0,n=h.length;n>e;e++)if(o=h[e],s=o.intersectPath(t),s&&this.intersectPoint(s)){if(!i)return!0;r.push(s)}return i?r:!1},i.prototype.intersectLine=function(t,i){var e,n,s,r,o,h,u,a,c;if(null==i&&(i=!0),n=this.intersectPoint(t),s=this.intersectPoint(t.p1),n&&s&&i)return[];if(!n&&!s&&(r=t.bounds(),!this.intersectRectangle(r,!1)))return i?[]:!1;for(c=this.sides(),u=[],e=0,o=c.length;o>e;e++)if(a=c[e],h=t.intersectLine(a)){if(!i)return!0;u.push(h)}return i?u:!1},i.prototype.intersectLines=function(t,i){return null==i&&(i=!0),Line.intersectLines(this,t,i)},i.prototype.intersectRectangle=function(t,i){var e,n,s,r,o,h,u,a,c,p,l,y,f,d;if(null==i&&(i=!0),y=this.p1.x>=t.x&&this.x<=t.p1.x,f=this.p1.y>=t.y&&this.y<=t.p1.y,d=this.p1.z>=t.z&&this.z<=t.p1.z,s=y&&f&&d,!i)return s;if(this.isEnclosed(t))return i?[]:!0;if(!s)return[];for(p=this.sides(),l=t.sides(),u=[],e=0,r=p.length;r>e;e++)for(a=p[e],n=0,o=l.length;o>n;n++)c=l[n],h=a.intersectGridLine(c),h&&u.push(h);return u},i.prototype.hasIntersect=function(t,e){return null==e&&(e=!1),t instanceof Circle?t.intersectLines(this.sides(),e):t instanceof i?this.intersectRectangle(t,e):t instanceof PointSet||t instanceof Triangle?this.intersectLines(t.sides(),e):t instanceof Pair?this.intersectLine(t,e):t instanceof Point?i.contain(t,this,this.p1):e?[]:!1},i.prototype.corners=function(){return{topLeft:new Vector(Math.min(this.x,this.p1.x),Math.min(this.y,this.p1.y),Math.max(this.z,this.p1.z)),topRight:new Vector(Math.max(this.x,this.p1.x),Math.min(this.y,this.p1.y),Math.min(this.z,this.p1.z)),bottomLeft:new Vector(Math.min(this.x,this.p1.x),Math.max(this.y,this.p1.y),Math.max(this.z,this.p1.z)),bottomRight:new Vector(Math.max(this.x,this.p1.x),Math.max(this.y,this.p1.y),Math.min(this.z,this.p1.z))}},i.prototype.sides=function(){var t;return t=this.corners(),[new Line(t.topLeft).to(t.topRight),new Line(t.topRight).to(t.bottomRight),new Line(t.bottomRight).to(t.bottomLeft),new Line(t.bottomLeft).to(t.topLeft)]},i.prototype.quadrants=function(){var t;return t=this.corners(),{topLeft:new this.__proto__.constructor(t.topLeft).to(this.center),topRight:new this.__proto__.constructor(t.topRight).to(this.center),bottomLeft:new this.__proto__.constructor(t.bottomLeft).to(this.center),bottomRight:new this.__proto__.constructor(t.bottomRight).to(this.center)}},i.prototype.clone=function(){var t;return t=new i(this).to(this.p1),t.to(this.p1.clone()),t},i}(Pair),this.Rectangle=Rectangle,Grid=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.cell={type:"fix-fix",size:new Vector},this.rows=0,this.columns=0,this.layout=[],this.cellCallback=null}return extend(i,t),i.prototype.toString=function(){var t;return t=this.size(),"Grid width "+t.x+", height "+t.y+", columns "+this.columns+", rows "+this.rows+", "+("cell ("+this.cell.size.x+", "+this.cell.size.y+"), type "+this.cell.type)},i.prototype.init=function(t,i,e,n){var s;return null==e&&(e="fix"),null==n&&(n="fix"),s=this.size(),this.cell.type=e+"-"+n,this.rows=i,this.columns=t,"stretch"===e?(this.cell.size.x=s.x/t,this.columns=t):"flex"===e?(this.columns=Math.round(s.x/t),this.cell.size.x=s.x/this.columns):(this.cell.size.x=t,this.columns=Math.floor(s.x/this.cell.size.x)),"stretch"===n?(this.cell.size.y=s.y/i,this.rows=i):"flex"===n?(this.rows=Math.round(s.y/i),this.cell.size.y=s.y/this.rows):(this.cell.size.y=i,this.rows=Math.floor(s.y/this.cell.size.y)),this},i.prototype.generate=function(t){return"function"==typeof t&&(this.cellCallback=t),this},i.prototype.create=function(){var t,i,e,n,s,r,o,h,u;if(!this.cellCallback)return this;for(e=t=0,h=this.columns;h>=0?h>t:t>h;e=h>=0?++t:--t)for(o=i=0,u=this.rows;u>=0?u>i:i>u;o=u>=0?++i:--i)n=this.cell.size.clone(),r=this.$add(n.$multiply(e,o)),s=this.layout.length>0&&this.layout[0].length>0?1===this.layout[o][e]:!1,this.cellCallback(n,r,o,e,this.cell.type,s);return this},i.prototype.getCellSize=function(){return this.cell.size.clone()},i.prototype.cellToRectangle=function(t,i,e){var n;return null==e&&(e=!1),e||t>=0&&t=0&&i=0?r>i:i>r;s=r>=0?++i:--i)for(this.layout[s]=[],n=e=0,o=this.columns;o>=0?o>e:e>o;n=o>=0?++e:--e)this.layout[s][n]=0,t&&t(this,s,n);return this},i.prototype.occupy=function(t,i,e,n,s){var r,o,h,u,a,c;if(null==s&&(s=!0),this.rows<=0||this.columns<=0)return this;for(this.layout.length<1&&this.resetLayout(),h=r=0,a=e;a>=0?a>r:r>a;h=a>=0?++r:--r)for(u=o=0,c=n;c>=0?c>o:o>c;u=c>=0?++o:--o)this.layout[Math.min(this.layout.length-1,i+u)][t+h]=s?1:0;return this},i.prototype.canFit=function(t,i,e,n){var s,r,o,h,u,a,c,p,l;for(u=s=a=i,c=Math.min(this.rows,i+n);c>=a?c>s:s>c;u=c>=a?++s:--s)for(h=r=p=t,l=Math.min(this.columns,t+e);l>=p?l>r:r>l;h=l>=p?++r:--r)if(o=this.layout[u][h],null!=o&&o>0)return!1;return!0},i.prototype.fit=function(t,i){var e,n,s,r,o,h,u,a,c,p,l;for(h=Math.min(t,this.columns),a=e=0,p=this.rows;p>=0?p>e:e>p;a=p>=0?++e:--e)for(o=h,c=0,u=n=0,l=this.columns;l>=0?l>n:n>l;u=l>=0?++n:--n)if(r=this.layout[a][u],null!=r&&r>0)c++,o=h;else if(o--,0>=o)return this.occupy(c,a,h,i),s=new Rectangle(this.$add(this.cell.size.$multiply(c,a))),s.resizeTo(this.cell.size.$multiply(h,i)),{row:a,column:c,columnSize:h,rowSize:i,bound:s};return!1},i.prototype.neighbors=function(t,i){var e,n,s,r,o;for(o=[[t-1,i-1],[t,i-1],[t+1,i-1],[t+1,i],[t+1,i+1],[t,i+1],[t-1,i+1],[t-1,i]],r=[],e=0,n=o.length;n>e;e++)s=o[e],r.push(s[0]>=0&&s[0]=0&&s[1]t;t++)e=n[t],s+=e.x+","+e.y+","+e.z+", ";return s+" ]"},i.prototype.toArray=function(){return this.points.slice()},i.prototype.to=function(t){var i,e,n,s;if(arguments.length>0)if(Array.isArray(arguments[0])&&arguments[0].length>0&&"object"==typeof arguments[0][0])for(s=arguments[0],i=0,e=s.length;e>i;i++)n=s[i],this.points.push(new Vector(n));else this.points.push(new Vector(Point.get(arguments)));return this},i.prototype.getAt=function(t){return this.points[Math.min(this.points.length-1,Math.max(0,t))]},i.prototype.$getAt=function(t){return new Vector(this.getAt(t))},i.prototype.setAt=function(t,i){return this.points[t]=i,this},i.prototype.count=function(){return this.points.length},i.prototype.connectFromAnchor=function(t){var i,e,n,s;if(arguments.length>0)if(Array.isArray(arguments[0])&&arguments[0].length>0)for(s=arguments[0],i=0,e=s.length;e>i;i++)n=s[i],this.points.push(this.$add(n));else this.points.push(this.$add(Point.get(arguments)));return this},i.prototype.disconnect=function(t){return null==t&&(t=-1),this.points=0>t?this.points.slice(0,this.points.length+t):this.points.slice(t+1),this},i.prototype.clear=function(){return this.points=[],this},i.prototype.sides=function(t){var i,e,n,s,r,o;for(null==t&&(t=!0),e=null,o=[],r=this.points,i=0,n=r.length;n>i;i++)s=r[i],e&&o.push(new Line(e).to(s)),e=s;return this.points.length>1&&t&&o.push(new Line(e).to(this.points[0])),o},i.prototype.angles=function(t){var i,e,n,s,r,o;for(null==t&&(t=Const.xy),e=[],n=i=1,s=this.points.length-1;s>i;n=i+=1)r=this.points[n-1].$subtract(this.points[n]),o=this.points[n+1].$subtract(this.points[n]),e.push({p0:this.points[n-1],p1:this.points[n],p2:this.points[n+1],angle:r.angleBetween(o)});return e},i.prototype.bounds=function(){return Util.boundingBox(this.points)},i.prototype.centroid=function(){return Util.centroid(this.points)},i.prototype.convexHull=function(t){var i,e,n,s,r;if(null==t&&(t=!0),this.points.length<3)return[];for(t?(r=this.points.slice(),r.sort(function(t,i){return t.x-i.x})):r=this.points,n=function(t,i,e){return(i.x-t.x)*(e.y-t.y)-(e.x-t.x)*(i.y-t.y)>0},i=[],n(r[0],r[1],r[2])?(i.push(r[0]),i.push(r[1])):(i.push(r[1]),i.push(r[0])),i.unshift(r[2]),i.push(r[2]),e=3;e=i;n=i+=1)s=n/t,r.push([s,s*s,s*s*s]);return r},i.prototype.controlPoints=function(t,i){var e,n,s,r,o;return null==t&&(t=0),null==i&&(i=!1),e=function(t){return function(i){var e;return e=i=i;s=i+=1)o.push(this.catmullRomPoint(a[s],n));for(r=0;r=e;s=e+=1)o.push(this.catmullRomPoint(a[s],n));r++}return o},i.prototype.catmullRomPoint=function(t,i){var e,n,s,r,o,h,u,a,c,p;return o=t[0],h=t[1],u=t[2],e=-.5*u+h-.5*o,n=1.5*u-2.5*h+1,s=-1.5*u+2*h+.5*o,r=.5*u-.5*h,a=e*i.p0.x+n*i.p1.x+s*i.p2.x+r*i.p3.x,c=e*i.p0.y+n*i.p1.y+s*i.p2.y+r*i.p3.y,p=this.is3D?e*i.p0.z+n*i.p1.z+s*i.p2.z+r*i.p3.z:0,new Point(a,c,p)},i.prototype.cardinal=function(t,i){var e,n,s,r,o,h,u,a,c;if(null==t&&(t=10),null==i&&(i=.5),this.points.length<2)return[];for(h=[],c=this._getSteps(t),s=this.controlPoints(0,!0),r=e=0,u=t;u>=e;r=e+=1)h.push(this.cardinalPoint(c[r],s,i));for(o=0;o=n;r=n+=1)h.push(this.cardinalPoint(c[r],s,i));o++}return h},i.prototype.cardinalPoint=function(t,i,e){var n,s,r,o,h,u,a,c,p,l,y,f;return null==e&&(e=.5),a=t[0],c=t[1],p=t[2],n=e*(-1*p+2*c-a),s=e*(-1*p+c),r=2*p-3*c+1,o=e*(p-2*c+a),h=-2*p+3*c,u=e*(p-c),l=i.p0.x*n+i.p1.x*s+r*i.p1.x+i.p2.x*o+h*i.p2.x+i.p3.x*u,y=i.p0.y*n+i.p1.y*s+r*i.p1.y+i.p2.y*o+h*i.p2.y+i.p3.y*u,f=this.is3D?i.p0.z*n+i.p1.z*s+r*i.p1.z+i.p2.z*o+h*i.p2.z+i.p3.z*u:0,new Point(l,y,f)},i.prototype.bezier=function(t){var i,e,n,s,r,o,h;if(null==t&&(t=10),this.points.length<4)return[];for(r=[],h=this._getSteps(t),s=0;s<=this.points.length-3;)if(e=this.controlPoints(s)){for(n=i=0,o=t;o>=i;n=i+=1)r.push(this.bezierPoint(h[n],e));s+=3}return r},i.prototype.bezierPoint=function(t,i){var e,n,s,r,o,h,u,a,c,p;return o=t[0],h=t[1],u=t[2],e=-1*u+3*h-3*o+1,n=3*u-6*h+3*o,s=-3*u+3*h,r=u,a=e*i.p0.x+n*i.p1.x+s*i.p2.x+r*i.p3.x,c=e*i.p0.y+n*i.p1.y+s*i.p2.y+r*i.p3.y,p=this.is3D?e*i.p0.z+n*i.p1.z+s*i.p2.z+r*i.p3.z:0,new Point(a,c,p)},i.prototype.bspline=function(t,i){var e,n,s,r,o,h,u,a,c;if(null==t&&(t=10),null==i&&(i=!1),this.points.length<2)return[];for(h=[],c=this._getSteps(t),o=0;o=n;r=n+=1)h.push(this.bsplineTensionPoint(c[r],s,i));else for(r=e=0,u=t;u>=e;r=e+=1)h.push(this.bsplinePoint(c[r],s));o++}return h},i.prototype.bsplinePoint=function(t,i){var e,n,s,r,o,h,u,a,c,p;return o=t[0],h=t[1],u=t[2],e=-.16666666666*u+.5*h-.5*o+.16666666666,n=.5*u-h+.66666666666,s=-.5*u+.5*h+.5*o+.16666666666,r=.16666666666*u,a=e*i.p0.x+n*i.p1.x+s*i.p2.x+r*i.p3.x,c=e*i.p0.y+n*i.p1.y+s*i.p2.y+r*i.p3.y,p=this.is3D?e*i.p0.z+n*i.p1.z+s*i.p2.z+r*i.p3.z:0,new Point(a,c,p)},i.prototype.bsplineTensionPoint=function(t,i,e){var n,s,r,o,h,u,a,c,p,l,y,f;return null==e&&(e=1),a=t[0],c=t[1],p=t[2],n=e*(-.16666666666*p+.5*c-.5*a+.16666666666),s=e*(-1.5*p+2*c-.33333333333),r=2*p-3*c+1,o=e*(1.5*p-2.5*c+.5*a+.16666666666),h=-2*p+3*c,u=.16666666666*e*p,l=n*i.p0.x+s*i.p1.x+r*i.p1.x+o*i.p2.x+h*i.p2.x+u*i.p3.x,y=n*i.p0.y+s*i.p1.y+r*i.p1.y+o*i.p2.y+h*i.p2.y+u*i.p3.y,f=this.is3D?n*i.p0.z+s*i.p1.z+r*i.p1.y+o*i.p2.z+h*i.p2.z+u*i.p3.z:0,new Point(l,y,f)},i}(PointSet),this.Curve=Curve,Triangle=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.p1=new Vector(this.x-1,this.y-1,this.z),this.p2=new Vector(this.x+1,this.y+1,this.z)}return extend(i,t),i.prototype.to=function(t){return arguments.length>0&&("object"==typeof arguments[0]&&2===arguments.length?(this.p1.set(arguments[0]),this.p2.set(arguments[1])):arguments.length<6?(this.p1.set([arguments[0],arguments[1]]),this.p2.set([arguments[2],arguments[3]])):(this.p1.set([arguments[0],arguments[1],arguments[2]]),this.p2.set([arguments[3],arguments[4],arguments[5]]))),this},i.prototype.toArray=function(){return[this,this.p1,this.p2]},i.prototype.toString=function(){return"Triangle ("+this.x+", "+this.y+", "+this.z+"), ("+this.p1.x+", "+this.p1.y+", "+this.p1.z+"), ("+this.p2.x+", "+this.p2.y+", "+this.p2.z+")"},i.prototype.getAt=function(t){return 1===t||"p1"===t?this.p1:2===t||"p2"===t?this.p2:this},i.prototype.$getAt=function(t){return new Vector(this.getAt(t))},i.prototype.toPointSet=function(){var t;return t=new Vector(this),new PointSet(t).to([t,this.p1,this.p2])},i.prototype.sides=function(){return[new Line(this).to(this.p1),new Line(this.p1).to(this.p2),new Line(this.p2).to(this)]},i.prototype.angles=function(t){var i;return null==t&&(t=Const.xy),i=[this.p2.$subtract(this).angleBetween(this.p1.$subtract(this),t),this.$subtract(this.p1).angleBetween(this.p2.$subtract(this.p1),t)],i.push(Math.PI-i[0]-i[1]),i},i.prototype.medial=function(){var t,e,n;return n=this.sides(),t=function(){var t,i,s;for(s=[],t=0,i=n.length;i>t;t++)e=n[t],s.push(e.midpoint());return s}(),new i(t[0]).to(t[1],t[2])},i.prototype.perimeter=function(){var t,i;return i=this.sides(),t=[i[0].length(),i[1].length(),i[2].length()],{sides:i,value:t[0]+t[1]+t[2],lengths:t}},i.prototype.area=function(){var t,i;return i=this.perimeter(),t=i.value/2,{value:Math.sqrt(t*(t-i.lengths[0])*(t-i.lengths[1])*(t-i.lengths[2])),perimeter:i}},i.prototype.oppositeSide=function(t){return"p1"===t?new Line(this).to(this.p2):"p2"===t?new Line(this).to(this.p1):new Line(this.p1).to(this.p2)},i.prototype.adjacentSides=function(t){return"p1"===t?[new Line(this.p1).to(this),new Line(this.p1).to(this.p2)]:"p2"===t?[new Line(this.p2).to(this),new Line(this.p2).to(this.p1)]:[new Line(this).to(this.p1),new Line(this).to(this.p2)]},i.prototype.bisector=function(t,i,e){var n,s,r;return null==i&&(i=!1),null==e&&(e=100),n=this.adjacentSides(t),r=new Vector(n[0]),n[0].moveTo(0,0),n[1].moveTo(0,0),s=n[0].p1.bisect(n[1].p1),i?new Line(r).to(s.multiply(e).add(r)):s},i.prototype.altitude=function(t){return"p1"===t||"p2"===t?new Line(this[t]).to(this.oppositeSide(t).getPerpendicularFromPoint(this[t])):new Line(this).to(this.oppositeSide().getPerpendicularFromPoint(this))},i.prototype.centroid=function(){var t,i,e;return t=this.$divide(3),i=this.p1.$divide(3),e=this.p2.$divide(3),new Vector(t.x+i.x+e.x,t.y+i.y+e.y,t.z+i.z+e.z)},i.prototype.orthocenter=function(){var t,i;return t=this.altitude(),i=this.altitude("p1"),t.intersectPath(i,Const.xyz)},i.prototype.incenter=function(){var t,i;return t=this.bisector("p0",!0),i=this.bisector("p1",!0),t.intersectPath(i,Const.xyz); + +},i.prototype.incircle=function(){var t,i,e;return i=this.incenter(),t=this.area(),e=2*t.value/t.perimeter.value,new Circle(i).setRadius(e)},i.prototype.circumcenter=function(){var t,i;return t=this.medial(),i=[new Line(t).to(this.$subtract(t).perpendicular()[0].$add(t)),new Line(t.p1).to(this.p1.$subtract(t.p1).perpendicular()[0].$add(t.p1)),new Line(t.p2).to(this.p2.$subtract(t.p2).perpendicular()[0].$add(t.p2))],{center:i[0].intersectPath(i[1],Const.xyz),bisectors:i}},i.prototype.circumcircle=function(){var t,i;return t=this.circumcenter(),i=this.magnitude(t.center),new Circle(t.center).setRadius(i)},i.prototype.intersectPoint=function(t){var i,e,n;return n=this.sides(),i=function(){var i,s,r;for(r=[],i=0,s=n.length;s>i;i++)e=n[i],r.push(e.collinear(t)>0);return r}(),i[0]===i[1]&&i[1]===i[2]},i.prototype.intersectPath=function(t,i,e){var n,s,r,o,h,u;for(null==i&&(i=!0),null==e&&(e=Const.xy),u=this.sides(),o=[],n=0,s=u.length;s>n;n++)if(h=u[n],r=h.intersectPath(t),r&&h.withinBounds(r,e)){if(!i)return!0;o.push(r)}return i?o:!1},i.prototype.intersectLine=function(t,i,e){var n,s,r,o,h;for(null==i&&(i=!0),null==e&&(e=Const.xy),s=this.intersectPath(t,!0,e),h=[],n=0,r=s.length;r>n;n++)if(o=s[n],t.withinBounds(o)){if(!i)return!0;h.push(o)}return i?h:!1},i.prototype.intersectLines=function(t,i){return null==i&&(i=!0),Line.intersectLines(this,t,i)},i.prototype.intersectPath3D=function(t,i){var e,n,s,r,o,h,u,a,c,p,l;return s=this.p1.$subtract(this),r=this.p2.$subtract(this),n=t.direction().normalize(),h=n.cross(r),e=s.dot(h),e>-Const.epsilon&&ep||p>1?!1:(u=c.cross(s),l=n.dot(u)*o,0>l||l>1?!1:(a=r.dot(u)*o,a>Const.epsilon?i?[p,l,a]:!0:!1)))},i.prototype.intersectRectangle=function(t,i){return null==i&&(i=!0),t.intersectLines(this.sides(),i)},i.prototype.intersectCircle=function(t,i){return null==i&&(i=!0),t.intersectLines(this.sides(),i)},i.prototype.intersectTriangle=function(t,i){return null==i&&(i=!0),t.intersectLines(this.sides(),i)},i.prototype.clone=function(){return new i(this).to(this.p1,this.p2)},i}(Vector),this.Triangle=Triangle,SVGForm=function(){function t(t){this.cc=t.ctx||{},this.cc.group=this.cc.group||null,this.cc.groupID="ptx",this.cc.groupCount=0,this.cc.currentID="ptx0",this.cc.style={fill:"#999",stroke:"#666","stroke-width":1,"stroke-linejoin":!1,"stroke-linecap":!1},this.cc.font="11px sans-serif",this.cc.fontSize=11,this.cc.fontFace="sans-serif"}return t._domId=0,t.prototype.fill=function(t){return this.cc.style.fill=t?t:!1,this},t.prototype.stroke=function(t,i,e,n){return this.cc.style.stroke=t?t:!1,i&&(this.cc.style["stroke-width"]=i),e&&(this.cc.style["stroke-linejoin"]=e),n&&(this.cc.style["stroke-linecap"]=e),this},t.prototype.scope=function(t,i){return null==i&&(i=!1),i&&(this.cc.group=i),this.cc.groupID=t,this.cc.groupCount=0,this.nextID(),this.cc},t.prototype.getScope=function(i){if(!i||null===i.animateID)throw"getScope()'s item must be added to a Space, and has an animateID property. Otherwise, use scope() instead.";return this.scope(t._scopeID(i))},t.prototype.nextID=function(){return this.cc.groupCount++,this.cc.currentID=this.cc.groupID+"-"+this.cc.groupCount,this.cc.currentID},t.id=function(i){return i.currentID||"p-"+t._domId++},t._scopeID=function(t){return"item"+t.animateID},t.style=function(t,i){var e,n,s;n=[];for(e in i)s=i[e],s?n.push(e+":"+s):"fill"===e?n.push("fill: none"):"stroke"===e&&n.push("stroke: none");return DOMSpace.attr(t,{style:n.join(";")})},t.point=function(i,e,n,s,r,o){var h;return null==n&&(n=2),null==s&&(s=!0),null==r&&(r=!0),null==o&&(o=!1),(h=SVGSpace.svgElement(i.group,o?"circle":"rect",t.id(i)))?(o?DOMSpace.attr(h,{cx:e.x,cy:e.y,r:n}):DOMSpace.attr(h,{x:e.x-n,y:e.y-n,width:n+n,height:n+n}),t.style(h,i.style),h):void 0},t.prototype.point=function(i,e,n){return null==e&&(e=2),null==n&&(n=!1),this.nextID(),t.point(this.cc,i,e,!0,!0,n),this},t.points=function(i,e,n,s,r,o){var h;return null==n&&(n=2),null==s&&(s=!0),null==r&&(r=!0),null==o&&(o=!1),function(){var u,a,c;for(c=[],u=0,a=e.length;a>u;u++)h=e[u],c.push(t.point(i,h,n,s,r,o));return c}()},t.prototype.points=function(t,i,e){var n,s,r;for(null==i&&(i=2),null==e&&(e=!1),n=0,s=t.length;s>n;n++)r=t[n],this.point(r,i,e);return this},t.line=function(i,e){var n;if(!e.p1)throw e.toString()+" is not a Pair";return n=SVGSpace.svgElement(i.group,"line",t.id(i)),DOMSpace.attr(n,{x1:e.x,y1:e.y,x2:e.p1.x,y2:e.p1.y}),t.style(n,i.style),n},t.prototype.line=function(i){return this.nextID(),t.line(this.cc,i),this},t.lines=function(i,e){var n;return function(){var s,r,o;for(o=[],s=0,r=e.length;r>s;s++)n=e[s],o.push(t.line(i,n));return o}()},t.prototype.lines=function(t){var i,e,n;for(i=0,e=t.length;e>i;i++)n=t[i],this.line(n);return this},t.rect=function(i,e,n,s){var r,o;if(null==n&&(n=!0),null==s&&(s=!0),!e.p1)throw""+(e.toString()===!a(Pair));return r=SVGSpace.svgElement(i.group,"rect",t.id(i)),o=e.size(),DOMSpace.attr(r,{x:e.x,y:e.y,width:o.x,height:o.y}),t.style(r,i.style),r},t.prototype.rect=function(i,e){var n;return null==e&&(e=!0),this.nextID(),n=e?i.bounds():i,t.rect(this.cc,n),this},t.circle=function(i,e,n,s){var r;return null==n&&(n=!0),null==s&&(s=!1),(r=SVGSpace.svgElement(i.group,"circle",t.id(i)))?(DOMSpace.attr(r,{cx:e.x,cy:e.y,r:e.radius}),t.style(r,i.style),r):void 0},t.prototype.circle=function(i){return this.nextID(),t.circle(this.cc,i),this},t.polygon=function(i,e,n,s,r){var o,h,u;return null==n&&(n=!0),null==s&&(s=!0),null==r&&(r=!0),o=SVGSpace.svgElement(i.group,n?"polygon":"polyline",t.id(i)),!o||e.length<=1?void 0:(u=function(){var t,i,n;for(n=[],h=t=0,i=e.length;i>t;h=t+=1)n.push(e[h].x+","+e[h].y);return n}(),DOMSpace.attr(o,{points:u.join(" ")}),t.style(o,i.style),o)},t.prototype.polygon=function(i,e){return this.nextID(),t.polygon(this.cc,i,e),this},t.triangle=function(i,e,n,s){return null==n&&(n=!0),null==s&&(s=!1),t.polygon(i,e.toArray())},t.prototype.triangle=function(i){return this.nextID(),t.triangle(this.cc,i),this},t.curve=function(i,e,n){return null==n&&(n=!1),t.polygon(i,e,n)},t.prototype.curve=function(i,e){return null==e&&(e=!1),this.nextID(),t.curve(this.cc,i,e),this},t.text=function(i,e,n,s,r,o){var h;return null==s&&(s=0),null==r&&(r=0),null==o&&(o=0),(h=SVGSpace.svgElement(i.group,"text",t.id(i)))?(DOMSpace.attr(h,{"pointer-events":"none",x:e.x,y:e.y,dx:0,dy:0}),h.textContent=n,t.style(h,{fill:i.style.fill,stroke:i.style.stroke,"font-family":i.fontFace||!1,"font-size":i.fontSize||!1}),h):void 0},t.prototype.text=function(i,e,n,s,r){return null==n&&(n=1e3),this.nextID(),t.text(this.cc,i,e,n,s,r),this},t.prototype.font=function(t,i){return null==i&&(i=!1),this.cc.fontFace=i,this.cc.fontSize=t,this.cc.font=t+"px "+i,this},t.prototype.draw=function(t){return this.sketch(t)},t.prototype.sketch=function(i){return i.floor(),i instanceof Circle?t.circle(this.cc,i,this.filled,this.stroked):i instanceof Rectangle?t.rect(this.cc,i,this.filled,this.stroked):i instanceof Triangle?t.triangle(this.cc,i,this.filled,this.stroked):i instanceof Line||i instanceof Pair?t.line(this.cc,i):i instanceof PointSet?t.polygon(this.cc,i.points):(i instanceof Vector||i instanceof Point)&&t.point(this.cc,i),this},t}(),this.SVGForm=SVGForm,SVGSpace=function(t){function i(t,e,n){null==t&&(t="pt_space"),null==e&&(e=!1),null==n&&(n="svg"),i.__super__.constructor.apply(this,arguments),this.bg=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.bg.setAttribute("id",t+"_bg"),this.bg.setAttribute("fill",e),this.space.appendChild(this.bg)}return extend(i,t),i.prototype._createSpaceElement=function(){return this.space=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.space.setAttribute("id",this.id),this.appended=!1},i.svgElement=function(t,i,e){var n;if(!t||!t.appendChild)throw"parent parameter needs to be a DOM node";return n=document.querySelector("#"+e),n||(n=document.createElementNS("http://www.w3.org/2000/svg",i),n.setAttribute("id",e),n.setAttribute("class",e.substring(0,e.indexOf("-"))),t.appendChild(n)),n},i.prototype.resize=function(t,i,e){var n,s,r;this.size.set(t,i),this.center=new Vector(t/2,i/2),this.space.setAttribute("width",t),this.space.setAttribute("height",i),this.bg.setAttribute("width",t),this.bg.setAttribute("height",i),r=this.items;for(n in r)s=r[n],null!=s.onSpaceResize&&s.onSpaceResize(t,i,e);return this},i.prototype.remove=function(t){var i,e,n,s;for(s=this.space.querySelectorAll("."+SVGForm._scopeID(t)),i=0,e=s.length;e>i;i++)n=s[i],n.parentNode.removeChild(n);return delete this.items[t.animateID],this},i.prototype.removeAll=function(){for(;this.space.firstChild;)return this.space.removeChild(this.space.firstChild),this},i}(DOMSpace),this.SVGSpace=SVGSpace,Easing=function(){function t(){}return t.linear=function(t,i,e,n){return e*(t/=n)+i},t._linear=function(i){return t.linear(i,0,1,1)},t.quadIn=function(t,i,e,n){return e*(t/=n)*t+i},t._quadIn=function(i){return t.quadIn(i,0,1,1)},t.quadOut=function(t,i,e,n){return-e*(t/=n)*(t-2)+i},t._quadOut=function(i){return t.quadOut(i,0,1,1)},t.cubicIn=function(t,i,e,n){return t/=n,e*t*t*t+i},t._cubicIn=function(i){return t.cubicIn(i,0,1,1)},t.cubicOut=function(t,i,e,n){return t/=n,e*((t-1)*t*t+1)+i},t._cubicOut=function(i){return t.cubicOut(i,0,1,1)},t.elastic=function(t,i,e,n,s){var r,o,h;return null==s&&(s=.3),h=1.70158,o=n*s,r=e,0===t?i:(t/=n,1===t?i+e:(rt?e*(7.5625*(t-=1.5/2.75)*t+.75)+i:2.5/2.75>t?e*(7.5625*(t-=2.25/2.75)*t+.9375)+i:e*(7.5625*(t-=2.625/2.75)*t+.984375)+i},t._bounce=function(i){return t.bounce(i,0,1,1)},t}(),this.Easing=Easing,GridCascade=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.startRow=0}return extend(i,t),i.prototype.resetLayout=function(){return this.layout=[],this.startRow=0},i.prototype.occupy=function(t,i,e,n){var s,r,o,h,u,a,c,p;for(o=s=u=t,a=e+t;a>=u?a>s:s>a;o=a>=u?++s:--s)for(h=r=c=i,p=n+i;p>=c?p>r:r>p;h=p>=c?++r:--r)null==this.layout[h]&&(this.layout[h]=[]),this.layout[h][o]=1;return this},i.prototype.findStartRow=function(){var t,i,e,n,s,r,o,h;for(n=this.startRow,s=t=r=this.startRow,o=this.rows;o>=r?o>t:t>o;s=o>=r?++t:--t)for(n=s,e=i=0,h=this.columns;h>=0?h>i:i>h;e=h>=0?++i:--i)if(null!=this.layout[s]&&(null==this.layout[s][e]||this.layout[s][e]<=0))return n;return n},i.prototype.fit=function(t,i){var e,n,s,r,o,h,u,a,c,p,l,y,f,d,m,g,x;for(a=Math.min(t,this.columns),p=e=f=this.startRow,d=this.rows;d>=f?d>e:e>d;p=d>=f?++e:--e)for(u=a,l=0,p+i>=this.rows&&(this.rows+=i),null==this.layout[p]&&(this.layout[p]=[]),c=n=0,m=this.columns;m>=0?m>n:n>m;c=m>=0?++n:--n)if(h=this.layout[p][c],null!=h&&h>0)l=c+1,u=a;else if(u--,0===u){if(r=!0,i>1)for(y=s=g=p,x=p+i;x>=g?x>s:s>x;y=x>=g?++s:--s)if(y<=this.rows&&null!=this.layout[y]&&this.layout[y][l]>0){r=!1;break}if(r)return this.occupy(l,p,a,i),p>this.startRow&&(this.startRow=this.findStartRow()),o=new Rectangle(this.$add(this.cell.size.$multiply(l,p))),o.resizeTo(this.cell.size.$multiply(a,i)),{row:p,column:l,columnSize:a,rowSize:i,bound:o}}return console.error("cannot fit "+p+" "+l+" "+t+" "+i),!1},i}(Grid),this.GridCascade=GridCascade,ParticleEmitter=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.system=null,this.lastTime=0,this.period=0,this.animateID=-1}return extend(i,t),i.prototype.init=function(t){return this.system=t},i.prototype.frequency=function(t){return this.period=1e3/t,this},i.prototype.emit=function(){},i.prototype.animate=function(t,i,e){return t-this.lastTime>this.period?(this.emit(),this.lastTime=t):void 0},i}(Vector),this.ParticleEmitter=ParticleEmitter,ParticleField=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.system=void 0}return extend(i,t),i.prototype.check=function(t,i){var e,n,s,r;for(null==i&&(i=!1),r=[],e=0,n=t.length;n>e;e++)s=t[e],this.hasIntersect(s)?this.work(s):r.push(s);return i?r:t},i.prototype.work=function(t){},i}(Rectangle),this.ParticleField=ParticleField,QuadTree=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.quads=!1,this.items=[],this.depth=0,this.max_depth=6,this.max_items=2}return extend(i,t),i.prototype.getQuads=function(t,i){var e,n,s;if(null==i&&(i=[]),this.intersectPoint(t)&&(i.push(this),this.quads)){s=this.quads;for(e in s)n=s[e],n.intersectPoint(t)&&n.getQuads(t,i)}return i},i.prototype.getItems=function(t){var i,e,n;if(this.intersectPoint(t)){if(!this.quads)return this.items;if(this.quads){n=this.quads;for(i in n)if(e=n[i],e.intersectPoint(t))return e.getItems(t)}}return[]},i.prototype.addToQuad=function(t){var i,e,n,s;if(!t)return-1;if(this.quads){s=this.quads;for(e in s)if(n=s[e],i=n.addToQuad(t),i>0)return i;return-1}return!this.quads&&this.intersectPoint(t)?this.items.length>=this.max_items?this.depthi;n=++i)s=c[n],t=this.addToQuad(s),t>this.depth&&(this.items[n]=null);for(p=this.items,l=[],e=0,h=p.length;h>e;e++)y=p[e],l.push(y?void 0:this.items.splice(y,1));return l},i.prototype.resetQuad=function(){var t,i,e;if(this.items=[],this.quads){e=this.quads;for(t in e)i=e[t],i.resetQuad();return this.quads=!1}},i}(Rectangle),this.QuadTree=QuadTree,SamplePoints=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.bestcandidate=null,this.poisson=null,this.bound=null,this.boundsize=null}return extend(i,t),i.prototype.setBounds=function(t,i){return null==i&&(i=!1),i&&this.set(t),this.bound=new Rectangle(this).size(t.size()),this},i.prototype.bestCandidateSampler=function(){return this.points=[],this.bound||(this.bound=(new Rectangle).size(500,500)),this.boundsize=this.bound.size(),this.bestcandidate={halfsize:this.boundsize.$divide(2),quartersize:this.boundsize.$divide(4),maxDist:this.boundsize.x*this.boundsize.x+this.boundsize.y*this.boundsize.y},this},i.prototype.poissonSampler=function(t){var i;return this.points=[],this.bound||(this.bound=(new Rectangle).size(500,500)),this.boundsize=this.bound.size(),i=t*Math.SQRT1_2,this.poisson={grid:[],gridWidth:Math.ceil(this.boundsize.x/i),gridHeight:Math.ceil(this.boundsize.y/i),cellSize:i,radius:t,radius2:t*t,R:3*t*t,queue:[],queueSize:0,sampleSize:0,sincos:Util.sinCosTable()},this},i.prototype.sample=function(t,i){var e,n,s,r,o,h,u,a,c,p,l,y,f,d,m;if(null==t&&(t=10),null==i&&(i=!1),this.poisson&&"poisson"===i){if(this.poisson.sampleSize>0&&0===this.poisson.queueSize)return!1;if(!this.poisson.sampleSize)return this._poissonSample(this.bound.x+this.boundsize.x/2,this.bound.y+this.boundsize.y/2);for(;this.poisson.queueSize;){for(h=Math.floor(Math.random()*this.poisson.queueSize),f=this.poisson.queue[h],u=n=0,l=t;l>n;u=n+=1)if(e=Math.floor(360*Math.random()),p=Math.sqrt(Math.random()*this.poisson.R+this.poisson.radius2),d=f.x+p*this.poisson.sincos.cos[e],m=f.y+p*this.poisson.sincos.sin[e],d>=this.bound.x&&d=this.bound.y&&ms;h=s+=1){if(c=new Vector(this.bound.x+this.boundsize.x*Math.random(),this.bound.y+this.boundsize.y*Math.random()),0===this.points.length){r=c;break}a=this._bestCandidateCheck(c),a>o&&(r=c,o=a)}return r&&this.points.push(r),r}},i.prototype._bestCandidateCheck=function(t){var i,e,n,s,r,o,h,u,a,c;for(i=this.bestcandidate.maxDist,o=new Rectangle(t.x-this.bestcandidate.quartersize.x,t.y-this.bestcandidate.quartersize.y).size(this.bestcandidate.halfsize.x,this.bestcandidate.halfsize.y),a=function(){var t,i,e,n;for(e=this.points,n=[],t=0,i=e.length;i>t;t++)h=e[t],o.intersectPoint(h)&&n.push(h);return n}.call(this),e=0,u=a.length;u>e;e++)c=a[e],s=c.x-t.x,r=c.y-t.y,n=s*s+r*r,i>n&&(i=n);return i},i.prototype._poissonSample=function(t,i){var e;return e=new Point(t,i),this.poisson.queue.push(e),this.poisson.grid[this.poisson.gridWidth*(i/this.poisson.cellSize|0)+(t/this.poisson.cellSize|0)]=e,this.poisson.sampleSize++,this.poisson.queueSize++,e},i.prototype._poissonCheck=function(t,i){var e,n,s,r,o,h,u,a,c,p,l,y,f,d,m,g;for(o=Math.floor(t/this.poisson.cellSize),a=Math.floor(i/this.poisson.cellSize),h=Math.max(o-2,0),c=Math.max(a-2,0),u=Math.min(o+3,this.poisson.gridWidth),p=Math.min(a+3,this.poisson.gridHeight),a=e=y=c,f=p;f>e;a=e+=1)for(l=a*this.poisson.gridWidth,o=n=d=h,m=u;m>n;o=n+=1)if(g=this.poisson.grid[l+o],g&&(s=g.x-t,r=g.y-i,s*s+r*rt;t++)c=i[t],u.intersetPoint(c)&&n.push(c);return n}(),n=0,p=y.length;p>n;n++)f=y[n],r=f.x-t.x,o=f.y-t.y,s=r*r+o*o,e>s&&(e=s);return e},r=null,o=-1,u=s=0,y=e;y>=0?y>s:s>y;u=y>=0?++s:--s){if(p=new Vector(t.x+f.x*Math.random(),t.y+f.y*Math.random()),0===i.length)return p;c=n(p),c>o&&(r=p,o=c)}return r},i}(PointSet),this.SamplePoints=SamplePoints,StripeBound=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.frequency=new Point,this.stripes=new Point,this.method="frequency",this.mask=null}return extend(i,t),i.prototype.setFrequency=function(t,i){return this.frequency=new Vector(t,i),this.method="frequency"},i.prototype.setStripes=function(t,i){return this.stripes=new Point(t,i),this.method="stripes"},i.prototype.getStripes=function(){var t,i,e,n,s,r,o,h,u,a,c,p;for(p=this.size(),c={columns:[],rows:[]},o="frequency"===this.method?this.frequency.clone():p.$divide(this.stripes).floor(),n=p.$divide(o),e=t=0,u=o.y-1;u>=0?u>=t:t>=u;e=u>=0?++t:--t)r=n.y*e,h=new Pair(0,r).to(p.x,r+n.y).add(this),h.p1.add(this),c.rows.push(h);for(e=i=0,a=o.x-1;a>=0?a>=i:i>=a;e=a>=0?++i:--i)s=n.x*e,h=new Pair(s,0).to(s+n.x+.5,p.y).add(this),h.p1.add(this),c.columns.push(h);return c},i.prototype.getStripeLines=function(){var t,i,e,n,s,r,o,h,u,a,c,p;for(p=this.size(),c={columns:[],rows:[]},o="frequency"===this.method?this.frequency.clone():p.$divide(this.stripes).floor(),n=p.$divide(o),e=t=0,u=o.y;u>=0?u>=t:t>=u;e=u>=0?++t:--t)r=n.y*e,h=new Pair(0,r).to(p.x,r).add(this),h.p1.add(this),c.rows.push(h);for(e=i=0,a=o.x;a>=0?a>=i:i>=a;e=a>=0?++i:--i)s=n.x*e,h=new Pair(s,0).to(s,p.y).add(this),h.p1.add(this),c.columns.push(h);return c},i.prototype.setMask=function(t,i,e){var n,s;return null==e&&(e=!1),this.mask=new Rectangle(this.x,this.y),s=this.size(),e?e=this.$add(e):(n=s.$subtract(t,i).divide(2),e=new Point(this.x+n.x,this.y+n.y)),this.mask.set(e.x,e.y).size(t,i)},i.prototype.anchorMask=function(){var t;return t=this.$subtract(this.mask),this.moveBy(t),this.mask.moveBy(t)},i}(Rectangle),this.StripeBound=StripeBound,UI=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.dragging=!1}return extend(i,t),i.dragTarget=null,i.prototype.animate=function(t,i,e){return e.fillStyle="#f00",Form.rect(e,this)},i.prototype.onMouseAction=function(t,e,n,s){return this.intersectPoint(e,n)&&("drag"!==t||i.dragTarget||(this.dragging=!0,i.dragTarget=this)),this.dragging&&"move"===t&&this.moveTo(e,n).moveBy(this.size().multiply(-.5)),"drop"===t?(this.dragging=!1,i.dragTarget=null):void 0},i}(Rectangle),this.UI=UI,Noise=function(t){function i(){var t;i.__super__.constructor.apply(this,arguments),this.p=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,9,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],this.perm=function(){var i,e;for(e=[],t=i=0;512>i;t=++i)e.push(this.p[255&t]);return e}.call(this)}return extend(i,t),i.prototype.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],i.prototype.simplex=[[0,1,2,3],[0,1,3,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]],i.prototype.seed=function(t){var i,e,n,s;for(t>0&&1>t&&(t*=65536),t=Math.floor(t),256>t&&(t|=t<<8),n=[],e=i=0;255>=i;e=++i)s=1&e?this.p[e]^255&t:this.p[e]^t>>8&255,n.push(this.perm[e]=this.perm[e+256]=s);return n},i.prototype._dot=function(t,i,e){return t[0]*i+t[1]*e},i.prototype.perlin2d=function(t,i){var e,n,s,r,o,h,u,a,c,p;return null==t&&(t=this.x),null==i&&(i=this.y),e=function(t){return t*t*t*(t*(6*t-15)+10)},n=Math.floor(t)%255,s=Math.floor(i)%255,c=t-n,p=i-s,r=this._dot(this.grad3[(n+this.perm[s])%12],c,p),o=this._dot(this.grad3[(n+this.perm[s+1])%12],c,p-1),h=this._dot(this.grad3[(n+1+this.perm[s])%12],c-1,p),u=this._dot(this.grad3[(n+1+this.perm[s+1])%12],c-1,p-1),a=e(c),Util.lerp(Util.lerp(r,h,a),Util.lerp(o,u,a),e(p))},i.prototype.simplex2d=function(t,i){var e,n,s,r,o,h,u,a,c,p,l,y,f,d,m,g,x,v,z,_,b,w,P,M,S,C,D;return null==t&&(t=this.x),null==i&&(i=this.y),e=.5*(Math.sqrt(3)-1),x=(t+i)*e,a=Math.floor(t+x),l=Math.floor(i+x),n=(3-Math.sqrt(3))/6,v=(a+l)*n,s=a-v,r=l-v,w=t-s,S=i-r,w>S?(c=1,y=0):(c=0,y=1),P=w-c+n,C=S-y+n,M=w-1+2*n,D=S-1+2*n,p=255&a,f=255&l,o=this.perm[p+this.perm[f]]%12,h=this.perm[p+c+this.perm[f+y]]%12,u=this.perm[p+1+this.perm[f+1]]%12,z=.5-w*w-S*S,0>z?d=0:(z*=z,d=z*z*this._dot(this.grad3[o],w,S)),_=.5-P*P-C*C,0>_?m=0:(_*=_,m=_*_*this._dot(this.grad3[h],P,C)),b=.5-M*M-D*D,0>b?g=0:(b*=b,g=b*b*this._dot(this.grad3[u],M,D)),70*(d+m+g)},i}(Vector),Delaunay=function(t){function i(){i.__super__.constructor.apply(this,arguments),this.mesh=[]}return extend(i,t),i.prototype.generate=function(){var t,i,e,n,s,r,o,h,u,a,c,p,l,y,f,d,m,g,x,v;if(!(this.points.length<3)){for(f=this.points.length,c=[],a=t=0,x=f;x>t;a=t+=1)c[a]=a;for(c.sort(function(t){return function(i,e){return t.points[e].x-t.points[i].x}}(this)),g=this.points.slice(),v=this._supertriangle(),g.push(new Vector(v),new Vector(v.p1),new Vector(v.p2)),m=[this._circum(f,f+1,f+2,v)],r=[],u=[],i=0,l=c.length;l>i;i++){for(n=c[i],u=[],p=m.length;p--;)s=m[p],o=g[n].x-s.circle.x,h=g[n].y-s.circle.y,o>0&&o*o>s.circle.radius*s.circle.radius?(r.push(s),m.splice(p,1)):o*o+h*h-s.circle.radius*s.circle.radius>Const.epsilon||(u.push(s.i,s.j,s.j,s.k,s.k,s.i),m.splice(p,1));for(this._dedupe(u),p=u.length;p>1;)m.push(this._circum(u[--p],u[--p],n,null,g))}for(e=0,y=m.length;y>e;e++)d=m[e],d.it;t++)h=u[t],o.min(h),s.max(h);return i=s.$subtract(o),r=o.$add(s).divide(2),e=Math.max(i.x,i.y),new Triangle(r.$subtract(20*e,e)).to(r.$add(0,20*e),r.$add(20*e,-e))},i.prototype._triangle=function(t,i,e,n){return null==n&&(n=this.points),new Triangle(n[t]).to(n[i],n[e])},i.prototype._circum=function(t,i,e,n,s){return null==n&&(n=null),null==s&&(s=this.points),n=n||this._triangle(t,i,e,s),{i:t,j:i,k:e,triangle:n,circle:n.circumcircle()}},i.prototype._dedupe=function(t){var i,e,n,s,r,o;for(s=t.length;s>1;)for(e=t[--s],i=t[--s],n=s;n>1;)if(o=t[--n],r=t[--n],i===r&&e===o||i===o&&e===r){t.splice(s,2),t.splice(n,2);break}return t},i}(PointSet),this.Delaunay=Delaunay; \ No newline at end of file diff --git a/scripts/typing.js b/scripts/typing.js new file mode 100644 index 0000000..4bf7cf6 --- /dev/null +++ b/scripts/typing.js @@ -0,0 +1,56 @@ +var TxtRotate = function(el, toRotate, period) { + this.toRotate = toRotate; + this.el = el; + this.loopNum = 0; + this.period = parseInt(period, 10) || 2000; + this.txt = ''; + this.tick(); + this.isDeleting = false; +}; + +TxtRotate.prototype.tick = function() { + var i = this.loopNum % this.toRotate.length; + var fullTxt = this.toRotate[i]; + + if (this.isDeleting) { + this.txt = fullTxt.substring(0, this.txt.length - 1); + } else { + this.txt = fullTxt.substring(0, this.txt.length + 1); + } + + this.el.innerHTML = ''+this.txt+''; + + var that = this; + var delta = 200 - Math.random() * 100; + + if (this.isDeleting) { delta /= 2; } + + if (!this.isDeleting && this.txt === fullTxt) { + delta = this.period; + this.isDeleting = true; + } else if (this.isDeleting && this.txt === '') { + this.isDeleting = false; + this.loopNum++; + delta = 100; + } + + setTimeout(function() { + that.tick(); + }, delta); +}; + +window.onload = function() { + var elements = document.getElementsByClassName('txt-rotate'); + for (var i=0; i div { + padding: 0 15px; } + #about .bullet-wrap { + height: 230px; } + #about .skills-wrapper > .flex:first-child { + padding: 0 50px 0 50px; } + #about .skills-wrapper .me img { + margin-left: 50%; + transform: translateX(-50%); + border-radius: 40px; + width: 320px; } + #about .bar { + height: 28px; + margin: 0 0 15px 0; + font-size: 11pt; } + #about .bar span { + display: initial; } + #about .bar .tag { + width: 110px; } + #about .hexagon i { + font-size: 40pt; } + #portfolio .filter { + font-size: 11pt; + margin: 0 15px; + padding: 0 30px; } + #portfolio .float-bar { + height: 30px; } + #portfolio .gallery .mix .card { + width: 390px; + height: 300px; } + #experience .filter { + font-size: 11pt; + margin: 0 15px; + padding: 0 30px; } + #experience .float-bar { + height: 30px; } + #experience .gallery .mix .card { + width: 390px; + height: 300px; } + #blog { + padding: 130px 0 180px 0; } + #blog #medium-content{ + margin: 0 15px; + } + #blog .label { + line-height: 22pt; + font-size: 16pt; } + #blog .date { + font-size: 8.5pt; } + #blog .bar { + margin: 15px 0px; } + #blog .text { + font-size: 11pt; + line-height: 15pt; } + #blog .blog-wrap { + width: 400px; } + #blog .thumb { + height: 200px; } + + #tutorials { + padding: 130px 0 180px 0; } + #tutorials .flex.row-gt-sm{ + margin: 0 15px; + } + #tutorials .label { + line-height: 22pt; + font-size: 16pt; } + #tutorials .date { + font-size: 8.5pt; } + #tutorials .bar { + margin: 15px 0px; } + #tutorials .text { + font-size: 11pt; + line-height: 15pt; } + #tutorials .blog-wrap { + width: 400px; } + #tutorials .thumb { + height: 200px; } + + #contact form { + min-width: 500px; } } +@media screen and (min-width: 960px) { + .waypoint { + opacity: 0; } + + .animated.waypoint.gallery { + opacity: 1; } + .animated.waypoint.gallery .mix:nth-child(1) > div { + opacity: 0; + animation: slideUp 0.75s 0.1s ease both; } + .animated.waypoint.gallery .mix:nth-child(2) > div { + opacity: 0; + animation: slideUp 0.75s 0.2s ease both; } + .animated.waypoint.gallery .mix:nth-child(3) > div { + opacity: 0; + animation: slideUp 0.75s 0.3s ease both; } + .animated.waypoint.gallery .mix:nth-child(4) > div { + opacity: 0; + animation: slideUp 0.75s 0.4s ease both; } + .animated.waypoint.gallery .mix:nth-child(5) > div { + opacity: 0; + animation: slideUp 0.75s 0.5s ease both; } + .animated.waypoint.gallery .mix:nth-child(6) > div { + opacity: 0; + animation: slideUp 0.75s 0.6s ease both; } + .animated.waypoint.gallery .mix:nth-child(7) > div { + opacity: 0; + animation: slideUp 0.75s 0.7s ease both; } + .animated.waypoint.gallery .mix:nth-child(8) > div { + opacity: 0; + animation: slideUp 0.75s 0.8s ease both; } + .animated.waypoint.gallery .mix:nth-child(9) > div { + opacity: 0; + animation: slideUp 0.75s 0.9s ease both; } + .animated.waypoint.gallery .mix:nth-child(10) > div { + opacity: 0; + animation: slideUp 0.75s 0.10s ease both; } + .animated.waypoint.gallery .mix:nth-child(11) > div { + opacity: 0; + animation: slideUp 0.75s 0.11s ease both; } + .animated.waypoint.gallery .mix:nth-child(12) > div { + opacity: 0; + animation: slideUp 0.75s 0.12s ease both; } + + .animated.slide-up { + animation: slideUp .75s ease both; } + .animated.slide-down { + animation: slideDown .75s ease both; } + .animated.slide-in-left { + animation: slideInLeft .75s ease both; } + .animated.slide-in-right { + animation: slideInRight .75s ease both; } + .animated.flip-in-x { + animation: flipInX .75s ease both; } + .animated.fade-in { + animation: fadeIn .75s ease both; } + .animated.pop-in { + animation: popIn 1s both; } + + .canvas { + background: #252934; } + + .button { + font-size: 16pt; } + + .flex.row-gt-sm { + flex-direction: row; } + + .flex-50-gt-sm { + -webkit-flex: 1 1 50%; + -ms-flex: 1 1 50%; + flex: 1 1 50%; + max-width: 50%; + max-height: 100%; + box-sizing: border-box; } + + #personal-blog p { + font-size: 1.6rem; + } + + #about .bars-wrap { + margin: 0 0 0 0; } + #about .skills-wrapper { + margin: 50px 0 0 0; } + #about .skills-wrapper .me { + margin: 50px; } + #about .bar { + max-width: 90%; } + #about .bullet-wrap { + margin: 0; + padding: 0 10px; + height: intial; } + #portfolio .gallery .mix .card { + width: 390px; } + #portfolio .filter { + font-size: 13pt; + padding: 0 40px; + margin: 0 25px; } + #experience .gallery .mix .card { + width: 390px; } + #experience .filter { + font-size: 13pt; + padding: 0 40px; + margin: 0 25px; } + #blog .blog-wrap { + width: 400px; + margin: 0 0 50px 30px; } + #tutorials .blog-wrap { + width: 400px; + margin: 0 0 50px 30px; } + } + +@media screen and (min-width: 1280px) { + #blog .blog-wrap { + width: 500px; + margin: 0 0 50px 40px; + } + #tutorials .blog-wrap { + width: 500px; + margin: 0 0 50px 40px; + } + + #table-of-contents { + display: block; + } +} + +/*# sourceMappingURL=style.css.map */ +#testimonials img.avatar { + margin: 0px 20px 0 0; + border-radius: 50%; + width: 120px; + height: 120px; +} + + + + + +blockquote { + font-family: Georgia, serif; + font-size: 16px; + font-style: italic; + width: 300px; + margin: 0.25em 0; + padding: 0.35em 10px; + line-height: 1.45; + position: relative; + color: #383838; + text-align: center; +} + +blockquote:before { + display: block; + padding-left: 10px; + content: "\201C"; + font-size: 40px; + position: absolute; + left: -10px; + top: -10px; + color: #7a7a7a; +} + +#testimonials .testimonial-block { + width: 300px; + margin: 20px; + font-size: 1em; +} + +@media only screen and (max-width: 750px) { + .experience-timeline:before, .experience-timeline:after { + left: 23px; + } + .vtimeline-date { + width: auto; + text-align: left; + position: relative; + margin-bottom: 15px; + display: block; + margin-left: 70px; + } + .vtimeline-icon { + margin-left: 0; + } + .vtimeline-content { + margin-left: 70px; + } +} + +@media screen and (min-width: 600px){ + .post-container { + max-width: 640px; + font-size: 20px; + } + + #testimonials .testimonial-block { + width: 500px; + margin: 20px; + font-size: 1em; + } + blockquote { + font-family: Georgia, serif; + font-size: 18px; + font-style: italic; + width: 500px; + margin: 0.25em 0; + padding: 0.35em 10px; + line-height: 1.45; + position: relative; + color: #383838; + text-align: center; + } +} +