diff --git a/2017/05/10/about-me/index.html b/2017/05/10/about-me/index.html index 82d70b469..45ec5373c 100644 --- a/2017/05/10/about-me/index.html +++ b/2017/05/10/about-me/index.html @@ -480,10 +480,10 @@

Is there something after Computer Science?

to start again to make some signatures on my skin emoji-relieved). I also really like to go with my bicycle. I could say I'm some sort of sportsman.

The presentation is over, and I hope you're not already bored.
-Enjoy the read.

stuff
+Enjoy the read.

stuff
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/05/12/github-pages-jekyll-blog-born/index.html b/2017/05/12/github-pages-jekyll-blog-born/index.html index 0ffd44553..9fa583ca1 100644 --- a/2017/05/12/github-pages-jekyll-blog-born/index.html +++ b/2017/05/12/github-pages-jekyll-blog-born/index.html @@ -411,10 +411,10 @@

In this way the pages load faster than light emoji-zap.
-That's it. My website + blog is up and running!!

web developmentgithub pagesjekyllnodegulpbootstrapthreejsjavascript
+That's it. My website + blog is up and running!!

web developmentgithub pagesjekyllnodegulpbootstrapthreejsjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/05/13/first-threejs-scene/index.html b/2017/05/13/first-threejs-scene/index.html index f84e2fd55..45b20f265 100644 --- a/2017/05/13/first-threejs-scene/index.html +++ b/2017/05/13/first-threejs-scene/index.html @@ -724,10 +724,10 @@
You're now ready to conquer the web with Threejs!

You know three.js now. You're ready to conquer the web 3D world now emoji-smirk. Ah!! I was forgetting: you can find a live -demo of the scene we created on the homepage of my website.

computer graphicsthreejsweb developmentjavascript
+demo of the scene we created on the homepage of my website.

computer graphicsthreejsweb developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/06/02/swift-closure-syntax/index.html b/2017/06/02/swift-closure-syntax/index.html index 2ba401778..81dceb65f 100644 --- a/2017/06/02/swift-closure-syntax/index.html +++ b/2017/06/02/swift-closure-syntax/index.html @@ -372,10 +372,10 @@ ... }

There is also the possibility to use a shorthand for the parameter: you can call them using $ followed by the index of -the argument in the call. Last but not least, you can capture self and avoid retain cycle using [unowned self] before the parameters. Go and show to the world the power of closure in Swift!! emoji-sunglasses

swiftiosapplemobile application development
+the argument in the call. Last but not least, you can capture self and avoid retain cycle using [unowned self] before the parameters. Go and show to the world the power of closure in Swift!! emoji-sunglasses

swiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/06/14/swift-closure-demystifying-autoclosure-escaping/index.html b/2017/06/14/swift-closure-demystifying-autoclosure-escaping/index.html index 258626665..4e65b5fce 100644 --- a/2017/06/14/swift-closure-demystifying-autoclosure-escaping/index.html +++ b/2017/06/14/swift-closure-demystifying-autoclosure-escaping/index.html @@ -444,10 +444,10 @@ } }

You can download the complete example here.
-So basically: no if, no switch, only love emoji-heart for @autoclosure and @escaping emoji-heart_eyes.

swiftiosapplemobile application development
+So basically: no if, no switch, only love emoji-heart for @autoclosure and @escaping emoji-heart_eyes.

swiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/07/25/a-first-approach-to-contract-test/index.html b/2017/07/25/a-first-approach-to-contract-test/index.html index f2ad8a082..8e47f66db 100644 --- a/2017/07/25/a-first-approach-to-contract-test/index.html +++ b/2017/07/25/a-first-approach-to-contract-test/index.html @@ -434,10 +434,10 @@ Wonderful emoji-open_mouthemoji-heart_eyes!!!
Here you can find the complete example (a Maven project developed using IntelliJ, JUnit4, Mockito).
-It's time for you to test contract test on your project emoji-joyemoji-laughing!!!

test driven developmentjava
+It's time for you to test contract test on your project emoji-joyemoji-laughing!!!

test driven developmentjava
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/07/26/phong-lighting-model/index.html b/2017/07/26/phong-lighting-model/index.html index c39314638..77a42cc35 100644 --- a/2017/07/26/phong-lighting-model/index.html +++ b/2017/07/26/phong-lighting-model/index.html @@ -454,10 +454,10 @@

Specular component

An example model rendered using Phong model in Spectral BRDF explorer
-

computer graphics
+

computer graphics
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/08/11/model-view-presenter-architecture-ios-swift-unit-test/index.html b/2017/08/11/model-view-presenter-architecture-ios-swift-unit-test/index.html index 2769e06e5..165a7bd0c 100644 --- a/2017/08/11/model-view-presenter-architecture-ios-swift-unit-test/index.html +++ b/2017/08/11/model-view-presenter-architecture-ios-swift-unit-test/index.html @@ -873,10 +873,10 @@

Time to try it yourself in one of your project. If you wanna review the complete project code you can check this Github repository -.

swiftiosapplemobile application developmenttest driven developmentarchitectural pattern
+.

swiftiosapplemobile application developmenttest driven developmentarchitectural pattern
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/08/25/how-to-calculate-reflection-vector/index.html b/2017/08/25/how-to-calculate-reflection-vector/index.html index 9fb5e7ca0..d96ce7b27 100644 --- a/2017/08/25/how-to-calculate-reflection-vector/index.html +++ b/2017/08/25/how-to-calculate-reflection-vector/index.html @@ -419,10 +419,10 @@
R^=(L^N^)N^L^+(L^N^)N^{\hat {R}} = ({\hat {L}} \cdot {\hat {N}}){\hat {N}} - {\hat {L}} + ({\hat {L}} \cdot {\hat {N}}){\hat {N}}
R=2(N^L^)N^L^R = 2({\hat{N}}\cdot{\hat{L}}){\hat{N}} - {\hat{L}}

That's it!! We get our formula. Now you're ready to understand in -detail the "magic" of the Phong lighting model emoji-relaxed.

computer graphics
+detail the "magic" of the Phong lighting model emoji-relaxed.

computer graphics
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/09/11/clean-code-meaningful-names/index.html b/2017/09/11/clean-code-meaningful-names/index.html index 5bb15affc..9345bfc16 100644 --- a/2017/09/11/clean-code-meaningful-names/index.html +++ b/2017/09/11/clean-code-meaningful-names/index.html @@ -482,10 +482,10 @@

Clean Code reads like a well-written prose.

-

Choosing the right names is the first step to make your code more similar to a well-written prose.

clean code
+

Choosing the right names is the first step to make your code more similar to a well-written prose.

clean code
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/10/27/model-view-presenter-architecture-android-java/index.html b/2017/10/27/model-view-presenter-architecture-android-java/index.html index 7fac953af..b8fb32984 100644 --- a/2017/10/27/model-view-presenter-architecture-android-java/index.html +++ b/2017/10/27/model-view-presenter-architecture-android-java/index.html @@ -1040,10 +1040,10 @@
Chuck Norris approves the Model View Presenter architectural pattern
-

androidjavamobile application developmenttest driven developmentarchitectural pattern
+

androidjavamobile application developmenttest driven developmentarchitectural pattern
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/11/14/react-native-realm-custom-manual-linking-app-custom-directories-ios/index.html b/2017/11/14/react-native-realm-custom-manual-linking-app-custom-directories-ios/index.html index eb0ad629a..73c0dca27 100644 --- a/2017/11/14/react-native-realm-custom-manual-linking-app-custom-directories-ios/index.html +++ b/2017/11/14/react-native-realm-custom-manual-linking-app-custom-directories-ios/index.html @@ -865,10 +865,10 @@

That's it!! As I told you before you can find the complete example in this github repo. We are -now ready to create our React Native component with realm emoji-bowtie.

react nativerealmswiftiosapplemobile application developmentjavascript
+now ready to create our React Native component with realm emoji-bowtie.

react nativerealmswiftiosapplemobile application developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/12/07/physically-base-rendering-introduction/index.html b/2017/12/07/physically-base-rendering-introduction/index.html index 129d76099..70cedc77d 100644 --- a/2017/12/07/physically-base-rendering-introduction/index.html +++ b/2017/12/07/physically-base-rendering-introduction/index.html @@ -484,10 +484,10 @@

Physically Based Rendering

2nd Edition ed., Burlington, Massachusetts: Morgan Kaufmann, 2010, ch. 5, pp. 261-297.
[2] J. T. Kajiya, “The Rendering Equation,” in SIGGRAPH '86, Dallas, 1986, pp. 143-150.
[3] M. Pharr and G. Humphreys, “Light transport I: surface reflection,” in Physically based rendering: from theory to -implementation, 2nd ed., Burlington, Morgan Kaufmann, 2010, ch. 15, pp. 760-770.

computer graphicsphysically based rendering
+implementation, 2nd ed., Burlington, Morgan Kaufmann, 2010, ch. 15, pp. 760-770.

computer graphicsphysically based rendering
- \ No newline at end of file + \ No newline at end of file diff --git a/2017/12/08/react-native-multiple-instance-rctrootview/index.html b/2017/12/08/react-native-multiple-instance-rctrootview/index.html index 27026f3b5..11fdbe041 100644 --- a/2017/12/08/react-native-multiple-instance-rctrootview/index.html +++ b/2017/12/08/react-native-multiple-instance-rctrootview/index.html @@ -585,10 +585,10 @@ >

The entire source code of the app used as example for this post is contained in this github repo. -Now we're ready to use multiple React Native components at the same time in our app emoji-relieved.

react nativeswiftobjective-ciosapplemobile application developmentjavascript
+Now we're ready to use multiple React Native components at the same time in our app emoji-relieved.

react nativeswiftobjective-ciosapplemobile application developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/01/03/scene-kit-physically-based-rendering/index.html b/2018/01/03/scene-kit-physically-based-rendering/index.html index 85df51adb..ae9dd06f1 100644 --- a/2018/01/03/scene-kit-physically-based-rendering/index.html +++ b/2018/01/03/scene-kit-physically-based-rendering/index.html @@ -794,10 +794,10 @@

That's it!! You've made it!! Now you can show to your friends your physically based scene and be proud of it : sunglasses:. You can find this example with other scenes -in this github repository.

computer graphicsphysically based renderingswiftiosapplemobile application development
+in this github repository.

computer graphicsphysically based renderingswiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/01/16/ide-refactoring-android-studio-xcode-appcode-webstorm-jetbrains/index.html b/2018/01/16/ide-refactoring-android-studio-xcode-appcode-webstorm-jetbrains/index.html index 78f51d269..4c4d13f64 100644 --- a/2018/01/16/ide-refactoring-android-studio-xcode-appcode-webstorm-jetbrains/index.html +++ b/2018/01/16/ide-refactoring-android-studio-xcode-appcode-webstorm-jetbrains/index.html @@ -449,10 +449,10 @@

Final thoughts

So no worries: if you want to start to improve you coding speed probably there's an IDE for your favourite language. Xcode will always have a special place in my heart. I will still continue to use it in my daily job as a mobile developer. But... the coding speed I gained with the JetBrains IDEs could not be ignored emoji-smiling_imp. This is why I -started to prefer them emoji-heart.

IDEandroidjavaiosswiftmobile application development
+started to prefer them emoji-heart.

IDEandroidjavaiosswiftmobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/01/31/blender-tutorial-1-user-interface/index.html b/2018/01/31/blender-tutorial-1-user-interface/index.html index e3e06cc76..b4de25e29 100644 --- a/2018/01/31/blender-tutorial-1-user-interface/index.html +++ b/2018/01/31/blender-tutorial-1-user-interface/index.html @@ -507,10 +507,10 @@

To be noted is the option "Emulate 3 Button mouse" in the input settings. This option let Blender emulates a 3 button mouse using the Alt button. Int this way you can use this setting to use Blender with standard keys for mouse.
-That's enough first post. See you in the second tutorial about selecting and translating objects.

computer graphicsblender
+That's enough first post. See you in the second tutorial about selecting and translating objects.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/02/08/react-native-debug-on-device-rctbundleurlprovider/index.html b/2018/02/08/react-native-debug-on-device-rctbundleurlprovider/index.html index cf3c8f27e..842b3f2db 100644 --- a/2018/02/08/react-native-debug-on-device-rctbundleurlprovider/index.html +++ b/2018/02/08/react-native-debug-on-device-rctbundleurlprovider/index.html @@ -682,10 +682,10 @@

This basically means that xip.io is a domain name we can use to access our local packager environment on our mac from our iPhone and iPad, based on the fact that the devices are all on the same network. That's all, and as you can see -everything works "like magic" emoji-relaxed.

react nativeswiftiosapplemobile application developmentjavascript
+everything works "like magic" emoji-relaxed.

react nativeswiftiosapplemobile application developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/02/17/blender-tutorial-2-selecting-transforming-objects/index.html b/2018/02/17/blender-tutorial-2-selecting-transforming-objects/index.html index 5734b841b..8b14dbe45 100644 --- a/2018/02/17/blender-tutorial-2-selecting-transforming-objects/index.html +++ b/2018/02/17/blender-tutorial-2-selecting-transforming-objects/index.html @@ -627,10 +627,10 @@
Pivot Change

That's all for selection and transform of objects. In the next post we will start to explore the art of modeling in -Blender.

computer graphicsblender
+Blender.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/03/02/code-review-whats-it-is-and-why-it-is-important/index.html b/2018/03/02/code-review-whats-it-is-and-why-it-is-important/index.html index 5b5b67515..a254efc9e 100644 --- a/2018/03/02/code-review-whats-it-is-and-why-it-is-important/index.html +++ b/2018/03/02/code-review-whats-it-is-and-why-it-is-important/index.html @@ -780,10 +780,10 @@

That's all for code review. I hope you understood how much important it is to do it and how much your codebase can improve if you use code review as a validation tool and as a tool to find new refactoring opportunities (anyway, I hope -Angelo will never be your reviewer emoji-laughingemoji-sparkling_heart).

agileclean codetest driven development
+Angelo will never be your reviewer emoji-laughingemoji-sparkling_heart).

agileclean codetest driven development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/03/20/golden-master-test-characterization-test-legacy-code/index.html b/2018/03/20/golden-master-test-characterization-test-legacy-code/index.html index c704556f5..7fb1465e8 100644 --- a/2018/03/20/golden-master-test-characterization-test-legacy-code/index.html +++ b/2018/03/20/golden-master-test-characterization-test-legacy-code/index.html @@ -570,10 +570,10 @@ named "property testing": a lot of random input are generated so that there will be an high probability to execute all the possible branch in our source code (and in this way have a higher test coverage). So we put our TravelsAdapter under test and we can now start to work on this class without any kind of risk emoji-relieved. Now it's time to test this -technique in your legacy code emoji-grin.

test driven developmentagileclean code
+technique in your legacy code emoji-grin.

test driven developmentagileclean code
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/04/03/blender-tutorial-3-modeling-basics-part-1/index.html b/2018/04/03/blender-tutorial-3-modeling-basics-part-1/index.html index 3b27ae90f..97d06edc1 100644 --- a/2018/04/03/blender-tutorial-3-modeling-basics-part-1/index.html +++ b/2018/04/03/blender-tutorial-3-modeling-basics-part-1/index.html @@ -550,10 +550,10 @@
Two meshes modified with and without the proportional editing enable

-

In the next post we will continue to talk about the fundamental of modeling.

computer graphicsblender
+

In the next post we will continue to talk about the fundamental of modeling.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/04/25/clean-code-objects-data-structures-law-demeter/index.html b/2018/04/25/clean-code-objects-data-structures-law-demeter/index.html index aeee715d6..a5897f4aa 100644 --- a/2018/04/25/clean-code-objects-data-structures-law-demeter/index.html +++ b/2018/04/25/clean-code-objects-data-structures-law-demeter/index.html @@ -414,10 +414,10 @@
Uncle bob, the superman of clean code
-

clean code
+

clean code
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/05/07/born-id3tageditor-mp3id3tagger/index.html b/2018/05/07/born-id3tageditor-mp3id3tagger/index.html index 8b78c7238..f18e033fe 100644 --- a/2018/05/07/born-id3tageditor-mp3id3tagger/index.html +++ b/2018/05/07/born-id3tageditor-mp3id3tagger/index.html @@ -560,10 +560,10 @@
The Mp3ID3Tagger and ID3TagEditor icons

I hope you will see how much love and passion I put into this projects and I also hope you will find all the technical -details inside them interesting emoji-sparkling_heart.

swiftiosapplemobile application developmentmacos
+details inside them interesting emoji-sparkling_heart.

swiftiosapplemobile application developmentmacos
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/05/08/id3tageditor-swift-read-write-id3-tag-mp3/index.html b/2018/05/08/id3tageditor-swift-read-write-id3-tag-mp3/index.html index 4532c0041..63d326e93 100644 --- a/2018/05/08/id3tageditor-swift-read-write-id3-tag-mp3/index.html +++ b/2018/05/08/id3tageditor-swift-read-write-id3-tag-mp3/index.html @@ -791,10 +791,10 @@ framework you can have a look at my github repo and start to make some contribution emoji-heartemoji-purple_heart. Obviously, you must also continue to read my blog and wait for the other posts about other implementation details I promised above (if you're too lazy to go see by yourself : -kissing_heart:emoji-satisfied).

swiftiosapplemobile application developmentmacostvoswatchos
+kissing_heart:emoji-satisfied).

swiftiosapplemobile application developmentmacostvoswatchos
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/05/09/mp3id3tagger-macos-tag-mp3-id3-rxswift-rxcocoa/index.html b/2018/05/09/mp3id3tagger-macos-tag-mp3-id3-rxswift-rxcocoa/index.html index 8f58f20ea..fbea48e15 100644 --- a/2018/05/09/mp3id3tagger-macos-tag-mp3-id3-rxswift-rxcocoa/index.html +++ b/2018/05/09/mp3id3tagger-macos-tag-mp3-id3-rxswift-rxcocoa/index.html @@ -949,10 +949,10 @@ of RxSwift and RxCocoa emoji-sunglassesemoji-relieved. Obviously don't forget to see the official Mp3ID3Tagger repo and obviously to download the Mp3ID3Tagger app from this link -and use it!!! emoji-heartpulseemoji-sparkling_heart

swiftmacosapplerxswiftrxcocoa
+and use it!!! emoji-heartpulseemoji-sparkling_heart

swiftmacosapplerxswiftrxcocoa
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/06/01/async-closure-test-mock-expectation-fulfill/index.html b/2018/06/01/async-closure-test-mock-expectation-fulfill/index.html index e2d4661d1..f84ef84cd 100644 --- a/2018/06/01/async-closure-test-mock-expectation-fulfill/index.html +++ b/2018/06/01/async-closure-test-mock-expectation-fulfill/index.html @@ -494,10 +494,10 @@ a little bit with expectations and implement complex patterns to verify your closure. You can find the complete example discussed above here. -Expectation: your true friend for asynchronous code testing emoji-heart.

swiftiosapplemobile application developmenttest driven development
+Expectation: your true friend for asynchronous code testing emoji-heart.

swiftiosapplemobile application developmenttest driven development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/06/02/blender-tutorial-4-modeling-basics-part-2/index.html b/2018/06/02/blender-tutorial-4-modeling-basics-part-2/index.html index 0c1da06b2..41a039301 100644 --- a/2018/06/02/blender-tutorial-4-modeling-basics-part-2/index.html +++ b/2018/06/02/blender-tutorial-4-modeling-basics-part-2/index.html @@ -507,10 +507,10 @@
Subdivision of a mesh

Remember: each number of cuts increment QUADRUPLICATE the number of polygon in your mesh.
-In the next chapter we will talk about advanced modeling techniques and tools.

computer graphicsblender
+In the next chapter we will talk about advanced modeling techniques and tools.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/07/04/react-native-typescript-existing-app/index.html b/2018/07/04/react-native-typescript-existing-app/index.html index dc332ed78..3d82b76a6 100644 --- a/2018/07/04/react-native-typescript-existing-app/index.html +++ b/2018/07/04/react-native-typescript-existing-app/index.html @@ -678,6 +678,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/2018/07/05/distribution-enterprise-app-ios-beta/index.html b/2018/07/05/distribution-enterprise-app-ios-beta/index.html index ca6c474a0..bf2bc0b82 100644 --- a/2018/07/05/distribution-enterprise-app-ios-beta/index.html +++ b/2018/07/05/distribution-enterprise-app-ios-beta/index.html @@ -739,10 +739,10 @@
You need to accept the developer certificate before using the app

That's it!!! Go to your boss and tell her/him you're ready to create you custom iOS beta internal program!!! : -sunglasses:emoji-apple

swiftiosapplemobile application development
+sunglasses:emoji-apple

swiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/08/02/design-thinking-design-sprint-workshop/index.html b/2018/08/02/design-thinking-design-sprint-workshop/index.html index 6767120f7..6e36e4310 100644 --- a/2018/08/02/design-thinking-design-sprint-workshop/index.html +++ b/2018/08/02/design-thinking-design-sprint-workshop/index.html @@ -632,6 +632,6 @@

Conclusion

- \ No newline at end of file + \ No newline at end of file diff --git a/2018/08/21/blender-tutorial-5-advanced-modeling/index.html b/2018/08/21/blender-tutorial-5-advanced-modeling/index.html index 1e6fb0f59..b93a3aa1f 100644 --- a/2018/08/21/blender-tutorial-5-advanced-modeling/index.html +++ b/2018/08/21/blender-tutorial-5-advanced-modeling/index.html @@ -881,10 +881,10 @@
The vertex group tool

-

In the next post we will discuss about outliner, layers, groups, hierarchies and scenes.

computer graphicsblender
+

In the next post we will discuss about outliner, layers, groups, hierarchies and scenes.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/09/09/ios-notification-content-extensions/index.html b/2018/09/09/ios-notification-content-extensions/index.html index d8ef8a63c..fd1d86a6d 100644 --- a/2018/09/09/ios-notification-content-extensions/index.html +++ b/2018/09/09/ios-notification-content-extensions/index.html @@ -550,10 +550,10 @@ sandbox="allow-same-origin allow-scripts allow-popups" >

-

That's all for Notification Content App Extension on iOS. Let's start to test them in your app emoji-relaxed.

swiftiosapplemobile application development
+

That's all for Notification Content App Extension on iOS. Let's start to test them in your app emoji-relaxed.

swiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/09/18/refactoring-if-chain-of-responsibility/index.html b/2018/09/18/refactoring-if-chain-of-responsibility/index.html index be660ba9f..e08630914 100644 --- a/2018/09/18/refactoring-if-chain-of-responsibility/index.html +++ b/2018/09/18/refactoring-if-chain-of-responsibility/index.html @@ -1682,10 +1682,10 @@
Conclusion
classes, loop over it by using the first item of the list that is able to handle the case you are dealing with, inject the list of classes in order to make the class work with any combination of rules that you want. Additionally, we saw some features of Idea IDE that allow us to perform most of the refactoring operations automatically, with only a few -shortcuts.

clean code
+shortcuts.

clean code
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/10/18/blender-tutorial-6-outliner-layers-groups-hierarchies-scenes/index.html b/2018/10/18/blender-tutorial-6-outliner-layers-groups-hierarchies-scenes/index.html index 6d2c5b885..43b615f71 100644 --- a/2018/10/18/blender-tutorial-6-outliner-layers-groups-hierarchies-scenes/index.html +++ b/2018/10/18/blender-tutorial-6-outliner-layers-groups-hierarchies-scenes/index.html @@ -541,6 +541,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/2018/11/01/react-native-typescript-conference-voxxed-2018/index.html b/2018/11/01/react-native-typescript-conference-voxxed-2018/index.html index 3968d4384..e0143e9f3 100644 --- a/2018/11/01/react-native-typescript-conference-voxxed-2018/index.html +++ b/2018/11/01/react-native-typescript-conference-voxxed-2018/index.html @@ -602,10 +602,10 @@

Conclusion

allowfullscreen sandbox="allow-same-origin allow-scripts allow-popups" > -

conferencereact nativereacttypescriptmobile application developmentweb development
+

conferencereact nativereacttypescriptmobile application developmentweb development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/12/02/react-native-modules-bridge-communication-activitiy-fragment-android/index.html b/2018/12/02/react-native-modules-bridge-communication-activitiy-fragment-android/index.html index dd7160195..3b24d910c 100644 --- a/2018/12/02/react-native-modules-bridge-communication-activitiy-fragment-android/index.html +++ b/2018/12/02/react-native-modules-bridge-communication-activitiy-fragment-android/index.html @@ -509,10 +509,10 @@

That's all for our native modules communication architecture on Android. You can find the complete example in this github repository. If you want to know how we managed the same problem on the iOS platform emoji-appleemoji-iphoneemoji-heartbeat you can -read my other post about the same topic.

react nativejavascriptswiftobjective-ciosappleandroidjavamobile application development
+read my other post about the same topic.

react nativejavascriptswiftobjective-ciosappleandroidjavamobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2018/12/03/react-native-modules-bridge-communication-uiviewcontroller-ios/index.html b/2018/12/03/react-native-modules-bridge-communication-uiviewcontroller-ios/index.html index 53fe51481..64d7da774 100644 --- a/2018/12/03/react-native-modules-bridge-communication-uiviewcontroller-ios/index.html +++ b/2018/12/03/react-native-modules-bridge-communication-uiviewcontroller-ios/index.html @@ -464,10 +464,10 @@

That's all for our native modules communication architecture iOS. You can find the complete example in this github repository. If you want to know how we managed the same problem on the Android platform emoji-rocket you can -read my other post about the same topic.

react nativejavascriptswiftobjective-ciosappleandroidjavamobile application development
+read my other post about the same topic.

react nativejavascriptswiftobjective-ciosappleandroidjavamobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/01/03/swift-package-manager-linux-macos-create-library-executable/index.html b/2019/01/03/swift-package-manager-linux-macos-create-library-executable/index.html index fe45e52bb..897f288be 100644 --- a/2019/01/03/swift-package-manager-linux-macos-create-library-executable/index.html +++ b/2019/01/03/swift-package-manager-linux-macos-create-library-executable/index.html @@ -604,10 +604,10 @@

Cool! Now the ID3TagEditor is fully compatible with the SPM and could be used in Swift applications for both macOS and Linux. You can see the entire codebase of the ID3TagEditor in this github repository. Now you can start to port your libraries and -applications on Linux with the Swift Package Manager emoji-sparkles.

swiftobjective-ciosappleswift package manager
+applications on Linux with the Swift Package Manager emoji-sparkles.

swiftobjective-ciosappleswift package manager
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/02/08/mobile-ui-test-crossplatform-appium/index.html b/2019/02/08/mobile-ui-test-crossplatform-appium/index.html index 6fb36c9e2..c82484dd9 100644 --- a/2019/02/08/mobile-ui-test-crossplatform-appium/index.html +++ b/2019/02/08/mobile-ui-test-crossplatform-appium/index.html @@ -479,10 +479,10 @@

Development

npm run test

This job is automatically triggered (cron) every day at 8 PM. That's it!!! This is how we tested our apps with Appium. That's all for appium and mobile end to end tests. If you have any question don't hesitate to comment on this post -below emoji-sparkling_heart.

javascriptswiftobjective-ciosappleandroidjavamobile application developmentreact nativetest driven development
+below emoji-sparkling_heart.

javascriptswiftobjective-ciosappleandroidjavamobile application developmentreact nativetest driven development
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/03/github-pages-progressive-web-app/index.html b/2019/03/03/github-pages-progressive-web-app/index.html index 557bb8d30..cc098a2f0 100644 --- a/2019/03/03/github-pages-progressive-web-app/index.html +++ b/2019/03/03/github-pages-progressive-web-app/index.html @@ -577,10 +577,10 @@

Conclusion

part of a PWA emoji-smirk). If you want to see the entire source code of my website/blog discussed here you can have a look at this repository.
So now it's time to start to develop you first PWA or transform you website/ web application in PWA. If you want, you -could share your experience with me in the comments below emoji-two_hearts.

pwaweb developmentjavascript
+could share your experience with me in the comments below emoji-two_hearts.

pwaweb developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/21/blender-tutorial-7-materials/index.html b/2019/03/21/blender-tutorial-7-materials/index.html index bfa1cd005..42efa6724 100644 --- a/2019/03/21/blender-tutorial-7-materials/index.html +++ b/2019/03/21/blender-tutorial-7-materials/index.html @@ -774,10 +774,10 @@
Subsurface scattering

-

In the next post we will talk about textures.

computer graphicsblender
+

In the next post we will talk about textures.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/22/blender-tutorial-8-textures-part-1/index.html b/2019/03/22/blender-tutorial-8-textures-part-1/index.html index abb30b243..1730d35d1 100644 --- a/2019/03/22/blender-tutorial-8-textures-part-1/index.html +++ b/2019/03/22/blender-tutorial-8-textures-part-1/index.html @@ -672,10 +672,10 @@
Blender uv projection

-

In the next post we will talk about other textures technique available in Blender.

computer graphicsblender
+

In the next post we will talk about other textures technique available in Blender.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/23/blender-tutorial-9-textures-part-2/index.html b/2019/03/23/blender-tutorial-9-textures-part-2/index.html index df678898b..a4c10d316 100644 --- a/2019/03/23/blender-tutorial-9-textures-part-2/index.html +++ b/2019/03/23/blender-tutorial-9-textures-part-2/index.html @@ -454,10 +454,10 @@
The node editor

-

In the next post we will talk about light.

computer graphicsblender
+

In the next post we will talk about light.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/24/blender-tutorial-10-light-part-1/index.html b/2019/03/24/blender-tutorial-10-light-part-1/index.html index 84f3fcff7..204d22ab0 100644 --- a/2019/03/24/blender-tutorial-10-light-part-1/index.html +++ b/2019/03/24/blender-tutorial-10-light-part-1/index.html @@ -652,10 +652,10 @@
An area lamps

-

In the next post we will talk about how to do other cool stuff with lights in Blender.

computer graphicsblender
+

In the next post we will talk about how to do other cool stuff with lights in Blender.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/25/blender-tutorial-11-light-part-2/index.html b/2019/03/25/blender-tutorial-11-light-part-2/index.html index 59f9b1c1c..6208fc1ea 100644 --- a/2019/03/25/blender-tutorial-11-light-part-2/index.html +++ b/2019/03/25/blender-tutorial-11-light-part-2/index.html @@ -466,10 +466,10 @@
Add ambient occlusion environment lighting

-

In the next post about Blender we will talk about cameras and rendering.

computer graphicsblender
+

In the next post about Blender we will talk about cameras and rendering.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/26/blender-tutorial-12-camera-rendering/index.html b/2019/03/26/blender-tutorial-12-camera-rendering/index.html index 6d2a30b9c..bdf78428d 100644 --- a/2019/03/26/blender-tutorial-12-camera-rendering/index.html +++ b/2019/03/26/blender-tutorial-12-camera-rendering/index.html @@ -685,10 +685,10 @@
The depth of field final result

-

That's all for camera and rendering. In the next post we will talk about animation.

computer graphicsblender
+

That's all for camera and rendering. In the next post we will talk about animation.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/27/blender-tutorial-13-animation/index.html b/2019/03/27/blender-tutorial-13-animation/index.html index 03cfb9c6e..4e1c506df 100644 --- a/2019/03/27/blender-tutorial-13-animation/index.html +++ b/2019/03/27/blender-tutorial-13-animation/index.html @@ -625,10 +625,10 @@
Set path constraint

-

That's all for animation. In the next post we will talk about character rigging.

computer graphicsblender
+

That's all for animation. In the next post we will talk about character rigging.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/28/blender-tutorial-14-armatures-character-rigging/index.html b/2019/03/28/blender-tutorial-14-armatures-character-rigging/index.html index c5e1c3001..61d2f054c 100644 --- a/2019/03/28/blender-tutorial-14-armatures-character-rigging/index.html +++ b/2019/03/28/blender-tutorial-14-armatures-character-rigging/index.html @@ -541,10 +541,10 @@ sandbox="allow-same-origin allow-scripts allow-popups" >

-

That's all for character rigging. In the next post we will talk about the rendering engine Cycles.

computer graphicsblender
+

That's all for character rigging. In the next post we will talk about the rendering engine Cycles.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/03/29/blender-tutorial-15-cycles/index.html b/2019/03/29/blender-tutorial-15-cycles/index.html index 70a39f214..69dc99e49 100644 --- a/2019/03/29/blender-tutorial-15-cycles/index.html +++ b/2019/03/29/blender-tutorial-15-cycles/index.html @@ -435,10 +435,10 @@

We can also use ambient occlusion to improve the realism of light. We can activate it like we did before under the World tab in the properties. That's all my friends for Blender. This was the last post for the "Blender tutorial" series. I -hope you enjoyed these series of tutorials about Blender.

computer graphicsblender
+hope you enjoyed these series of tutorials about Blender.

computer graphicsblender
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/04/07/flow-javascript-types-typescript/index.html b/2019/04/07/flow-javascript-types-typescript/index.html index 38a196023..8b7c63f7f 100644 --- a/2019/04/07/flow-javascript-types-typescript/index.html +++ b/2019/04/07/flow-javascript-types-typescript/index.html @@ -562,10 +562,10 @@

Flow vs TypeScript

Conclusion

This is my experience with Flow. In the end I think it's a good alternative to TypeScript, especially for the "true pure -javascript lovers". Let me know in the comments if you like it emoji-cupid or if you prefer TypeScript emoji-smiling_imp.

web developmentjavascripttypescript
+javascript lovers". Let me know in the comments if you like it emoji-cupid or if you prefer TypeScript emoji-smiling_imp.

web developmentjavascripttypescript
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/05/08/intersection-observer/index.html b/2019/05/08/intersection-observer/index.html index 9c639161b..7e70347eb 100644 --- a/2019/05/08/intersection-observer/index.html +++ b/2019/05/08/intersection-observer/index.html @@ -486,10 +486,10 @@

Conclusion

developer, I'm still following the iOS, Android and React Native scene and I'm still studying all the new tools and SDKs improvement released by Apple, Google and Facebook. But, you know, technology goes fast I have to be prepared for the future emoji-relaxed. Sooo, long live Intersection Observer!!! Web applications will be much more performant with your -help emoji-green_heart.

web developmentjavascripttypescript
+help emoji-green_heart.

web developmentjavascripttypescript
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/06/13/google-play-store-publish-pwa/index.html b/2019/06/13/google-play-store-publish-pwa/index.html index 26a8bd679..d84ce4421 100644 --- a/2019/06/13/google-play-store-publish-pwa/index.html +++ b/2019/06/13/google-play-store-publish-pwa/index.html @@ -705,10 +705,10 @@

Implementation

sandbox="allow-same-origin allow-scripts allow-popups" >

-

Go and download it immediately emoji-cupid!!!!

androidpwajavamobile application developmentweb developmentjavascript
+

Go and download it immediately emoji-cupid!!!!

androidpwajavamobile application developmentweb developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/07/28/clean-code-functions/index.html b/2019/07/28/clean-code-functions/index.html index 2a97623b9..f6f574f91 100644 --- a/2019/07/28/clean-code-functions/index.html +++ b/2019/07/28/clean-code-functions/index.html @@ -441,10 +441,10 @@

"Don't repeat yourself"

Conclusion

That's all for Uncle Bob and functions. If you didn't read yet Uncle Bob "Clean Code" book it's time to catch up the gap -and get a copy for yourself emoji-sparkling_heart.

clean code
+and get a copy for yourself emoji-sparkling_heart.

clean code
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/08/03/html-javascript-to-native-communication-ios/index.html b/2019/08/03/html-javascript-to-native-communication-ios/index.html index 5d2fd2ac4..320af4dc2 100644 --- a/2019/08/03/html-javascript-to-native-communication-ios/index.html +++ b/2019/08/03/html-javascript-to-native-communication-ios/index.html @@ -494,10 +494,10 @@

Implementation

Conclusion

The WKWebView and the WKScriptMessageHandler are really powerful. They let you implement a deeper web to native integration that could significantly improve the general user experiences. WKScriptMessageHandler, another useful tool -in the toolbox of every iOS Developer emoji-iphone.

swiftobjective-ciosapplemobile application developmentjavascriptweb development
+in the toolbox of every iOS Developer emoji-iphone.

swiftobjective-ciosapplemobile application developmentjavascriptweb development
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/09/06/html-javascript-to-native-communication-android/index.html b/2019/09/06/html-javascript-to-native-communication-android/index.html index 52167f68c..25ad1aea1 100644 --- a/2019/09/06/html-javascript-to-native-communication-android/index.html +++ b/2019/09/06/html-javascript-to-native-communication-android/index.html @@ -420,10 +420,10 @@

Implementation

Conclusion

The JavascriptInterface is really powerful. It lets you implement a deeper web to native integration that could significantly improve the general user experiences. JavascriptInterface, the best web to native integration for : -robot: Android :robot:.

androidjavamobile application developmentjavascriptweb development
+robot: Android :robot:.

androidjavamobile application developmentjavascriptweb development
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/11/16/pull-to-refresh-web/index.html b/2019/11/16/pull-to-refresh-web/index.html index f25ba8f58..c21f7afb3 100644 --- a/2019/11/16/pull-to-refresh-web/index.html +++ b/2019/11/16/pull-to-refresh-web/index.html @@ -745,10 +745,10 @@

Conclusion

difficult to create a pull to refresh UX that almost matches the experience given by a mobile native app. Service Workers, modern CSS and HTML and vanilla JavaScript let you create beautiful native alike experience that can make you user fall in love with you web product before they install your app emoji-heart (or maybe they will just stick to your site -because they hate mobile apps or because you hate mobile apps and you don't want to develop a new one emoji-smiley).

pwaweb developmentjavascript
+because they hate mobile apps or because you hate mobile apps and you don't want to develop a new one emoji-smiley).

pwaweb developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2019/12/15/pwa-offiline-tracking-google-analytics/index.html b/2019/12/15/pwa-offiline-tracking-google-analytics/index.html index 0ae7f5eae..1f98887a9 100644 --- a/2019/12/15/pwa-offiline-tracking-google-analytics/index.html +++ b/2019/12/15/pwa-offiline-tracking-google-analytics/index.html @@ -419,10 +419,10 @@

Conclusion

native development is closing more and more each day. You can already start to think about giving almost the same user experience to your user on all platforms (web and native). I will say a prayer for this end of the year: please Apple don't stay behind your competitor and remember what you said in 2008 (when web technologies where not as advanced as of -today) emoji-heart.

pwaweb developmentjavascript
+today) emoji-heart.

pwaweb developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/01/18/react-native-activate-hermes/index.html b/2020/01/18/react-native-activate-hermes/index.html index 7cfe6f1a8..f5247ae07 100644 --- a/2020/01/18/react-native-activate-hermes/index.html +++ b/2020/01/18/react-native-activate-hermes/index.html @@ -479,10 +479,10 @@

Implementation

Conclusion

Hermes is one of the cool new features contained in the new version of React Native emoji-sunglasses. Stay tuned for more updates and see how we are using all of them here -at lm group.

react nativeswiftiosappleandroidjavamobile application developmentjavascripttypescript
+at lm group.

react nativeswiftiosappleandroidjavamobile application developmentjavascripttypescript
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/03/06/custom-tabbar-swiftui/index.html b/2020/03/06/custom-tabbar-swiftui/index.html index b32e319ca..5544f936d 100644 --- a/2020/03/06/custom-tabbar-swiftui/index.html +++ b/2020/03/06/custom-tabbar-swiftui/index.html @@ -579,10 +579,10 @@

Conclusion

great job with SwiftUI and I hope that the framework will receive in the future updates all the missing UIKit pieces ( while still missing a lot of stuff on the web/Safari side). If you already used powerful declarative framework like React or React Native you will feel at home (seems like a copy of each -other emoji-blush). Stay tuned for other post about SwiftUI and Combine soon. emoji-heart.

swiftswiftuiiosapplemobile application development
+other emoji-blush). Stay tuned for other post about SwiftUI and Combine soon. emoji-heart.

swiftswiftuiiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/04/19/dependecy-injection-swift/index.html b/2020/04/19/dependecy-injection-swift/index.html index 0d878f3cb..8f8fbedc0 100644 --- a/2020/04/19/dependecy-injection-swift/index.html +++ b/2020/04/19/dependecy-injection-swift/index.html @@ -505,10 +505,10 @@

Conclusion

You can find all the code shown in this post in this Github repo. Remember: sometimes with a couple of classes you can avoid to import big frameworks and library into your projects. You -just need to study hard the languages and SDK fundamental. emoji-heartpulse

swiftiosapplemobile application development
+just need to study hard the languages and SDK fundamental. emoji-heartpulse

swiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/05/20/dark-mode-css-sass-scss/index.html b/2020/05/20/dark-mode-css-sass-scss/index.html index 7701d8e06..ade19fb4c 100644 --- a/2020/05/20/dark-mode-css-sass-scss/index.html +++ b/2020/05/20/dark-mode-css-sass-scss/index.html @@ -549,10 +549,10 @@

Implementation

Conclusion

Nowadays it is important to give to the user the best experience when they use your software. Dark mode is another step in this direction. By leveraging the power of tools like SASS you can implement a theme component in less then a hour. -Sooo now go and join the dark side (of themes). emoji-hearts

web developmentjavascriptpwa
+Sooo now go and join the dark side (of themes). emoji-hearts

web developmentjavascriptpwa
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/06/02/dynamic-imports-webpack-chunks/index.html b/2020/06/02/dynamic-imports-webpack-chunks/index.html index 558f2189d..4f8686a03 100644 --- a/2020/06/02/dynamic-imports-webpack-chunks/index.html +++ b/2020/06/02/dynamic-imports-webpack-chunks/index.html @@ -495,10 +495,10 @@

Implementation

Conclusion

Webpack is a wonderful tool. It gives you the ability to bundle your code, styles and resources with a lot of customization thanks to its powerful ecosystem of loaders and plugins. This has been another step to make this site a -true professional blog platform with a strong development toolchain. emoji-heart_eyes

web developmentjavascript
+true professional blog platform with a strong development toolchain. emoji-heart_eyes

web developmentjavascript
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/07/02/expose-uikit-to-swiftui/index.html b/2020/07/02/expose-uikit-to-swiftui/index.html index bbb2a885c..359beda18 100644 --- a/2020/07/02/expose-uikit-to-swiftui/index.html +++ b/2020/07/02/expose-uikit-to-swiftui/index.html @@ -495,10 +495,10 @@

Conclusion

hesitate to clone it and start to play with the example. UIViewRepresentable and UIViewControllerRepresentable are the tools provided by Apple to let you mix the power and versatility of UIKit with the declarative reactive approach of SwiftUI. I hope that in next future releases of the iOS SDK there will be no need to write this custom wrapper -components at least for all the standard UIKit components.

swiftiosapplemobile application development
+components at least for all the standard UIKit components.

swiftiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/08/07/webpack-workbox-service-worker-typescript/index.html b/2020/08/07/webpack-workbox-service-worker-typescript/index.html index 853473404..442154eff 100644 --- a/2020/08/07/webpack-workbox-service-worker-typescript/index.html +++ b/2020/08/07/webpack-workbox-service-worker-typescript/index.html @@ -655,10 +655,10 @@

Implementation

Conclusion

As you can see, writing a service worker with Typescript and Workbox is really easy. During the last time during my daily job I'm basically doing more and more web development instead of mobile apps. I feel like I'm almost reaching the -mythological status of the "fullstack developer". emoji-laughing Let's see what the future holds for me.

web developmentjavascriptpwa
+mythological status of the "fullstack developer". emoji-laughing Let's see what the future holds for me.

web developmentjavascriptpwa
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/10/19/swift-package-manager-resources/index.html b/2020/10/19/swift-package-manager-resources/index.html index ab5da7121..0901925aa 100644 --- a/2020/10/19/swift-package-manager-resources/index.html +++ b/2020/10/19/swift-package-manager-resources/index.html @@ -593,10 +593,10 @@

Conclusion

developers easier. Even if I still hope that Apple will finally fully embrace PWA ( so that a lot of useless shitty apps that can be web apps can disappear emoji-smirk), it's good to see that developers (of -true useful native apps emoji-grin) will enjoy in using these new tools to build their apps emoji-heart_eyes.

swiftiosapplemobile application developmentmacostvoswatchos
+true useful native apps emoji-grin) will enjoy in using these new tools to build their apps emoji-heart_eyes.

swiftiosapplemobile application developmentmacostvoswatchos
- \ No newline at end of file + \ No newline at end of file diff --git a/2020/12/23/rest-template-webclient-spring-boot/index.html b/2020/12/23/rest-template-webclient-spring-boot/index.html index 3ed583a90..c03e5e638 100644 --- a/2020/12/23/rest-template-webclient-spring-boot/index.html +++ b/2020/12/23/rest-template-webclient-spring-boot/index.html @@ -769,10 +769,10 @@

Conclusion

the company where I work, lastminute.com group to get out of from this mess. It was hard and it will still be really hard for a long time. In this mess I returned (again one more time in my career) to do some backend development and I started to learn Spring Boot. Let's see what the future holds -for me. emoji-muscleemoji-purple_heart

javakotlinspringspring bootbackendweb development
+for me. emoji-muscleemoji-purple_heart

javakotlinspringspring bootbackendweb development
- \ No newline at end of file + \ No newline at end of file diff --git a/2021/01/27/kotlin-junit5-mockk/index.html b/2021/01/27/kotlin-junit5-mockk/index.html index 267833593..870ef1ed5 100644 --- a/2021/01/27/kotlin-junit5-mockk/index.html +++ b/2021/01/27/kotlin-junit5-mockk/index.html @@ -773,10 +773,10 @@

Conclusion

in this github repository . As you can see from this post, my journey into the lastminute.com group backend is going on. Let's see if I can -bring you some other backend gems on this blog emoji-heartpulse (and I'm sure I will emoji-sunglasses).

javakotlintest driven development
+bring you some other backend gems on this blog emoji-heartpulse (and I'm sure I will emoji-sunglasses).

javakotlintest driven development
- \ No newline at end of file + \ No newline at end of file diff --git a/2021/03/08/ios-test-multiple-configuration-test-plan/index.html b/2021/03/08/ios-test-multiple-configuration-test-plan/index.html index 394ef2faa..8e2606993 100644 --- a/2021/03/08/ios-test-multiple-configuration-test-plan/index.html +++ b/2021/03/08/ios-test-multiple-configuration-test-plan/index.html @@ -654,10 +654,10 @@

Implementation

Conclusion

Test plan are the perfect tool that let you organize your tests in a better way. They will enable you to test only the application/framework part you're working on in order to have a faster tests feedback loop. So in case you need a range -sllider component, go on RangeUISlider github repository and check it out!! emoji-sunglasses. You won't regret.

swiftiosapplemobile application developmentmacostvoswatchos
+sllider component, go on RangeUISlider github repository and check it out!! emoji-sunglasses. You won't regret.

swiftiosapplemobile application developmentmacostvoswatchos
- \ No newline at end of file + \ No newline at end of file diff --git a/2021/05/31/swift-linux-test-local-ci-docker-container/index.html b/2021/05/31/swift-linux-test-local-ci-docker-container/index.html index b490b3e59..cfa6c4a5f 100644 --- a/2021/05/31/swift-linux-test-local-ci-docker-container/index.html +++ b/2021/05/31/swift-linux-test-local-ci-docker-container/index.html @@ -401,10 +401,10 @@

Implementation

swift build

Conclusion

Yes that's all for Swift testing on Linux locally and on Github Actions. I promised you it would have been a "quick -tips" post. emoji-stuck_out_tongue_closed_eyes I hope you will find it useful.

swiftiosapplemobile application developmentmacostvoswatchos
+tips" post. emoji-stuck_out_tongue_closed_eyes I hope you will find it useful.

swiftiosapplemobile application developmentmacostvoswatchos
- \ No newline at end of file + \ No newline at end of file diff --git a/2021/06/06/ddd-dictionary/index.html b/2021/06/06/ddd-dictionary/index.html index f976a7728..974b585bd 100644 --- a/2021/06/06/ddd-dictionary/index.html +++ b/2021/06/06/ddd-dictionary/index.html @@ -655,10 +655,10 @@

Event sourcing

Conclusion

If you came until here I hope you enjoyed the read, but more important that you found the answers you were searching for. If this post didn’t clarify your doubts, let me know in the comments, so that I can try to add what is missing and -improve it. emoji-kissing_heart

domain driven design
+improve it. emoji-kissing_heart

domain driven design
- \ No newline at end of file + \ No newline at end of file diff --git a/2021/11/05/contract-testing-asynchronous-messaging-pact-junit-mockk/index.html b/2021/11/05/contract-testing-asynchronous-messaging-pact-junit-mockk/index.html index 9594b1431..9db305ace 100644 --- a/2021/11/05/contract-testing-asynchronous-messaging-pact-junit-mockk/index.html +++ b/2021/11/05/contract-testing-asynchronous-messaging-pact-junit-mockk/index.html @@ -1067,10 +1067,10 @@

Conclusion

Github repository. As we saw from the example above Pact is a powerful testing tool. It lets you write consumer driven contract test that are faster than all the E2E/integration testing tools you can use in your application. But most important Pact gives you the ability -to refactor the design of an API/message in a safe and controlled way emoji-passport_control emoji-heart_eyes.

test driven developmentcontract testpactbackend
+to refactor the design of an API/message in a safe and controlled way emoji-passport_control emoji-heart_eyes.

test driven developmentcontract testpactbackend
- \ No newline at end of file + \ No newline at end of file diff --git a/2022/01/02/react-detect-scroll-direction/index.html b/2022/01/02/react-detect-scroll-direction/index.html index 2640e9ef7..7bd2078cc 100644 --- a/2022/01/02/react-detect-scroll-direction/index.html +++ b/2022/01/02/react-detect-scroll-direction/index.html @@ -425,10 +425,10 @@

Implementation

return scrollDir; };

Conclusion

-

Did you enjoy reading my post? If so, support my work by 💞 starring/funding some of my open source projects 💞.

reactweb development
+

Did you enjoy reading my post? If so, support my work by 💞 starring/funding some of my open source projects 💞.

reactweb development
- \ No newline at end of file + \ No newline at end of file diff --git a/2022/03/02/custom-jackson-module-deserlializer-serializer-object-mapper-java-spi/index.html b/2022/03/02/custom-jackson-module-deserlializer-serializer-object-mapper-java-spi/index.html index 2726c1f40..3a9b003ef 100644 --- a/2022/03/02/custom-jackson-module-deserlializer-serializer-object-mapper-java-spi/index.html +++ b/2022/03/02/custom-jackson-module-deserlializer-serializer-object-mapper-java-spi/index.html @@ -600,10 +600,10 @@

Implementation

Conclusion

You can find the complete source code of the example show above in this Github repository. Stay tuned for new article on one of the technologies/Pattern above (Axon, CQRS, Event Sourcing, we have a lot of stuff to talk about -emoji-heart ).

javakotlinweb development
+emoji-heart ).

javakotlinweb development
- \ No newline at end of file + \ No newline at end of file diff --git a/2022/06/06/microfrontend-module-federation-dynamic-configuration/index.html b/2022/06/06/microfrontend-module-federation-dynamic-configuration/index.html index 1d035a21d..85461d289 100644 --- a/2022/06/06/microfrontend-module-federation-dynamic-configuration/index.html +++ b/2022/06/06/microfrontend-module-federation-dynamic-configuration/index.html @@ -704,10 +704,10 @@

Implementation

}

Conclusion

-

In this Github repository you can find the implementation fo the example described above. Module federation is relatively young feature of Webpack, but seems that can help a lot of developers to reach the goal of implementing a clean micro frontend architecture emoji-heart. What do you think? Let me know in the comment section emoji-rocket.

reactweb developmentarchitectural pattern
+

In this Github repository you can find the implementation fo the example described above. Module federation is relatively young feature of Webpack, but seems that can help a lot of developers to reach the goal of implementing a clean micro frontend architecture emoji-heart. What do you think? Let me know in the comment section emoji-rocket.

reactweb developmentarchitectural pattern
- \ No newline at end of file + \ No newline at end of file diff --git a/2022/10/03/swiftui-path-svg-scale/index.html b/2022/10/03/swiftui-path-svg-scale/index.html index 01da22e40..a6ff39914 100644 --- a/2022/10/03/swiftui-path-svg-scale/index.html +++ b/2022/10/03/swiftui-path-svg-scale/index.html @@ -562,10 +562,10 @@

Implementation

Conclusion

In this github repository you can find the implementation fo the example described above. I'm really excited to share with you in the next weeks the entire -project where we used the implementation above. Stay tuned! emoji-ear emoji-rocket

swiftswiftuiiosapplemobile application development
+project where we used the implementation above. Stay tuned! emoji-ear emoji-rocket

swiftswiftuiiosapplemobile application development
- \ No newline at end of file + \ No newline at end of file diff --git a/2023/01/10/widget-ios-swiftui-image-problem/index.html b/2023/01/10/widget-ios-swiftui-image-problem/index.html index 04f41a237..58c118212 100644 --- a/2023/01/10/widget-ios-swiftui-image-problem/index.html +++ b/2023/01/10/widget-ios-swiftui-image-problem/index.html @@ -451,10 +451,10 @@ }

Conclusion

The journey into WidgetKit during our FriYaY is not finished yet, and we are planning to introduce more new features -in the near future, sooo stay tuned!!! emoji-heart

swiftswiftuiiosapplemobile-application-development
+in the near future, sooo stay tuned!!! emoji-heart

swiftswiftuiiosapplemobile-application-development
- \ No newline at end of file + \ No newline at end of file diff --git a/2023/06/30/swiftui-text-concatenation/index.html b/2023/06/30/swiftui-text-concatenation/index.html index b897d2dfb..fb666581b 100644 --- a/2023/06/30/swiftui-text-concatenation/index.html +++ b/2023/06/30/swiftui-text-concatenation/index.html @@ -462,10 +462,10 @@

Implementation

} }

Conclusion

-

We love SwiftUI emoji-heart. With every release Apple is making the app developer life easier than ever emoji-rocket. Also with the new additions during WWDC23, SwiftData and Macro above all, developers will have some fun in the near future emoji-rocket. Sooo stay tuned, our new widget where we implemented the custom layout above is going to be released very soon!!! emoji-rocket

swiftswiftuiiosapplemobile-application-development
+

We love SwiftUI emoji-heart. With every release Apple is making the app developer life easier than ever emoji-rocket. Also with the new additions during WWDC23, SwiftData and Macro above all, developers will have some fun in the near future emoji-rocket. Sooo stay tuned, our new widget where we implemented the custom layout above is going to be released very soon!!! emoji-rocket

swiftswiftuiiosapplemobile-application-development
- \ No newline at end of file + \ No newline at end of file diff --git a/404.html b/404.html index 5b7581658..76dbc0b41 100644 --- a/404.html +++ b/404.html @@ -36,6 +36,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/404/index.html b/404/index.html index 585fd0573..98250ca6f 100644 --- a/404/index.html +++ b/404/index.html @@ -36,6 +36,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/_gatsby/slices/_gatsby-scripts-1.html b/_gatsby/slices/_gatsby-scripts-1.html index 6943fed4b..305cf6245 100644 --- a/_gatsby/slices/_gatsby-scripts-1.html +++ b/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/api/projects.json b/api/projects.json index fc9336388..bb6399ec2 100644 --- a/api/projects.json +++ b/api/projects.json @@ -1 +1 @@ -{"projects":[{"id":"spectral-clara-lux-tracer","name":"Spectral Clara Lux Tracer","description":"Physically based ray tracer with multiple shading models support andColor Rendering Index (CRI) evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision Laboratory.","features":["Computer graphics","Ray-tracing","Physically based rendering","Color calculation using spectral data","Color Rendering index calculation","iOS, macOS, Windows","Objective-C, C++"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/Spectral-Clara-Lux-Tracer"},{"text":"Thesis","url":"https://www.fabrizioduroni.it/tesi-fabrizio-duroni-770157.pdf"}],"imageUrl":"https://www.fabrizioduroni.it/static/bae1c10627e070721e526a5c21453ccf/spectral-clara-lux-tracer.jpg"},{"id":"spectral-brdf-explorer","name":"Spectral BRDF Explorer","description":"OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.","features":["Computer graphics","OpenGL ES","Color calculation using spectral data","iOS, Android","Objective-C, Java, C++"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/Spectral-BRDF-Explorer"}],"imageUrl":"https://www.fabrizioduroni.it/static/3ba02b28ca701e835cb54dd4da20b795/spectral-brdf-explorer.png"},{"id":"id3tageditor","name":"ID3TagEditor","description":"A Swift library to read and modify ID3 Tag of any mp3 file. Supported ID3 tag version: 2.2. and 2.3. Listed in the implementations section of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.","features":["Multiple id3 tag version supported","Strictly adhere to the offical standard","No external dependencies","100% Swift"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/ID3TagEditor"},{"text":"Docs","url":"https://id3tageditor.fabrizioduroni.it"}],"imageUrl":"https://www.fabrizioduroni.it/static/9d95a54a25f3b0b7d31abb0ab3adc126/id3tageditor.jpg"},{"id":"range-ui-slider","name":"RangeUISlider","description":"A highly customizable iOS range selection slider, developed using autolayout and completely customizable using IBDesignabled and IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.","features":["Cocoa Touch","SwiftUI","Custom UI Component","Autolayout","IBDesignable","IBInspectable","iOS","Swift"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/RangeUISlider"},{"text":"Docs","url":"https://rangeuislider.fabrizioduroni.it"}],"imageUrl":"https://www.fabrizioduroni.it/static/81a34ff161983f65674e4342282503f1/range-ui-slider.png"},{"id":"tabbaruiaction","name":"TabBarUIAction","description":"A SwiftUI custom TabBar view with action button for modal content display. Fully compatible with Mac Catalyst. Available as a standalone framework, a SwiftPM package and as a Cocoapods pod.","features":["customizable tab item","custom central tab item action to show modal screens","supported platform: iOS, iPadOS and macOS"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/TabBarUIAction"},{"text":"Docs","url":"https://tabbaruiaction.fabrizioduroni.it"}],"imageUrl":"https://www.fabrizioduroni.it/static/cd3c8193443ccce876863682a39a38e0/tabbaruiaction.png"},{"id":"mp3id3tagger","name":"Mp3ID3Tagger","description":"A macOS application to edit the ID3 tag of your mp3 files. Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It will let you modify the information inside the ID3 tag of you mp3 files.","features":["100% macOS native app","Implemented using Reactive programming (RxCocoa)"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/Mp3ID3Tagger"},{"text":"Download","url":"https://github.com/chicio/Mp3ID3Tagger/raw/master/Release/Mp3ID3Tagger.dmg"}],"imageUrl":"https://www.fabrizioduroni.it/static/e8f06f8f7514db7d70a327e633db9d54/mp3id3tagger.jpg"}]} \ No newline at end of file +{"projects":[{"id":"spectral-clara-lux-tracer","name":"Spectral Clara Lux Tracer","abstract":"Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI) evaluation.","description":"Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI) evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision Laboratory.","features":["Computer graphics","Ray-tracing","Physically based rendering","Color calculation using spectral data","Color Rendering index calculation","iOS, macOS, Windows","Objective-C, C++"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/Spectral-Clara-Lux-Tracer"},{"text":"Thesis","url":"https://www.fabrizioduroni.it/tesi-fabrizio-duroni-770157.pdf"}],"imageUrl":"https://www.fabrizioduroni.it/static/bae1c10627e070721e526a5c21453ccf/spectral-clara-lux-tracer.jpg"},{"id":"spectral-brdf-explorer","name":"Spectral BRDF Explorer","abstract":"An iOS OpenGL ES appfor exploring lighting models.","description":"An iOS OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.","features":["Computer graphics","OpenGL ES","Color calculation using spectral data","iOS, Android","Objective-C, Java, C++"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/Spectral-BRDF-Explorer"}],"imageUrl":"https://www.fabrizioduroni.it/static/3ba02b28ca701e835cb54dd4da20b795/spectral-brdf-explorer.png"},{"id":"id3tageditor","name":"ID3TagEditor","abstract":"A Swift library to edit ID3 Tag of any mp3 file. ","description":"A Swift library to read and modify ID3 Tag of any mp3 file. Supported ID3 tag version: 2.2. and 2.3. Listed in the implementations section of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.","features":["Multiple id3 tag version supported","Strictly adhere to the offical standard","No external dependencies","Swift SPM and cocoapods support","100% Swift"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/ID3TagEditor"},{"text":"Docs","url":"https://id3tageditor.fabrizioduroni.it"}],"imageUrl":"https://www.fabrizioduroni.it/static/9d95a54a25f3b0b7d31abb0ab3adc126/id3tageditor.jpg"},{"id":"range-ui-slider","name":"RangeUISlider","abstract":"A RangeUISlider component for iOS and iPadOS.","description":"A highly customizable iOS range selection slider, developed using autolayout and completely customizable using IBDesignabled and IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.","features":["Cocoa Touch","SwiftUI","Custom UI Component","Autolayout","IBDesignable","IBInspectable","iOS","Swift"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/RangeUISlider"},{"text":"Docs","url":"https://rangeuislider.fabrizioduroni.it"}],"imageUrl":"https://www.fabrizioduroni.it/static/81a34ff161983f65674e4342282503f1/range-ui-slider.png"},{"id":"tabbaruiaction","name":"TabBarUIAction","abstract":"A SwiftUI custom TabBar for iOS and macOS.","description":"A SwiftUI custom TabBar view with action button for modal content display. Fully compatible with Mac Catalyst. Available as a standalone framework, a SwiftPM package and as a Cocoapods pod.","features":["customizable tab item","custom central tab item action to show modal screens","supported platform: iOS, iPadOS and macOS"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/TabBarUIAction"},{"text":"Docs","url":"https://tabbaruiaction.fabrizioduroni.it"}],"imageUrl":"https://www.fabrizioduroni.it/static/cd3c8193443ccce876863682a39a38e0/tabbaruiaction.png"},{"id":"mp3id3tagger","name":"Mp3ID3Tagger","abstract":"A macOS application to edit the ID3 tag of your mp3 files.","description":"A macOS application to edit the ID3 tag of your mp3 files. Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It will let you modify the information inside the ID3 tag of you mp3 files.","features":["100% macOS native app","Implemented using Reactive programming (RxCocoa)"],"callToActions":[{"text":"Github","url":"https://github.com/chicio/Mp3ID3Tagger"},{"text":"Download","url":"https://github.com/chicio/Mp3ID3Tagger/raw/master/Release/Mp3ID3Tagger.dmg"}],"imageUrl":"https://www.fabrizioduroni.it/static/e8f06f8f7514db7d70a327e633db9d54/mp3id3tagger.jpg"}]} \ No newline at end of file diff --git a/art/index.html b/art/index.html index 9adbc1b29..3db804fd2 100644 --- a/art/index.html +++ b/art/index.html @@ -166,6 +166,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/2/index.html b/blog/2/index.html index 466e1b483..8bb5f0db0 100644 --- a/blog/2/index.html +++ b/blog/2/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/3/index.html b/blog/3/index.html index d7aaa7f75..2c156a014 100644 --- a/blog/3/index.html +++ b/blog/3/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/4/index.html b/blog/4/index.html index 85b48467d..f40f6ff48 100644 --- a/blog/4/index.html +++ b/blog/4/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/5/index.html b/blog/5/index.html index e2e2c4638..1c5b553db 100644 --- a/blog/5/index.html +++ b/blog/5/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/6/index.html b/blog/6/index.html index 215530f43..309457099 100644 --- a/blog/6/index.html +++ b/blog/6/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/7/index.html b/blog/7/index.html index 01fe2ad6f..a813ffdb6 100644 --- a/blog/7/index.html +++ b/blog/7/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/8/index.html b/blog/8/index.html index a4e306498..1c427ed45 100644 --- a/blog/8/index.html +++ b/blog/8/index.html @@ -268,6 +268,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/archive/index.html b/blog/archive/index.html index 65742b4c0..e49422364 100644 --- a/blog/archive/index.html +++ b/blog/archive/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 07267e7d8..a1c2af0a3 100644 --- a/blog/index.html +++ b/blog/index.html @@ -274,6 +274,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/IDE/index.html b/blog/tags/IDE/index.html index 6eec03c18..b65356777 100644 --- a/blog/tags/IDE/index.html +++ b/blog/tags/IDE/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/agile/index.html b/blog/tags/agile/index.html index acb0cc5dc..5a26c3f74 100644 --- a/blog/tags/agile/index.html +++ b/blog/tags/agile/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/android/index.html b/blog/tags/android/index.html index 87a10e3da..c2ccb1d51 100644 --- a/blog/tags/android/index.html +++ b/blog/tags/android/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/apple/index.html b/blog/tags/apple/index.html index def19de08..1f0e05b34 100644 --- a/blog/tags/apple/index.html +++ b/blog/tags/apple/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/architectural-pattern/index.html b/blog/tags/architectural-pattern/index.html index fdf53e76d..c493afef2 100644 --- a/blog/tags/architectural-pattern/index.html +++ b/blog/tags/architectural-pattern/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/backend/index.html b/blog/tags/backend/index.html index 2a7c07e5f..3cd1122d8 100644 --- a/blog/tags/backend/index.html +++ b/blog/tags/backend/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/blender/index.html b/blog/tags/blender/index.html index e87cf3622..f1a048de5 100644 --- a/blog/tags/blender/index.html +++ b/blog/tags/blender/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/bootstrap/index.html b/blog/tags/bootstrap/index.html index 05bd84789..55bf48494 100644 --- a/blog/tags/bootstrap/index.html +++ b/blog/tags/bootstrap/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/clean-code/index.html b/blog/tags/clean-code/index.html index 7f47e1c5f..9b86ae343 100644 --- a/blog/tags/clean-code/index.html +++ b/blog/tags/clean-code/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/computer-graphics/index.html b/blog/tags/computer-graphics/index.html index 39533d4d0..ef51b9914 100644 --- a/blog/tags/computer-graphics/index.html +++ b/blog/tags/computer-graphics/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/conference/index.html b/blog/tags/conference/index.html index 87c7f36c7..297069f42 100644 --- a/blog/tags/conference/index.html +++ b/blog/tags/conference/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/contract-test/index.html b/blog/tags/contract-test/index.html index fb296de9a..7eb7cbe52 100644 --- a/blog/tags/contract-test/index.html +++ b/blog/tags/contract-test/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/design/index.html b/blog/tags/design/index.html index 7fc5e9f32..68657ec8b 100644 --- a/blog/tags/design/index.html +++ b/blog/tags/design/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/domain-driven-design/index.html b/blog/tags/domain-driven-design/index.html index 5075239a4..3c6eb9424 100644 --- a/blog/tags/domain-driven-design/index.html +++ b/blog/tags/domain-driven-design/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/github-pages/index.html b/blog/tags/github-pages/index.html index b7adb256b..5e0b99912 100644 --- a/blog/tags/github-pages/index.html +++ b/blog/tags/github-pages/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/gulp/index.html b/blog/tags/gulp/index.html index dbea5331c..3d354a1ab 100644 --- a/blog/tags/gulp/index.html +++ b/blog/tags/gulp/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html index 5df8a573d..27e8da6c0 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -226,6 +226,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/ios/index.html b/blog/tags/ios/index.html index d51f597d4..9a0159e9c 100644 --- a/blog/tags/ios/index.html +++ b/blog/tags/ios/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/java/index.html b/blog/tags/java/index.html index 7c868aea3..30fe83acb 100644 --- a/blog/tags/java/index.html +++ b/blog/tags/java/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/javascript/index.html b/blog/tags/javascript/index.html index 550751a6f..bd6be91a9 100644 --- a/blog/tags/javascript/index.html +++ b/blog/tags/javascript/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/jekyll/index.html b/blog/tags/jekyll/index.html index f314d4572..2cfee2aa8 100644 --- a/blog/tags/jekyll/index.html +++ b/blog/tags/jekyll/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/kotlin/index.html b/blog/tags/kotlin/index.html index 01b481f55..4432e90e7 100644 --- a/blog/tags/kotlin/index.html +++ b/blog/tags/kotlin/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/macos/index.html b/blog/tags/macos/index.html index 1fdb27586..ced80cd24 100644 --- a/blog/tags/macos/index.html +++ b/blog/tags/macos/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/mobile-application-development/index.html b/blog/tags/mobile-application-development/index.html index b9e057767..758f34d05 100644 --- a/blog/tags/mobile-application-development/index.html +++ b/blog/tags/mobile-application-development/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/node/index.html b/blog/tags/node/index.html index 0e96f0caf..ac8bd5b94 100644 --- a/blog/tags/node/index.html +++ b/blog/tags/node/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/objective-c/index.html b/blog/tags/objective-c/index.html index 1b45a7b7f..f7f82322d 100644 --- a/blog/tags/objective-c/index.html +++ b/blog/tags/objective-c/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/pact/index.html b/blog/tags/pact/index.html index 0bc74b1ca..2b8408e88 100644 --- a/blog/tags/pact/index.html +++ b/blog/tags/pact/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/physically-based-rendering/index.html b/blog/tags/physically-based-rendering/index.html index 9acf82d57..28d58c31d 100644 --- a/blog/tags/physically-based-rendering/index.html +++ b/blog/tags/physically-based-rendering/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/pwa/index.html b/blog/tags/pwa/index.html index 1c32cdb63..546277cd1 100644 --- a/blog/tags/pwa/index.html +++ b/blog/tags/pwa/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/react-native/index.html b/blog/tags/react-native/index.html index bfa5a4559..f7bf52e39 100644 --- a/blog/tags/react-native/index.html +++ b/blog/tags/react-native/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/react/index.html b/blog/tags/react/index.html index 2d3dc9d8b..be5438fd8 100644 --- a/blog/tags/react/index.html +++ b/blog/tags/react/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/realm/index.html b/blog/tags/realm/index.html index 506a457fe..4537172ec 100644 --- a/blog/tags/realm/index.html +++ b/blog/tags/realm/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/rxcocoa/index.html b/blog/tags/rxcocoa/index.html index 73c4fa936..8afd3bdad 100644 --- a/blog/tags/rxcocoa/index.html +++ b/blog/tags/rxcocoa/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/rxswift/index.html b/blog/tags/rxswift/index.html index 18e3e0c27..f8d8539ae 100644 --- a/blog/tags/rxswift/index.html +++ b/blog/tags/rxswift/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/spring-boot/index.html b/blog/tags/spring-boot/index.html index 38eadddb3..2943f4034 100644 --- a/blog/tags/spring-boot/index.html +++ b/blog/tags/spring-boot/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/spring/index.html b/blog/tags/spring/index.html index e9c5a74ae..e58b93822 100644 --- a/blog/tags/spring/index.html +++ b/blog/tags/spring/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/stuff/index.html b/blog/tags/stuff/index.html index e3fa869b9..e594f8694 100644 --- a/blog/tags/stuff/index.html +++ b/blog/tags/stuff/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/swift-package-manager/index.html b/blog/tags/swift-package-manager/index.html index f75b9b89c..22d5619d3 100644 --- a/blog/tags/swift-package-manager/index.html +++ b/blog/tags/swift-package-manager/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/swift/index.html b/blog/tags/swift/index.html index bbbc97a81..1bde46f06 100644 --- a/blog/tags/swift/index.html +++ b/blog/tags/swift/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/swiftui/index.html b/blog/tags/swiftui/index.html index f99f73af9..48344627a 100644 --- a/blog/tags/swiftui/index.html +++ b/blog/tags/swiftui/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/test-driven-development/index.html b/blog/tags/test-driven-development/index.html index 18384796f..5c9c1a2da 100644 --- a/blog/tags/test-driven-development/index.html +++ b/blog/tags/test-driven-development/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/threejs/index.html b/blog/tags/threejs/index.html index b5b5ae60b..204deb0bd 100644 --- a/blog/tags/threejs/index.html +++ b/blog/tags/threejs/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/tvos/index.html b/blog/tags/tvos/index.html index 9df302448..8c2affa69 100644 --- a/blog/tags/tvos/index.html +++ b/blog/tags/tvos/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/typescript/index.html b/blog/tags/typescript/index.html index 1b41c18e0..df008710d 100644 --- a/blog/tags/typescript/index.html +++ b/blog/tags/typescript/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/ux/index.html b/blog/tags/ux/index.html index 471586f04..7c4d9a573 100644 --- a/blog/tags/ux/index.html +++ b/blog/tags/ux/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/watchos/index.html b/blog/tags/watchos/index.html index 860fcd74e..ab7085638 100644 --- a/blog/tags/watchos/index.html +++ b/blog/tags/watchos/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/blog/tags/web-development/index.html b/blog/tags/web-development/index.html index 34287739d..70bc9a7bf 100644 --- a/blog/tags/web-development/index.html +++ b/blog/tags/web-development/index.html @@ -231,6 +231,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index c4c47a973..2ed8a4d5f 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-d08355b41508117063b9.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-b65f521dcc74f5046a60.js"],"component---src-pages-404-tsx":["/component---src-pages-404-tsx-1f0097102474e982384f.js"],"component---src-pages-art-tsx":["/component---src-pages-art-tsx-36d8a361f3ccf90b4682.js"],"component---src-pages-blog-archive-tsx":["/component---src-pages-blog-archive-tsx-6ab2f68f34a159c98c9e.js"],"component---src-pages-blog-tags-tsx":["/component---src-pages-blog-tags-tsx-05fe440d90417dd61760.js"],"component---src-pages-cookie-policy-tsx":["/component---src-pages-cookie-policy-tsx-087cf3c419b65e4802e0.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-631e4b9b889ef75e6204.js"],"component---src-pages-projects-astronave-privacy-policy-tsx":["/component---src-pages-projects-astronave-privacy-policy-tsx-e5c160e4e17369d178c6.js"],"component---src-pages-projects-chicio-coding-privacy-policy-tsx":["/component---src-pages-projects-chicio-coding-privacy-policy-tsx-6b1cb704e64b572bef3f.js"],"component---src-templates-blog-tsx":["/component---src-templates-blog-tsx-584ce6580a15cca266b5.js"],"component---src-templates-post-tsx":["/component---src-templates-post-tsx-143b17b906de1c2af3c3.js"],"component---src-templates-tag-tsx":["/component---src-templates-tag-tsx-7057be6a53fe0a721189.js"],"components-bottom-art":["/components-bottom-art-6c04a55586c61012060b.js"],"organism-footer":["/organism-footer-907c4b02ecc9ebdf27b7.js"],"components-bottom-index":["/components-bottom-index-50e0b44eba7559dc729c.js"],"components-design-system-organism-read-next":["/components-design-system-organism-read-next-fba083dcf7f504213947.js"],"components-design-system-molecules-post-tags":["/components-design-system-molecules-post-tags-c55372b1b5f1473c918e.js"],"components-design-system-molecules-comments":["/components-design-system-molecules-comments-0b14e7ac000249f566d4.js"]} \ No newline at end of file +{"app":["/app-d08355b41508117063b9.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["/component---cache-caches-gatsby-plugin-offline-app-shell-js-b65f521dcc74f5046a60.js"],"component---src-pages-404-tsx":["/component---src-pages-404-tsx-1f0097102474e982384f.js"],"component---src-pages-art-tsx":["/component---src-pages-art-tsx-36d8a361f3ccf90b4682.js"],"component---src-pages-blog-archive-tsx":["/component---src-pages-blog-archive-tsx-6ab2f68f34a159c98c9e.js"],"component---src-pages-blog-tags-tsx":["/component---src-pages-blog-tags-tsx-05fe440d90417dd61760.js"],"component---src-pages-cookie-policy-tsx":["/component---src-pages-cookie-policy-tsx-087cf3c419b65e4802e0.js"],"component---src-pages-index-tsx":["/component---src-pages-index-tsx-631e4b9b889ef75e6204.js"],"component---src-pages-projects-astronave-privacy-policy-tsx":["/component---src-pages-projects-astronave-privacy-policy-tsx-e5c160e4e17369d178c6.js"],"component---src-pages-projects-chicio-coding-privacy-policy-tsx":["/component---src-pages-projects-chicio-coding-privacy-policy-tsx-6b1cb704e64b572bef3f.js"],"component---src-templates-blog-tsx":["/component---src-templates-blog-tsx-584ce6580a15cca266b5.js"],"component---src-templates-post-tsx":["/component---src-templates-post-tsx-143b17b906de1c2af3c3.js"],"component---src-templates-tag-tsx":["/component---src-templates-tag-tsx-7057be6a53fe0a721189.js"],"components-bottom-art":["/components-bottom-art-6c04a55586c61012060b.js"],"organism-footer":["/organism-footer-907c4b02ecc9ebdf27b7.js"],"components-bottom-index":["/components-bottom-index-22dc5f43f2aca83b3174.js"],"components-design-system-organism-read-next":["/components-design-system-organism-read-next-fba083dcf7f504213947.js"],"components-design-system-molecules-post-tags":["/components-design-system-molecules-post-tags-c55372b1b5f1473c918e.js"],"components-design-system-molecules-comments":["/components-design-system-molecules-comments-0b14e7ac000249f566d4.js"]} \ No newline at end of file diff --git a/components-bottom-index-22dc5f43f2aca83b3174.js b/components-bottom-index-22dc5f43f2aca83b3174.js new file mode 100644 index 000000000..c3ef1b88e --- /dev/null +++ b/components-bottom-index-22dc5f43f2aca83b3174.js @@ -0,0 +1,2 @@ +"use strict";(self.__LOADABLE_LOADED_CHUNKS__=self.__LOADABLE_LOADED_CHUNKS__||[]).push([[524],{2718:function(e,t,a){a.r(t),a.d(t,{default:function(){return re}});var i=a(8032),n=a(281),c=a(5086),r=a(5814),o=a(4148),s=a(5893);const l=(0,c.default)(r.M).withConfig({displayName:"technologies__TechnologiesContainer",componentId:"sc-aymtyu-0"})(["margin:0;display:flex;flex-direction:column;padding:",";background-color:",";","{background-color:",";}"],(e=>e.theme.spacing[11]),(e=>e.theme.light.primaryColorDark),o.c.dark,(e=>e.theme.dark.primaryColorDark)),d=(0,c.default)(n.n).withConfig({displayName:"technologies__TechnologyParagraph",componentId:"sc-aymtyu-1"})(["text-align:center;margin-bottom:",";color:",";","{color:",";}","{padding:0 ",";}"],(e=>e.theme.spacing[7]),(e=>e.theme.light.textAbovePrimaryColor),o.c.dark,(e=>e.theme.dark.textAbovePrimaryColor),o.c.minWidth.md,(e=>e.theme.spacing[12])),p=c.default.div.withConfig({displayName:"technologies__TechnologiesIconsContainer",componentId:"sc-aymtyu-2"})(["display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;"]),A=c.default.div.withConfig({displayName:"technologies__TechnologyImageContainer",componentId:"sc-aymtyu-3"})(["width:80px;height:80px;margin:",";display:flex;justify-content:center;align-items:center;"],(e=>e.theme.spacing[2])),g=e=>{let{author:t}=e;return(0,s.jsxs)(l,{children:[(0,s.jsx)(d,{children:"I'm "+t+", a software developer with many years of experience.\n I have a strong knowledge of the following languages: C++, Objective-C, Swift, C, Java, PHP,\n JavaScript, TypeScript, Kotlin.\n I develop mobile app since 2010 and web application since 2005. I'm also passionate about computer graphics."}),(0,s.jsxs)(p,{children:[(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/xcode.png",alt:"xcode",placeholder:"blurred",__imageData:a(5310)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{src:"../../../images/technologies/swift.png",alt:"swift",placeholder:"blurred",__imageData:a(1211)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/android.png",alt:"android",placeholder:"blurred",__imageData:a(7299)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/cpp.png",alt:"c++",placeholder:"blurred",__imageData:a(6781)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/opengl-es.png",alt:"opengl",placeholder:"blurred",__imageData:a(5795)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/react.png",alt:"react",placeholder:"blurred",__imageData:a(6824)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/php.png",alt:"php",placeholder:"blurred",__imageData:a(9934)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/html-css-js.png",alt:"js",placeholder:"blurred",__imageData:a(7842)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/typescript.png",alt:"typescript",placeholder:"blurred",__imageData:a(5021)})})]})]})};var b=a(7294),h=a(6918),f=a(4737);const m=c.default.li.withConfig({displayName:"tabs__TabContainer",componentId:"sc-qlpi67-0"})(["width:50%;"]),x=(0,c.default)(f.K).withConfig({displayName:"tabs__TabLink",componentId:"sc-qlpi67-1"})(["font-size:",";display:block;background-color:",";padding:",";border-radius:0;border-top:"," 1px solid;border-bottom:"," 1px solid;border-left:"," 1px solid;border-right:"," 1px solid;text-align:center;","{border-top:"," 1px solid;background-color:",";border-bottom:"," 1px solid;border-left:"," 1px solid;border-right:"," 1px solid;}","{font-size:16px;}",""],(e=>e.theme.fontSizes[4]),(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.spacing[5]),(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.light.dividerColor),(e=>e.theme.light.dividerColor),(e=>e.theme.light.dividerColor),o.c.dark,(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.dividerColor),o.c.maxWidth.md,(e=>e.active&&(0,c.css)(["background-color:",";border-right:"," 1px solid;border-left:"," 1px solid;border-bottom:"," 1px solid;","{background-color:",";border-right:"," 1px solid;border-left:"," 1px solid;border-bottom:"," 1px solid;}"],(e=>e.theme.light.generalBackground),(e=>e.theme.light.generalBackground),(e=>e.theme.light.generalBackground),(e=>e.theme.light.generalBackground),o.c.dark,(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.generalBackground)))),w=e=>{let{active:t,label:a,link:i,trackingAction:n,trackingCategory:c,trackingLabel:r,action:o}=e;return(0,s.jsx)(m,{children:(0,s.jsx)(x,{active:t,href:i,onClick:e=>{e.preventDefault(),(0,h.$)({action:n,category:c,label:r}),o()},children:a})})},u=c.default.ul.withConfig({displayName:"tabs__TabsContainer",componentId:"sc-qlpi67-2"})(["list-style:none;display:flex;padding-left:0;margin:0;border:1px solid transparent;"]),j=e=>{let{tab1:t,tab2:a}=e;return(0,s.jsxs)(u,{children:[(0,s.jsx)(w,{active:t.active,label:t.label,link:t.link,trackingAction:t.trackingAction,trackingCategory:t.trackingCategory,trackingLabel:t.trackingLabel,action:t.action}),(0,s.jsx)(w,{active:a.active,label:a.label,link:a.link,trackingAction:a.trackingAction,trackingCategory:a.trackingCategory,trackingLabel:a.trackingLabel,action:a.action})]})};var y=a(576),C=a(6137),k=a(8612),v=a(3348);const S=(0,c.default)(C.W).withConfig({displayName:"project__ProjectContainer",componentId:"sc-1phb6xx-0"})(["display:flex;flex-direction:column;padding:0;margin:"," auto;","{flex-direction:",";max-width:1100px;}"],(e=>e.theme.spacing[7]),o.c.minWidth.md,(e=>e.reverse?"row-reverse":"row")),E=c.default.div.withConfig({displayName:"project__ProjectContentContainer",componentId:"sc-1phb6xx-1"})(["flex:50%;padding:",";"],(e=>e.theme.spacing[2])),I=(0,c.default)(E).withConfig({displayName:"project__ProjectImageContainer",componentId:"sc-1phb6xx-2"})(["display:flex;justify-content:center;align-items:center;"]),U=c.default.div.withConfig({displayName:"project__CallToActionContainer",componentId:"sc-1phb6xx-3"})(["margin:"," 0;"],(e=>e.theme.spacing[6])),B=e=>{let{reverse:t,name:a,image:c,description:r,features:o,callToActions:l}=e;return(0,s.jsxs)(S,{reverse:t,children:[(0,s.jsx)(I,{children:(0,s.jsx)(i.G,{style:{width:500,height:500},alt:a,image:c})}),(0,s.jsxs)(E,{children:[(0,s.jsx)(y.a,{children:a}),(0,s.jsx)(n.n,{children:r}),(0,s.jsx)(v.a,{className:"project-features",children:o.map((e=>(0,s.jsx)("li",{children:e},""+a+e)))}),(0,s.jsx)(U,{children:l.map((e=>(0,s.jsx)(k.y,{href:e.link,trackingData:{action:e.trackingAction,category:e.trackingCategory,label:e.trackingLabel},target:"_blank",rel:"noopener noreferrer",children:e.label},e.label)))})]})]})},D={"spectral-clara-lux-tracer":{name:"Spectral Clara Lux Tracer",abstract:"Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI) evaluation.",description:"Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI) evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision Laboratory.",features:["Computer graphics","Ray-tracing","Physically based rendering","Color calculation using spectral data","Color Rendering index calculation","iOS, macOS, Windows","Objective-C, C++"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_sclt_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Spectral-Clara-Lux-Tracer"},{label:"Thesis",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_sclt_thesis,trackingLabel:h.U.label.body,link:"https://www.fabrizioduroni.it/tesi-fabrizio-duroni-770157.pdf"}]},"spectral-brdf-explorer":{name:"Spectral BRDF Explorer",abstract:"An iOS OpenGL ES appfor exploring lighting models.",description:"An iOS OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.",features:["Computer graphics","OpenGL ES","Color calculation using spectral data","iOS, Android","Objective-C, Java, C++"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_spectral_brdf_explorer_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Spectral-BRDF-Explorer"}]},id3tageditor:{name:"ID3TagEditor",abstract:"A Swift library to edit ID3 Tag of any mp3 file. ",description:"A Swift library to read and modify ID3 Tag of any mp3 file. Supported ID3 tag version: 2.2. and 2.3. Listed in the implementations section of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.",features:["Multiple id3 tag version supported","Strictly adhere to the offical standard","No external dependencies","Swift SPM and cocoapods support","100% Swift"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_id3tageditor_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/ID3TagEditor"},{label:"Docs",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_id3tageditor_doc,trackingLabel:h.U.label.body,link:"https://id3tageditor.fabrizioduroni.it"}]},"range-ui-slider":{name:"RangeUISlider",abstract:"A RangeUISlider component for iOS and iPadOS.",description:"A highly customizable iOS range selection slider, developed using autolayout and completely customizable using IBDesignabled and IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.",features:["Cocoa Touch","SwiftUI","Custom UI Component","Autolayout","IBDesignable","IBInspectable","iOS","Swift"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_rangeuislider_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/RangeUISlider"},{label:"Docs",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_rangeuislider_doc,trackingLabel:h.U.label.body,link:"https://rangeuislider.fabrizioduroni.it"}]},tabbaruiaction:{name:"TabBarUIAction",abstract:"A SwiftUI custom TabBar for iOS and macOS.",description:"A SwiftUI custom TabBar view with action button for modal content display. Fully compatible with Mac Catalyst. Available as a standalone framework, a SwiftPM package and as a Cocoapods pod.",features:["customizable tab item","custom central tab item action to show modal screens","supported platform: iOS, iPadOS and macOS"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_tabbaruiaction_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/TabBarUIAction"},{label:"Docs",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_tabbaruiaction_doc,trackingLabel:h.U.label.body,link:"https://tabbaruiaction.fabrizioduroni.it"}]},mp3id3tagger:{name:"Mp3ID3Tagger",abstract:"A macOS application to edit the ID3 tag of your mp3 files.",description:"A macOS application to edit the ID3 tag of your mp3 files. Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It will let you modify the information inside the ID3 tag of you mp3 files.",features:["100% macOS native app","Implemented using Reactive programming (RxCocoa)"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_mp3id3tagger_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Mp3ID3Tagger"},{label:"Download",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_mp3id3tagger_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Mp3ID3Tagger/raw/master/Release/Mp3ID3Tagger.dmg"}]}};var z=a(4854);const L=()=>{const e=(0,z.useStaticQuery)("2617699820");return(0,s.jsx)(s.Fragment,{children:Object.keys(D).map(((t,a)=>{const i=D[t],n=e.allFile.edges.find((e=>e.node.name===t)).node.childImageSharp.gatsbyImageData;return(0,s.jsx)(B,{reverse:a%2!=0,name:i.name,description:i.description,features:i.features,callToActions:i.callToActions,image:n},i.name)}))})};var N=a(291);const O=c.default.h6.withConfig({displayName:"heading6__Heading6",componentId:"sc-1k2esb-0"})(["font-size:",";",""],(e=>e.theme.fontSizes[6]),N.J);var Q=a(9815),T=a(7553),R=a(434),Y=a.n(R),W=a(4142),M=b.forwardRef((function(e,t){return b.createElement(W.r,Y()({iconAttrs:{fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},e,{ref:t}),b.createElement("path",{d:"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-5-2v2H9V4h6zM8 8h12v3H4V8h4zM4 19v-6h6v2h4v-2h6l.001 6H4z"}))}));M.displayName="Briefcase";var V=b.forwardRef((function(e,t){return b.createElement(W.r,Y()({iconAttrs:{fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},iconVerticalAlign:"middle",iconViewBox:"0 0 640 512"},e,{ref:t}),b.createElement("path",{fill:"currentColor",d:"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9V320c0 28.4-10.8 57.7-22.3 80.8-6.5 13-13.9 25.8-22.5 37.6-3.2 4.3-4.1 9.9-2.3 15s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7.3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7-3.2-14.2-7.5-28.7-13.5-42v-24.6c0-30.2 10.2-58.7 27.9-81.5 12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5.8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1l280.6-101c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1c-7.6-2.7-15.6-4.1-23.7-4.1zM128 408c0 35.3 86 72 192 72s192-36.7 192-72l-15.3-145.4L354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6l-142.2-51.4L128 408z"}))}));V.displayName="GraduationCap";const G=(0,c.default)(C.W).withConfig({displayName:"timeline__TimelineContentContainer",componentId:"sc-13vxxlb-0"})(["padding:0;margin-top:",";margin-bottom:",";"],(e=>e.theme.spacing[4]),(e=>e.theme.spacing[4])),F=c.default.ul.withConfig({displayName:"timeline__TimelineContainer",componentId:"sc-13vxxlb-1"})(["list-style:none;padding:"," 0 ",";position:relative;text-align:justify;margin:0;background-color:",";",'{text-align:left;&:before{top:0;bottom:0;position:absolute;content:" ";width:3px;left:50%;margin-left:-1.5px;background-color:',";}}","{&:before{left:40px;}}","{background-color:",";&:before{background-color:",";}}"],(e=>e.theme.spacing[4]),(e=>e.theme.spacing[4]),(e=>e.theme.light.generalBackground),o.c.minWidth.md,(e=>e.theme.light.dividerColor),o.c.maxWidth.md,o.c.dark,(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.dividerColor)),X=c.default.li.withConfig({displayName:"timeline__TimelineElementContainer",componentId:"sc-13vxxlb-2"})(["padding-bottom:",';position:relative;&:before,&:after{content:" ";display:table;}&:after{clear:both;}'],(e=>e.theme.spacing[4])),H=c.default.div.withConfig({displayName:"timeline__TimelinePanel",componentId:"sc-13vxxlb-3"})(["background-color:",";border:"," 1px solid;box-shadow:"," 0 1px 6px;width:100%;float:left;border-radius:3px;position:relative;","{&:before{position:absolute;top:26px;right:-15px;display:inline-block;border-top:15px solid transparent;border-left:"," 14px solid;border-right:",' 0px solid;border-bottom:15px solid transparent;content:" ";}&:after{position:absolute;top:27px;right:-14px;display:inline-block;border-left:'," 14px solid;border-right:",' 0px solid;border-top:14px solid transparent;border-bottom:14px solid transparent;content:" ";}}',"{width:46%;}",";","{background-color:",";border:"," 1px solid;box-shadow:"," 0 1px 6px;&:before{border-left:"," 14px solid;border-right:"," 0px solid;}&:after{border-left:"," 14px solid;border-right:"," 0px solid;}",";}"],(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.light.dividerColor),(e=>e.theme.light.boxShadowLight),o.c.minWidth.md,(e=>e.theme.light.dividerColor),(e=>e.theme.light.dividerColor),(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.light.generalBackgroundLight),o.c.minWidth.md,(e=>e.inverted&&(0,c.css)(["float:right;&:before{border-left-width:0;border-right-width:14px;left:-14px;right:auto;}&:after{border-left-width:0;border-right-width:14px;left:-13px;right:auto;}"])),o.c.dark,(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.boxShadowLight),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.generalBackgroundLight),(e=>e.inverted&&(0,c.css)(["float:right;&:before{border-left-width:0;border-right-width:14px;left:-14px;right:auto;}&:after{border-left-width:0;border-right-width:14px;left:-13px;right:auto;}"]))),J=c.default.div.withConfig({displayName:"timeline__TimelineBadge",componentId:"sc-13vxxlb-4"})(["visibility:hidden;","{visibility:visible;background-color:",";color:",";width:40px;height:40px;line-height:40px;font-size:1.4em;text-align:center;position:absolute;top:20px;left:50%;margin-left:-20px;z-index:100;border-radius:50%;}","{background-color:",";color:",";}"],o.c.minWidth.md,(e=>e.theme.light.primaryColor),(e=>e.theme.light.textAbovePrimaryColor),o.c.dark,(e=>e.theme.dark.primaryColor),(e=>e.theme.dark.textAbovePrimaryColor)),P=c.default.div.withConfig({displayName:"timeline__TimelineTitle",componentId:"sc-13vxxlb-5"})(["font-size:",";margin:",";"],(e=>e.theme.fontSizes[7]),(e=>e.theme.spacing[0])),K=(0,c.default)(O).withConfig({displayName:"timeline__TimelineSubtitle",componentId:"sc-13vxxlb-6"})(["text-align:left;margin-bottom:",";"],(e=>e.theme.spacing[2])),Z=(0,c.default)(n.n).withConfig({displayName:"timeline__TimelineDescription",componentId:"sc-13vxxlb-7"})(["text-align:left;margin-top:",";"],(e=>e.theme.spacing[2])),q=(0,c.default)(T.q).withConfig({displayName:"timeline__TimelineTime",componentId:"sc-13vxxlb-8"})(["margin:",";font-size:",";"],(e=>e.theme.spacing[0]),(e=>e.theme.fontSizes[3])),_=c.default.div.withConfig({displayName:"timeline__TimelinePanelContentContainer",componentId:"sc-13vxxlb-9"})(["padding:",";"],(e=>e.theme.spacing[2])),$=80,ee=c.default.div.withConfig({displayName:"timeline__TimelineImageContainer",componentId:"sc-13vxxlb-10"})(["border:1px solid gray;margin-left:",";margin-right:auto;margin-bottom:15px;display:block;background-color:#fff;width:","px;height:","px;"],(e=>e.theme.spacing[0]),$,$),te=e=>{let{children:t,inverted:a,icon:i}=e;return(0,s.jsxs)(X,{children:[(0,s.jsx)(J,{children:i}),(0,s.jsx)(H,{inverted:a,children:(0,s.jsx)(_,{children:t})})]})},ae=()=>{const e=(0,s.jsx)(M,{size:20}),t=(0,s.jsx)(V,{size:20});return(0,s.jsx)(G,{children:(0,s.jsxs)(F,{children:[(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/lastminute-group.png",alt:"lastminute",placeholder:"blurred",__imageData:a(7598)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://lmgroup.lastminute.com/",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Lastminute.com group"})}),(0,s.jsx)(K,{children:"Mobile application developer"}),(0,s.jsx)(q,{children:"February 2017"}),(0,s.jsxs)(Z,{children:["Designing and implementing iOS and Android apps for the main brands of the company:",(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"lastminute.com"}),(0,s.jsx)("li",{children:"Volagratis"}),(0,s.jsx)("li",{children:"Rumbo"}),(0,s.jsx)("li",{children:"Weg.de"})]})]})]}),(0,s.jsxs)(te,{inverted:!0,icon:t,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/unimib.jpg",alt:"unimib",placeholder:"blurred",__imageData:a(4565)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.disco.unimib.it/it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Milano-Bicocca University"})}),(0,s.jsx)(K,{children:"Master's degree in Computer Science"}),(0,s.jsx)(q,{children:"July 2016"}),(0,s.jsx)(Z,{children:"Thesis: “Spectral Clara Lux Tracer: physically based ray tracer with multiple shading models support”. You can find more info about it in the project section."}),(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"Computer graphics"}),(0,s.jsx)("li",{children:"Software engineering"}),(0,s.jsx)("li",{children:"Algorithm and Theoretical CS"}),(0,s.jsx)("li",{children:"IT security"}),(0,s.jsx)("li",{children:"IT management"}),(0,s.jsx)("li",{children:"Design and user experience"})]})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/condenast.png",alt:"condenast",placeholder:"blurred",__imageData:a(6215)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.condenast.it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Condé Nast Italia"})}),(0,s.jsx)(K,{children:"Mobile/Web application developer"}),(0,s.jsx)(q,{children:"June 2013"}),(0,s.jsx)(Z,{children:"Designing and implementing iOS and Android apps for the main brands of the company: Vanity Fair, Glamour, Wired, Vogue. I also worked with the web team to develop the new version of the official web sites for GQ Italia, Glamour, CNLive! and Vogue Italia."})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/shi.png",alt:"shi",placeholder:"blurred",__imageData:a(3002)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.linkedin.com/company/shi-srl/?originalSubdomain=it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"SHI"})}),(0,s.jsx)(K,{children:"iOS/Web Developer"}),(0,s.jsx)(q,{children:"October 2010"}),(0,s.jsx)(Z,{children:"Design and development of mobile application on iOS, Android and Windows phone platform, for enterprise distribution (ad-hoc distribution) or within the various app store. Design and development of Web application used as backend for mobile app. Design and development of Enterprise Web application."})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/bottinelli-informatica.png",alt:"bottinelli informatica",placeholder:"blurred",__imageData:a(9358)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"#",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Bottinelli informatica"})}),(0,s.jsx)(K,{children:"Developer"}),(0,s.jsx)(q,{children:"August 2009"}),(0,s.jsx)(Z,{children:"Software development for textile industry."})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/avanade.png",alt:"avanade",placeholder:"blurred",__imageData:a(3780)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.avanade.com",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Avanade"})}),(0,s.jsx)(K,{children:"PMO Consultant"}),(0,s.jsx)(q,{children:"October 2008"}),(0,s.jsxs)(Z,{children:[" ","Assigned on Eurosig integration BA-HVB/Unicredit project, I worked with the Accenture Consultant team as a PMO.",(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"Tracking creation and evolution of functional specification to cover the gaps between ASC, CRE, PAY, MDM and BSS sector of the IT systems of Unicredit and HVB bank."}),(0,s.jsx)("li",{children:"Publishing statistics to show the state of art of the functional specification produced, the open change request and the state of user test. Maintenance of tools created with Microsoft Excel, Microsoft Powerpoint and VBA used to generate the above mentioned statistics."}),(0,s.jsx)("li",{children:"Maintenance of tools used to manage WBS of the project inside Accenture team."})]})]})]}),(0,s.jsxs)(te,{inverted:!0,icon:t,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/insubria.png",alt:"insubria",placeholder:"blurred",__imageData:a(8543)})}),(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.uninsubria.it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Insubria University"})}),(0,s.jsx)(K,{children:"Bachelor's degree in Computer Science"}),(0,s.jsx)(q,{children:"October 2008"}),(0,s.jsx)(Z,{children:"Thesis: “Grandi Giardini: implementazione di un portale web con funzionalità e-commerce”. A web e-commerce developed for Grandi Giardini Italiani s.r.l., a company dealing with the organization of events in some of the most beautiful italian gardens (never deployed in production)."}),(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"Software engineering"}),(0,s.jsx)("li",{children:"Algorithm and Theoretical CS"}),(0,s.jsx)("li",{children:"IT security"}),(0,s.jsx)("li",{children:"IT management"}),(0,s.jsx)("li",{children:"Networking"}),(0,s.jsx)("li",{children:"Programming"})]})]}),(0,s.jsxs)(te,{inverted:!0,icon:t,children:[(0,s.jsx)(Q.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"#",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"ITCG Romagnosi"})}),(0,s.jsx)(K,{children:"High school in Accountant"}),(0,s.jsx)(q,{children:"July 2005"})]})]})})},ie=(0,c.default)(r.M).withConfig({displayName:"resume__ResumeContainer",componentId:"sc-18s4otr-0"})(["padding-left:0;padding-right:0;background-color:",";","{background-color:",";}"],(e=>e.theme.light.generalBackground),o.c.dark,(e=>e.theme.dark.generalBackground));var ne=function(e){return e.projects="projects",e.carrier="carrier",e}(ne||{});const ce=()=>{const{0:e,1:t}=(0,b.useState)(ne.projects);return(0,s.jsxs)(ie,{children:[(0,s.jsx)(j,{tab1:{active:e===ne.projects,label:"Open Source",link:"#personal-projects",trackingAction:h.U.action.open_personal_projects_tab,trackingCategory:h.U.category.home,trackingLabel:h.U.label.body,action:()=>t(ne.projects)},tab2:{active:e===ne.carrier,label:"Experience",link:"#experience",trackingAction:h.U.action.open_education_and_experiences_tab,trackingCategory:h.U.category.home,trackingLabel:h.U.label.body,action:()=>t(ne.carrier)}}),(0,s.jsxs)("div",{children:[e===ne.projects&&(0,s.jsx)(L,{}),e===ne.carrier&&(0,s.jsx)(ae,{})]})]})};var re=e=>{let{author:t}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(g,{author:t}),(0,s.jsx)(ce,{})]})}},5814:function(e,t,a){a.d(t,{M:function(){return i}});const i=a(5086).default.div.withConfig({displayName:"container-fluid__ContainerFluid",componentId:"sc-13iqbmo-0"})(["width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto;"])},6137:function(e,t,a){a.d(t,{W:function(){return r}});var i=a(5086),n=a(5814),c=a(4148);const r=(0,i.default)(n.M).withConfig({displayName:"container__Container",componentId:"sc-s0w66r-0"})(["","{max-width:540px;}","{max-width:720px;}","{max-width:960px;}"],c.c.minWidth.xs,c.c.minWidth.sm,c.c.minWidth.md)},576:function(e,t,a){a.d(t,{a:function(){return r},m:function(){return c}});var i=a(5086),n=a(291);const c=(0,i.css)(["font-size:",";",""],(e=>e.theme.fontSizes[9]),n.J),r=i.default.h3.withConfig({displayName:"heading3__Heading3",componentId:"sc-13l3151-0"})(["",""],c)},3348:function(e,t,a){a.d(t,{a:function(){return c}});var i=a(5086),n=a(4148);const c=i.default.ul.withConfig({displayName:"list__List",componentId:"sc-hcphk6-0"})(["font-size:",";color:",";line-height:",";","{color:",";}"],(e=>e.theme.fontSizes[2]),(e=>e.theme.light.primaryTextColor),(e=>e.theme.lineHeight),n.c.dark,(e=>e.theme.dark.primaryTextColor))},281:function(e,t,a){a.d(t,{n:function(){return c}});var i=a(5086),n=a(4148);const c=i.default.p.withConfig({displayName:"paragraph__Paragraph",componentId:"sc-jaaqjv-0"})(["font-size:",";color:",";margin:",";line-height:",";","{color:",";}"],(e=>e.theme.fontSizes[2]),(e=>e.theme.light.primaryTextColor),(e=>e.theme.spacing[0]),(e=>e.theme.lineHeight),n.c.dark,(e=>e.theme.dark.primaryTextColor))},4737:function(e,t,a){a.d(t,{K:function(){return c}});var i=a(5086),n=a(9495);const c=i.default.a.withConfig({displayName:"standard-external-link__StandardExternalLink",componentId:"sc-sklbck-0"})(["",""],n.L)},9495:function(e,t,a){a.d(t,{L:function(){return c}});var i=a(5086),n=a(4148);const c=(0,i.css)(["font-size:",";color:",";text-decoration:none;line-height:",";","{color:",";}&:hover{color:",";","{color:",";}}"],(e=>e.theme.fontSizes[2]),(e=>e.theme.light.accentColor),(e=>e.theme.lineHeight),n.c.dark,(e=>e.theme.dark.accentColor),(e=>e.theme.light.accentColor),n.c.dark,(e=>e.theme.dark.accentColor))},7553:function(e,t,a){a.d(t,{q:function(){return c}});var i=a(5086),n=a(4148);const c=i.default.time.withConfig({displayName:"time__Time",componentId:"sc-a9frgs-0"})(["color:",";","{color:",";}"],(e=>e.theme.light.secondaryTextColor),n.c.dark,(e=>e.theme.dark.secondaryTextColor))},9815:function(e,t,a){a.d(t,{V:function(){return r}});var i=a(6918),n=a(4737),c=a(5893);const r=e=>{let{children:t,href:a,trackingData:r,target:o,rel:s}=e;return(0,c.jsx)(n.K,{href:a,onClick:()=>{(0,i.$)(r)},target:o,rel:s,children:t})}},3780:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADZklEQVR42o1UeUhUYRD/5Zq6Hh0eHVbbXaJlUaZdtBQdFJZFbD5XbcnWSP/JSrN7s1Mjk+4SraxUWjLMIpOIJUglSkmwkyg7jIggwspKd6d5b31vt1bJB8PMN9/M7/t9M/M9oJOPTHCTdB02UCPK6TGu2WqRKfnIvtftj8xQidp2B8lUjWLFfw9FVAWDc8z/wQg9JF2KIXQDVVQDf2WvFv2pEpVUiCBxbdbpVGboVN1iR2dxkIph7Li+O1ngLtnXsY7KkOUca0IXJVDYbcdoOgyzDPJPjLe1xONCg7/xQL0q5VKd2rhW8sOe2zm7NOQyqCDZOket5Ea9n7Dg7qd5c8uPw+Lb4GsobOyr3yiVwPn6ciLrSFsiLjqDiAeRzh78IXSqqWnMvL1UgZOUj+Gi77VmUcWbsOkjXZjywo0ElFIClrbmeQ4jUXhE5Br9mDtY+zkqrFy0244h2prNPeHvy4SoVd9mhGyxE+pgKTGJQwnF4zltVO2ibPUh2xHfi3ShdzGVBQp0E56t2oCiloiQcQqBfdygNJz+pe0/zhrjd0psnoPdSgyyJaChbTlOfJuN081jMFPyn/EZT5bAHbTb+6l1g89VeuYbSIahXkpeMgS+1RXS4wklIfjvVxGHoxSL6d+1GPxxEipearBX8i9BlFXAdSrrk0oFzDhbXUgZHvlkwHlbLLZx3gMxV6mhAiggguUWA/iJ60dq7HnUC4dpNZdiOcLl5tEhZrnecxTlwO/nYsS0LcU5eeRc3+4K6QpVzFRPq5DyegTaXwVgn7j3dirUYqLcyebJ0LTM4ZcTDY0zhitoPELbBWxnnUqbEVADlNS5IUHcewj0tM8cVJ8jce3rLCz8d147BXWeKQb0vw/cZtHJe+9CUPAhHOmibdG6vihluKXxEfUa9BSlMRQeEjNvDHzQA6X1Xsh/MQBXm0Zgk3yonNP1DwKOOjl/FsC9DgivBvopBGIxrGsQPRaKY8MjMJoSoWE9jWURNyeIG2X4vQJTKAPBPG/zm6PhzTVO4vnNZeCxnBtDzle3xaMXJ+dwUAHrrRxgYtGzFPHeTj5gB9tZfGAs61KOyWMx8kFZvD7LdiHriQ6GAsLYYWZJZztJAoyHgQMv2/TIZHsZv/E17M+VDhGQxr79bO/mmD1s72Lm0vz+Ac6BpQvoocCOAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/979e77f135579d6ed51adcbaafa5c2f9/1f8a1/avanade.png","srcSet":"/static/979e77f135579d6ed51adcbaafa5c2f9/ca121/avanade.png 20w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/f31ef/avanade.png 40w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/1f8a1/avanade.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/979e77f135579d6ed51adcbaafa5c2f9/264f2/avanade.webp 20w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/e73fe/avanade.webp 40w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/61ca6/avanade.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},3002:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACE0lEQVR42tWUz08TQRTH+SM8Gv8CE5OKIUYTOZDISUw8mNYYiTQxWjBETlQrpFYoKDotQtggLdWWFJVtoUCLSrCyFlJFo7eewZMHWijd7fz0tU2WsKVevOjbl8kk3/eZ92beztThv7C6fwPWtCIYqWEggV4T5pxTxvJ7hb1qL6iMgc4OgSGnEGLs1YfzNx67UbB/6OUACj8anhn0vHGjqf6hQJ936ky3f2LlO4RB8D5cqUVwdqLFgQJxkCG5qmq65wuq4MQ58/nq+BqoajXMKK03u+aSlbVLu4OvWNYI1jATLJvGmwGY4KJmhDmjpsvOyMo3gCExoRR2KDgHFsrgQvBthf+UDocZJaev9NlHopbeF5YHwWa7b/LdRrsUX89swXI2/3uLlOwMw9JUP/N9GOzctQGzfeLYxR7r4HRjl2T3vzXZRk/deW5+Gj3S6m24F2pyhqGC4gG4xMNp84ZLPdb7k2PRT50e2WR90nh79HgbutAbcr1Wjraik12+prtBI6y3avVL5tbDUPdI1DG+0IFk+eMPJCuZrV8gDc+n3fKatPQVmmKEK5nbHb755Q0IZYzBCP8EjJTCJjFMPJHVm89ixj7rmV1eueW6e24xObuozMZTsaV0LLEeS6QWEsp0ZPmszYMiKWOfdQMBKsrmdnI7u2XPl700z+Z2MSHlztW8GBrBmFJS5WCkFPCHi/H/PAa/AbYqLi3oatrZAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c49c35e93f9b072b695e68b85f8b34a3/1f8a1/shi.png","srcSet":"/static/c49c35e93f9b072b695e68b85f8b34a3/ca121/shi.png 20w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/f31ef/shi.png 40w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/1f8a1/shi.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/c49c35e93f9b072b695e68b85f8b34a3/264f2/shi.webp 20w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/e73fe/shi.webp 40w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/61ca6/shi.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},5021:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA3XAAAN1wFCKJt4AAACLElEQVR42u2TPWhTURTH76stpq2pk3MRtIOjs7PgJDgp4qL4VVSqbW3SiIO6FexQBwU/UbSIDg4FddKhtXlpkqIlmprkoSam1ESsyWtiEvP3f++7aih9fuEieOHAue/e97vn/M85QgxO4a/af+A/ADR+YsLl2x9HKAFNJ8LO3s89fSMQdge28FKrLwQPrZV+G036noEQmv36Xr+JNt8UVtNvpi94JgJLgQHn4vCDNDK5MmJvinj2qoCZ1wX6NjLvSugeTUIcmUT/HQupuUXkFz5hLJrHxqGnEHzUCGigoYEGgRcfZVG0q8jmy5CrVqsjnSuhUqqi+2YSW0Zi6vv7YhXxjK380Yl5iD7TCWppyu00z4CJDaeiqBKWeGtjDVPqkJd7gjj7MK0gvtsWxIEJ7Lz2Ep1npqlnyL3KUpN1p6Oofa7DmrPhVdpR+GNBHL6VVMDUfAkH6bfLyHqDqjjLAptkJNSjqwHY4f9+vop2L5LD15WhNDsuxZX+xnIpGxq4XgNT3yLUZ4x+xdEgtl+ZxXh8QUEXyzVsGp6BOG7+HlDq1EltN5+LQRx6ArF/HJcfZxV08C417Zn8MbBCYLIhZS8tkvqoAEP309hzdRYRq6D2e68nlMauwC5Wrl4HrKwG6nR330jgQ7GiIHxPrbHpvNMFrqNHgPdkGLuo07YLL9DS+BirupZp72NEPjb41vPPsVJOiv9XZrnXdBq2sQtke8ifZXpSsz5nQgwd4RcoEvKug3eMGgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/866c7ad6483bd5234a01df43e8df4347/1f8a1/typescript.png","srcSet":"/static/866c7ad6483bd5234a01df43e8df4347/ca121/typescript.png 20w,\\n/static/866c7ad6483bd5234a01df43e8df4347/f31ef/typescript.png 40w,\\n/static/866c7ad6483bd5234a01df43e8df4347/1f8a1/typescript.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/866c7ad6483bd5234a01df43e8df4347/264f2/typescript.webp 20w,\\n/static/866c7ad6483bd5234a01df43e8df4347/e73fe/typescript.webp 40w,\\n/static/866c7ad6483bd5234a01df43e8df4347/61ca6/typescript.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},6781:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEsklEQVR42nVVbWxTVRg+tyX+WMIPfojGHyTTGDAx/tAoBAIKrF0JSpxYGBsQNtZ2K/gHMQEdK7bbOlhwQWRre/vBKiPLMkbABDGByYABEpP1a107yocGhs4wQBlId+99fM+9bWVET3Luee778ZzzftxzGZs+BHMP9A6HQ8dftoZTxRb/cGeNL/aYTxWHI8Vc53BA967jxxmMQWD/Ncw9PXpuxHG1f2Sm1T9cbw0k79sP34BFjCt8csxlNaT7jGzyxNy3QKQJoM/j2lCynE5ydcvhm7AFk7LVF5OsYgw0FasvKtkCSZnrrGIiU+tPlucPoXJwnA/PHhieXyMm+uvC11AbSikWct7QPqRUHBjCOpoV32grl3Edt+G2tPkZ26H0O7nT6dhmMfaCRYz5a0PpbF1nBjW+qFzljcrrD0awu3cUR38aw4X0XQym7qL38hgcJFt/cAhVnqhMxHJdOANrMJW1BYbF9kHMZrZgauCT7ttEFJcsFN6mjgjswTgujk5AURTwkVvUIdML19mDCWxsj6DGG5XswaS09cgtLKw/fZZR8hUuJDKl2hPFllAC18cnVWdJVohgOpmUE2R+m8S2wymeS6xsHlCer/pWYmsDYJu9UYVagioZwwYKczA9oTpMybK6Tv4tIf7LA8R//RMPCec34qNn4AZesnRDv8YHtkYEK/crrEBGx3ceHVXDy58qNfYQ27tG1JzxonB8/Y/HePjXYzSIg5i11k9EPujWBSCs8dNK75zQKsbBq3nsyp1CeI+eSPi0K6kS8bbZEkqqxKsa+/G6rQvM+DXmVYUxY7UXRWYf4U6wjzxPEZLj5dGJAmHk5gNUksxORHWBBN53n8eLliMQPvaClXlQ6TqJ8d8fwOI+hR0d5zB26x5Ktvc+Q3h1OuEmXwKVbZfw6kYKy+gGM3dAVxEE+5ATfo/xcSJs+QE7POdw5/Y9GLb3TQ+5j3pOaxMFWapJ2c5jYIvqISxzQCh1qXjuuna8Ye8GK9mPuZs6oafTFq324TUeclkuZGoZNT/Nx69rVZS0Cl/5+RreNLfhucUNmLGoAW8RjkRvYvLRE+zynsesyhCEyqBaDMHs04rC24a6HFs7R7D885P4rj+pkj3Jai3CK3r+QprmqIr5yOY29HZdAiv9Crr1IUoF9eBaUWH2Q2mlYt9FaV419dCSXZhjakZy5LbWi+QoP9XZvP+mpjSy4eFbeGXVXrCllI6VrQrlV2KVhxS2cFvfQNEH+0FkUzqjS2LvOTBnhRsnTsXUb07J5VTNrfa5kC5KG1ORljRAMJDP8i+n2Mo2yuGBs4y9XDubLXeJgsmdZaUt0JGBsHS3rF9Qj2WbvdjnO4Pe40M4emIIrb7TWFbtAdcxsiFbmZlaqCebs8zgEpnBMZvl7zNmaJ7PSlz9zLQHulK3ojM4JbZ4l8Le3gm24AttckwyndEpCWTDbYmonxlb/r2+1Ic5d+NybGgqZyXOjLCilYibZD2lgVpG4VNvaqS0NNGpWonImVFtc/epxpHDBYHZrBGv2jOTjOuZofE+M+2FUOJUhBKXwjEzNt1TddzmWb//+bnoC7saXMVEGqZU8BxlVcxlWjj5yKb9pP4B/qgC/xGyd3YAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5ca81a7b4761b05d23be9ece1e1f540f/20fcb/cpp.png","srcSet":"/static/5ca81a7b4761b05d23be9ece1e1f540f/067dc/cpp.png 25w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/18e85/cpp.png 50w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/20fcb/cpp.png 99w","sizes":"(min-width: 99px) 99px, 100vw"},"sources":[{"srcSet":"/static/5ca81a7b4761b05d23be9ece1e1f540f/f608f/cpp.webp 25w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/6e098/cpp.webp 50w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/7b8a5/cpp.webp 99w","type":"image/webp","sizes":"(min-width: 99px) 99px, 100vw"}]},"width":99,"height":111}')},6215:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTElEQVR42u1STU/DMAxNYdP4GJvo6NokTuKknYrKEIhqQkxCAiHxcYADN+78/9+ATccB1CLtwIlZimzZec9+iYXY2P+0qMVHLfWfmKij1gnqIvluRVEM6IySJBkCwC6dOE3TffblpDyI43gEkBfOuR0h6r5SasIx31lhB1VVDf3Up1lWJAIAH6y1wRi8J79Egy9OuxsC3SLipbX+3YF7C2mYUv9t58KrMeYEwC+47o2/JvgdQk48+VJIGSx3s0dWqlwZIpUAM81TcUzExzTtPIQwJsKe9z7VWs+yDB3niVzRnYzuep6+7c16LJ2bSCn3eCquc478FktkX9d1v+tNv8gYKFDjmSEZdJ41xdT5AiDMSfZjOAxjzjfvGJ5WDTs/6DNB4yM2cgoCGlRYUu6cSE9ZvlPuqqn7BctdYyt+36t1FztqWey2/Mb+wD4AVlMrAQYV0O4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/028c0f3e8cb87c90c02ae4b09bcf67cf/1f8a1/condenast.png","srcSet":"/static/028c0f3e8cb87c90c02ae4b09bcf67cf/ca121/condenast.png 20w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/f31ef/condenast.png 40w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/1f8a1/condenast.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/028c0f3e8cb87c90c02ae4b09bcf67cf/264f2/condenast.webp 20w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/e73fe/condenast.webp 40w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/61ca6/condenast.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},4565:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAEEBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAelUIox0MoP/xAAbEAACAgMBAAAAAAAAAAAAAAABEQAhAxIjQf/aAAgBAQABBQKzKTj1JngPF3ms/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAdEAABBAIDAAAAAAAAAAAAAAAAAQIRIRCBMUKx/9oACAEBAAY/AilUS8TNnA3Xpt42+qH/xAAdEAACAgIDAQAAAAAAAAAAAAAAARExIUFRYXGR/9oACAEBAAE/IcuG8Kh2yeCktS5DeNEH8sIUpOnA9Mvt7Jphk9Jal4f/2gAMAwEAAgADAAAAEEMPAP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EAB4QAQADAQACAwEAAAAAAAAAAAEAESExQWFRscHR/9oACAEBAAE/EKqdzruzSGWrpd/HJ5wKFw/sECQ1Ke2LU6cLR65sYYHHS/c6XDlKOUQHbC1co8RO7erQYf2f/9k="},"images":{"fallback":{"src":"/static/5a6eadd2118f0241d417d34e235d7e96/499f6/unimib.jpg","srcSet":"/static/5a6eadd2118f0241d417d34e235d7e96/f4935/unimib.jpg 20w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/2f28c/unimib.jpg 40w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/499f6/unimib.jpg 80w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/41624/unimib.jpg 160w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/5a6eadd2118f0241d417d34e235d7e96/264f2/unimib.webp 20w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/e73fe/unimib.webp 40w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/61ca6/unimib.webp 80w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/60b4d/unimib.webp 160w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},9934:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAADIElEQVR42l1TWU8TYRQdDT65PPmgCcYHSTQKRWlSBFcgRaOCgNZQSmwtpMiuZZsu0+lil2lpBRQRFKQgBDBqF5WWpYILbsQtxuXBH+CT+CgzznGKGo03+ZKTLzfn3nPvuQQhBIDlwlv2GyfMzHxOGR59re4bnG/t6nk6cvHyi7C3fTbs9EyMGM1hb1PLDXWJqjtFLNasIJYCy2gay5fgH/AFWHV99HWd5/z9lzbnJGtxxEBZp2F3z8J7PgjhDzpqErQtBtIYQZ32JntS3fsqv6C1fnOmevUvLvoX6djY24z2zocfnZ5HaG2b4x3MFO/yxDib8wFrNI+ymZmpXEfnPc7tm2MN5gjr9s1yjDfGt118xtucj6Es6/t04Ig7Y4msu3s2TUhYII1RWOzjbIlCxR0+dJiXSqVQlzXD5R7AmjWrUHC0CHv35oDx+CGTyZGXl89n7c/mKqv0QoE5aKqGv2XlWsWEg4ndisto1N39bneFkJS0EQbqKvTGXiQnb4FcXox9+3PRP/AEKaI0KBRybE8VwWofxRmtD0mbNsDpDi8azPdxSuO/TZhs0Td60zhIKvqjRXcZYnEqunqeo17bgXSJGFJpFoqOV6DryhtkZOxGYWEBcnJy0dv/DupyCqmiZLi9Uz9IKoLK2rG3hN509yZlmRLkznwv1xixft1aoSsFJBIJrLZOnJAVQdvYjnPOEPLzD6K4WI7ExESUlCiwc2c6SH0XDObooklYoLLMf4vQaod3NOmCX30dL4W5FLJ5eTLO44vydmYcVsc0mNY7grwIDHQIV/oeCd1lQ6mqh8tzjxdsxBktE2y8ocrakYU92XTa0mJqzg5JDHT4vdM1ICQG+BbjBN9IhrhGMsA2tITYJl2IayCDHGWJsDpDG2tnAhwp5OhMUT5uoVOa/g/SQ4504l/vlJZ6VurpyaoGMjDfpAssGugJxGXEFxb3YxxTlmlhNI/RrI+g5uzYolrjnz8mu1AtEjWs/E3219x/LkUokFBR27v1dN2g8nT1IKOpGhwqr/AHVWXXggplz5BMcYkpknWodmVZtxHEvoT/L+Un/7TR6neIuUQAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/620c56e99f37d2c1428113d7a58d9a79/1db8c/php.png","srcSet":"/static/620c56e99f37d2c1428113d7a58d9a79/dd0fa/php.png 38w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/2238c/php.png 75w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/1db8c/php.png 150w","sizes":"(min-width: 150px) 150px, 100vw"},"sources":[{"srcSet":"/static/620c56e99f37d2c1428113d7a58d9a79/39a61/php.webp 38w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/fad43/php.webp 75w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/9f469/php.webp 150w","type":"image/webp","sizes":"(min-width: 150px) 150px, 100vw"}]},"width":150,"height":81}')},5795:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABu0lEQVR42nVRTUscQRBto5uohCUQ49WLH9vVY1ZZEBMUBUEPipKEQGBzCB70kBAQFb3ICEYJJDPdvTOig4JeXW85bDCzPbNfJBEEYU/5Df6JsXp1VQIWFA3V71W9ekUiEjUQjFynjPtgp32w9hTlhwqExHc56OETfsJ5qjERIQ06yX9xXbutK8Zf58G+wPz3C6xPBZoZPgHep5iVDMEdyoM1kOs042cpr7XOCZP8Sa5v8xkKeZQF8+HvQaslS7KN5Ce1hyvGdlRkmfMSc6b+0J2uq6nmgzr5oMNsRsWrIWYe+Ac90EvNxRTYMmTiaxEy8yGVuwHjE+TU8NaqyYMI113Q5Apzt4og00j6rKi9FID8GIAwEbeaN6xXFeYc/TW8SY0tM+cYhSwHTLzBxq6fEAt3FMpqibpjhV5nutjrzpTBeYugd0ga9RP8hWL2UsEQHJtvKJDCp/YM+r2Jqr+g17OIWz/uXl+58dDXHlK7imusBTWFoqtAZb9i8qX2EH16rL2q+TcSNp08/9b+o/t7m5fyYmdX2WqSkSZyc+UBGQ+peI+Td33g+wEVmcAQi6h8vH5lUrtydO+V9d8l+Z/Mru/JKlAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/529407730cf9a43a0559b8bc29406a3b/5e4f6/opengl-es.png","srcSet":"/static/529407730cf9a43a0559b8bc29406a3b/63986/opengl-es.png 60w,\\n/static/529407730cf9a43a0559b8bc29406a3b/bcec9/opengl-es.png 120w,\\n/static/529407730cf9a43a0559b8bc29406a3b/5e4f6/opengl-es.png 240w","sizes":"(min-width: 240px) 240px, 100vw"},"sources":[{"srcSet":"/static/529407730cf9a43a0559b8bc29406a3b/df675/opengl-es.webp 60w,\\n/static/529407730cf9a43a0559b8bc29406a3b/5763e/opengl-es.webp 120w,\\n/static/529407730cf9a43a0559b8bc29406a3b/26d93/opengl-es.webp 240w","type":"image/webp","sizes":"(min-width: 240px) 240px, 100vw"}]},"width":240,"height":80}')},6824:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAErklEQVR42m1V/W8UVRR9bA0L2+7Ozm7ZWXZnZ3dm3ptFSIMCSmJUQAQCGLWJGGilGAsSMPoD1GJUTIx8VNEKlUqBQqUiUGhXivQjFCUY0PJhoqgIREEIAYL+Aag7c7wzbbWgk7zNy+x9591z77lnGPv3GUKrwN08yJg8yudbyNVku2Hxq4Zh2oZh2Aa3rvJEfP/dPlY5ibFw/7mC/rO3Pe4Ln7uxouH5iXmLL8eXr4L+wBRHxEbAME2Yhg4RK0Zm8gxHWVGD5NzKS9lwqLz/vG8w6BBvAQVCluqTi5ajqOOME6nZZge6z+ajq7c4ZiYDUzcRebfZKez4Ph9Z22gXdp911GeWwIpKdXTW9w/OwI8pRH02nUbo4568WlpmZwNDoY+dgHB9DtLWg5C2dUHe0AJjdAmyfh9GLlhqhxsP5LMpFYZl1Q3KlDEhxLNCcBgZPR9sOQ5tyiwYnMNUE+BqGkNP38Cw3isQyRRMLQWqJ9TZcxBq/twxdT3P3VjLmu+BlZSUyJTdz3SLG2xL27uhTZ0FS5YgVJUy60Dx6+sRfbMe4Q9zBJqEJRUhNfspSJv2w0yptmFlYXJ+ni6SGLesSi4EeKw4L5Ia0fsMoR09iL7VgKJdX6Lg3J8ItfYi2HaC9n8huPOIBx785AjCG9sglDh4PGa7GMR0AeN6JmelNSgvvZEPtp7A8J7zCHR9h9ir78F/+jrRnwnj3vtgUD1TM56E/5vrUFa8TXFnETh0DsF9vYgvrs67bCjDvYxnMlfCDe0I7jnmaJOmIzNuItWmB1JDDsqLK2GaFmXSCvn93eBpHbGq1US9DRKx0MeOR2ra4yhqO+lE6vZQvdWLTHnhNVtq6oSIyjAzafARUci1O+A/dhnWyATCm9rAbgLsN0Be9xHEyCSGnrqByJrNXqzbJBFXqBRfQFn08i2mLHnFDjV1EWCkH7CYAJvhP34FVjwB+YO9Hhj7HYjUNEIkXMCbkN+hPcW6gJwuDu4+injlsluMp7TLMnWP5OKkH5oKfdz9pMXD1MGcW1eiaVBmzSAxg2IxonotXdJCZTlEsRM9yoWfnnYitTvBk8mLjHSUszQNMWpKUe6UV+jCzm+hVNfAf+oatEdmQb9nAjWF6jWj1GtKrGoNAt1nMPzwhb6mLKwaaEoL49nsc55slGKbpzOQtnciSBlGV29F0Z5jnmyCrV+TbHr79q5sVjWQtA5B2tzu1XSQbCqYpmkyKf2CJ2wSqSdsysqiJnFX2I0HUbxyg7ekLQf6hC2HoD36GIm+0xsG0z1rmj8RTsibFtMUFYK7o2fQ6H3laJNn9jlMim5XU/D3XoX/5DWvhqamev+lpj+B4K6jjpHJ2O7oEdMyNnigucXrBswhWVrumYMxpgTy+t0INXUjtL0L4bp+cxh2FxLli4lNRz5L9afRrR2MNWBfPqKyIblwGQpd+yKLCnT9mI+s2+EYJg2/bnj2Fej8gexrW599zV9KcgvX3mlftxlsNiqXJeY9fzFeRQb78DTHNVWDzNV1GKH0G2z1GiSfrvxlVKhw7v8Z7H8+AeMZk0b72AIzobQSnV8J7A+dliHEJXq3b4yPVbgxbuycOz4BfwMW0WG3/7I40QAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/2d9118605a5e0c4c2a0b5f08bde874f1/1f8a1/react.png","srcSet":"/static/2d9118605a5e0c4c2a0b5f08bde874f1/ca121/react.png 20w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/f31ef/react.png 40w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/1f8a1/react.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/2d9118605a5e0c4c2a0b5f08bde874f1/264f2/react.webp 20w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/e73fe/react.webp 40w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/61ca6/react.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},7299:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEKElEQVR42rVVa0ybVRjuZFETE/Wnf7xHHZeNS0Hl4iT+2kVnnGx/jAlON+L4M2E4F10ydSpb/GU0g4xL6cpW6uIy5bLCev+KFCi9sbbQlrZQCnS1F1i5tN/3vb7na8tqMqzGeJIn7/ne732ec77vnPMcHi+jAUhySFxe9f0QXLFR9/KwjSD9HFyZ0kRXvT+m3uXwtmr48gESwzFXzVykHx/hs+iqrzGwbBQEIkbByrq/AVg4NRfpg3DMU0NqJRJJdkGMuc6l3vDwTBMoHLXsTft+IFA6jrBaVxO4A9IQ1uT97QwzxPiOJfG8WFcOrbLn6C4VnxaqyxJdmrKEAPstsmdpyehucCxJ/FhbksnNFNuWio/6wgPGHn0xSE11zIjjHAjUxdBNVSKqQKDaBTrndzBg/IiR6EtgPjpoQM4jmRqcOsDkg6n+Ma37Y2iT5yb6DO/DoPkoCDVl0K2t4iDUlGKuDvoM78EleT6tdR9HCnuUcKenpx/iZsopA49Tn1nq7RePlUKHcifdJt+BpBehU7kLsTOFQsy9gAO+xNX0jJeAJzj4a3IyvOROID83EvM1Y6xdCI9YKecnoLQ2MCrrSSBQWhvvwYY5WxPiJOkzw65G8Id1ZuR+GF3zfcstlPvODYti5h2YmD1H+0OjzE3TBzBkqUMcy4I6kJprwR+aYCbmvqTlrgPg+eM3O09tP0W33no+If79Ddro/QnaFXnQqSpCFGZBEX72DjB6LkHPcDVzcehpWmP/nOGprKdZ/B9wTbcPTN4WuKx5ObWqFVlQCSKqlBMk3A5FPmhsX7A8le00jlSQEmzlVlWEBBFVngUVODgfjN42+Fm3F78sFzT2M/C/CLL/RdC0KZiXFFTe/pQhe00yspc1ei6y/0ZQRPHB4G5lCbdDUcDiejC80Zmv11rlz8B1/X7WviCCLjX/HwsK8VhOLUjgl/E9bIvsSdB7muO8wLJJOOE7C87F6z50kTtCqhiuUK+xmaLJVa/8i2A3qdEWofPIA47Fa3793FlYChuukJNCzmAl4glX4IZCPMoHgbIwfpl6dZPcpS5mBKoSdlNQ8wpXIx4rBlegV4bcpxDliIfTbszZT2w9eMKyeB6kt2uYq8PVwIlqKmDAfBj6zYe4Psld1b6ONYcZy2IzrK4HGtJGu2ljxCRTwtsRu9fjMYHMWg/tyny617wPojHvQOiuTdZrfhPaFPm03FYPiUS8HWurk1zOGHLuZ7LbU/Etpf0E2VtxmeMgRO7OngmvTH4jcxxCwdwNytlAroc9mZytXDst+G5yhgUbUvsBvD/cXwWXLd9L7QdxkIIN5VQ9EXw76yWVvnCwqGpitplsBXp8kZjoWh0NoeNjC/VAcqb5C0Sw/L72v1WLxFwXLLMd7HxoZAhJjyMe80d0Q5OznWwo5ji/FfFP2QJ4CpHvjjIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/8c4e5772010601223509bb4b1a587e66/bed6b/android.png","srcSet":"/static/8c4e5772010601223509bb4b1a587e66/b2057/android.png 21w,\\n/static/8c4e5772010601223509bb4b1a587e66/e5276/android.png 43w,\\n/static/8c4e5772010601223509bb4b1a587e66/bed6b/android.png 85w","sizes":"(min-width: 85px) 85px, 100vw"},"sources":[{"srcSet":"/static/8c4e5772010601223509bb4b1a587e66/d3b0e/android.webp 21w,\\n/static/8c4e5772010601223509bb4b1a587e66/bf6a8/android.webp 43w,\\n/static/8c4e5772010601223509bb4b1a587e66/1d5ef/android.webp 85w","type":"image/webp","sizes":"(min-width: 85px) 85px, 100vw"}]},"width":85,"height":100}')},7842:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAADJ0lEQVR42n3Sa0yTZxQH8GMpIGxB0Tnj0MVrRA2ROJZZMzZZ5w1qW6RKrMbbzAYh1GYRl1VZMd0WE4OgiIxpjAiCdzGpRIRYmoEKGpAV0SpILVCoQAsUbOzb5/37rpkfpsme5JcnOefk5Hz4ExFFCQ4KfhZkC44KMgRB9P/vF4FGRHRgAtFhMVFcoPpROM0Qi8Wa0PCItSFhHypF4rA0kShEFxFK8/7pm/Rfi3FxY9Bber0+hPRtU4KjFm0NmxOjEs1YqKbp83dRjGwZAcE0oIz+bVw2u9UdP+XOqDTyHpcUaX6VHNXyMjn68n/uASYE/szmaaSt/Zs05k7KuP00aF+DNUh3r+0Dndkl/rF2Hw2t/iQfP6ngLi/iXl0qBP6q4HEqC8PpC12j9g2lo8/k597yPpeV9lg2XZq13ziuvfAEx6qtfFFdJ663dPtlJVZQWo2GepaKsjx/5KD/YZNv4IiGea8cYiOGLWxw/1KG4VSgXwX+X0yA/hTEGiqY/Hgza2q3MY97kFU223yfH20GfX8jlRzLw7eP6NToq6/xu4xn4W+vx1jBXjizF/PubhXnsso5z3MFN9Kh4MZtyRwcMk5iOI3dZ9pgedYNk8WOWssLJiloAe2qkpJTErHGnbEWjrICv3NrLHzmMoyX5vLO3xdjuFcFT4cCHY0y9FnWo/FWIqzmb5GYW8inlzzi1UV3EZVdB0uXg0nyGkFqYyy54yctc++MR99ds99lNvpYj4WN5WzDQGEcXD0p8NmVKM5NQN6vK7E5VYL6KyvxXXE+VMWPcL+9y1/TavNVtdox03DHSztuLaAhxZJZvYlzuocU0XitS+F92i/gTPp0bPCq1DvYpeQxtIGdzEtgFcVSVnA4wX8mbwUOXchx0W7TyMfZDVhxwsJPz2nAxKzaJtpjmhxIwrA6JtIhm7uu95uphl7pzC39O+Pmel8on+ClCtfOrmKaH75EZclqnMqXcplpX6GtIek8ZSIiWFu9ndJv7iWtKY4yq0Lfiz5AgazhwWfB7qfym55Opa2ucs1jY/kq68BjufX8n9L2pup1fV678khgTgj6u0veAGcEv92/I7QUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6f2db00617e236847f782afd8b732e09/c3add/html-css-js.png","srcSet":"/static/6f2db00617e236847f782afd8b732e09/6c869/html-css-js.png 38w,\\n/static/6f2db00617e236847f782afd8b732e09/0d419/html-css-js.png 75w,\\n/static/6f2db00617e236847f782afd8b732e09/c3add/html-css-js.png 150w","sizes":"(min-width: 150px) 150px, 100vw"},"sources":[{"srcSet":"/static/6f2db00617e236847f782afd8b732e09/7472f/html-css-js.webp 38w,\\n/static/6f2db00617e236847f782afd8b732e09/d912e/html-css-js.webp 75w,\\n/static/6f2db00617e236847f782afd8b732e09/f5103/html-css-js.webp 150w","type":"image/webp","sizes":"(min-width: 150px) 150px, 100vw"}]},"width":150,"height":85}')},9358:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7klEQVR42u1SSW/TQBSeBOFZ7BbUjX1pcexZbDdhDy1LEaraSl3gwIEKKiFxQUri8TiJVRSNCn+BX8GZH8E/QpzCjAsKlPaI1EOf9DRv3vLNe28+AE7kOMqwsq+6ai6/bFD517bx4QFfqWB0lrFhZQRegh4mfxT8fviIPCjUE8TSh26iIkK7N90gT4hIlxHPFgmXK2U8ko9Lu5bOoShvYi7vWh2jWeDdyqZwlN6e8FvjiHaaYDzWrwhXfcJzDXnhY6pekESvwOTTLBKDBRQNmiTeW3WYXEOhUjjSW1j016EoljHV9xHvXyWRXiN09wKOB5sAiXTBDeXSaSHnDWgdh92L5h6P0WLSYe0aDDvXcaDuYL912Qm74X7neZ3UOnUUZg9sLgzSp8TU207BEBSTQOuqxxW3YEhkVyCXvj2tWj8U+Q0LaIDOn5nXZ3FNXvJ844/TOVvjBdmUWdnMNH/vgR/Vj18/TxT3QGN33eXZNmK9ly7vbkOWP8Ms38Sst4epfG52+I7ExY7DOquEqdeIf1jEcbGBqNoBXDuIyjeIqUfge1W//QYHS6Ah/Zmofc6O7tVb03Y3jlm6G7UTJ8io/QDCsobtqhzTTAETNeuynrC5BuyaE2X0P9AafDmlR9w6hLgHiX4U8f8i+okcJ/kJxE5+DYAYgrAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/614c7940f8af75350797162b2c1b4098/1f8a1/bottinelli-informatica.png","srcSet":"/static/614c7940f8af75350797162b2c1b4098/ca121/bottinelli-informatica.png 20w,\\n/static/614c7940f8af75350797162b2c1b4098/f31ef/bottinelli-informatica.png 40w,\\n/static/614c7940f8af75350797162b2c1b4098/1f8a1/bottinelli-informatica.png 80w,\\n/static/614c7940f8af75350797162b2c1b4098/e9a79/bottinelli-informatica.png 160w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/614c7940f8af75350797162b2c1b4098/264f2/bottinelli-informatica.webp 20w,\\n/static/614c7940f8af75350797162b2c1b4098/e73fe/bottinelli-informatica.webp 40w,\\n/static/614c7940f8af75350797162b2c1b4098/61ca6/bottinelli-informatica.webp 80w,\\n/static/614c7940f8af75350797162b2c1b4098/60b4d/bottinelli-informatica.webp 160w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},5310:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAE5ElEQVR42pWUeUwUVxzHB4+oaWtTq2VBEVQOD0RgFQRFRBYXEJZ4oCIo2ipqUBRLbSRR4oVaRLksIBpREBFQlOXWgreoCzUtmgihFkWt1bq7wC4z897Mt7PUUvtHD1/yMi9v3u/zvpn5/r4M8x4DwJAXHBxb9fCo1TyefuZqq5W0bfY+BLOiIvQ3LcsbG62zThZe27bnoPZifQNeckDrK2NX08+6a6U3mp2lIwOisjUD+woTgH6hUnEo0D+hHgMkNX+72d/WdtA06xEyaTl4nIvb8pKyarblcQcePn6G0srLuvIbP7zekZq77V8FyjUYOEVtGKm80ukVddsYEV6v2x5Z3V7gl1p5KzH7FFuQk4WgYNXT8E3b1Wk5eYiIiFjZWzix/uWHYU2sXeQd4rusgY+O1nDp6zS0Iuou92hrE9e9WcOLa74H1t6jWFGnxYzsBpQ1PxOu32nE5Mj4lmGpLUMDF64M8fDz+4xZet2wed09/vU6DW/Y+COwoRmIkuaa+8Cqe8CXjQKib7Oi6pKBKMu1RFn6gnpmNwo3Wn8Rd+VXYObhOjb8QodDr7IE9GNCbxpivmoFFlzlqaqOFVR1HA2+zJGASxyZX8cJG27z4qLvWHH5FSMC1Hp4Fz5HUN5DPPjpKeYlq4WgkueYU9DuZ+KZ/gGzuEqn+PwuoKyVQJd4zKvlEVjDw7+aR/RNgthbBF9c4RBcacTSKj0cc54gof4FbjW3wGFXPZ1fwcL37OuYPqBHyavxS+o4bl4NhaKcF/3KCeaoCfwrCDZep4iqI/A6xyJEbcDcYi0UeR1QRScgbPNOuGS0Er8LIlTnu46YgN6SOxhmf9vHoTV8e0A14HmOF7zOEbgVEwRJYP8yApWax8yzLBZe6EboeR28UzSwt7PFaP/1CD7zG1UUEcw+bah9a/w/rLaggm3wqQBmlfB0bilBeBXBIjVFZCXFMjUHZVEPfPJ1WFWqx9wtmRg7ehRcNp2C2zGt4HycheI028bEPhnS5zfvs4Z8RTkQeJ7QkFKK1VUUAcWSRSSFykIO7ieMmHZUB8fDTyEPiMDYcfaYvfcm7FO04pg0I3xzWSOToLXpA87K696hKAMmHCPE7aT0LQsovPIonI8RjE5jYZPSBYskHWy2XoXjZCeMkSvhmNiGWZlvRItvDKJnDmCX1qXoA7oe7Qr3KQKs0gl1yKJYc1HAwkKKUSk8rA6xsDygx6d732DiikOYYCPDiDmb4JT0CgGZWtF8Xw/veRyQZ/Ss7QN+tFvv6XNCgMVhAVMyqbj4jACHdIqhiTws9hthsVcHWXwb5MpwWFuaC1ZhmXR26huyMV8vxBVzdF894JDMZfzVtPG/Wnhlk85hByC1FRVCcqlgn0yocwpHph7qpq4HO4WpW2ohnyrHyLGTxPFxGizOBdYXCFiS00P8v+0xWuzWH3knBioHKY6SBztrANd0CO6ZgEc2MD0LcE8X4ZzEwj0yiUxyGAfZeI+OMbH3cy3jWrYPjXm0lJnfNI1xzDFnbP0HMe96xzWDVsZLQJdkttM1ydgycY++1inxZZbV1+2xw1dfC5rho3xga+cAmcwy7q2KAf8YoqbH4Jj2mUzYo0BmQYk14xTxwTsnet/LZCNDPxk2PM/c3LzXHvIoKUxNrWYKhF4GzP4r7s16e/PPov85fgcFHRJ0sITBeAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5648e6bfe2871de649ff4cc9be70efc3/de3a1/xcode.png","srcSet":"/static/5648e6bfe2871de649ff4cc9be70efc3/f2a56/xcode.png 38w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/7458e/xcode.png 75w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/de3a1/xcode.png 150w","sizes":"(min-width: 150px) 150px, 100vw"},"sources":[{"srcSet":"/static/5648e6bfe2871de649ff4cc9be70efc3/0852d/xcode.webp 38w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/18188/xcode.webp 75w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/c65bc/xcode.webp 150w","type":"image/webp","sizes":"(min-width: 150px) 150px, 100vw"}]},"width":150,"height":150}')},8543:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADbElEQVR42pVUW0hUURRdeh+OOT6STNFESktSS0oz9SNNCxWRMjVL562jqaRzHR1TK0Pop6K/iCCigl70Y1GB1EdCQX1UUF9h1kcPkIgIooy0aZ07Y2rM9Liw797n3LPXXftxNhD4CQmwDg2wF4J/fMTBRTAYUhAbvgyyvEkXo5rBvWR+i/4fUImSBkmqot5ASaeso+RTiigbIaOQkks7LkhECzZzCFZCnYqKolw4avejy3ICXaaTaNs1jKrSbf6ftPNcGXVSMFARhghHQUJsBrqsR9Ft/4x9Tu8v6W/xoscxDc12DeUFgj2ZykIbAzETgNVIiElBv/MyDrR50W2bIbtvcFm/Q7NOw0Vb6IFWLzyOl2iozKFPZmRMjEiPuiBvkqrWUa+Bp/kYDnV4CfQObtsXnZUPeAZ9zV70Omib3+ug+9vuITIyXZVlLSoqKnUOTlVX6fS3FpSQ3WsCOOhUTzY10CzDDPOrD9g6wp/sQI/dBFdjJXqbXqHTouktVZ4W5i8oHwNbAkjEXtNhHmLubN3otjwh4DMd0G1rp32W+2UEfUp5SPsMU2Hm+Rv0TWGMm+dyGaGs5XspwznDgz3wNI2Q1U2C5dFhAm57J+0kfp8kWCPXbjIWkdQzRWOi0pIk1RmNxrjZDBbzvR4DzhqGM042+azwdTrcpnMLC3CRYL0EP01WHu6/YRcU88fnWf1zRDGq4eHb9cvgf3L9EsLDx+n0HJr9PkO9RuA2tskVyjCrTEDbANzWcTK9y/UDnBpa4gsZtdSxswy38KI2wllTiF6G47bU8rDmZ/qC+ioZucjeS8YVetE0q5NpsMBj30mELPZj/lxRREGAbP129LeM0uEjNPMtMnyr96PLcoEALgy2isb+RHuUUTxmKj6gulw09nIoSvb8PlQQGmrS76zbIRp7AkPtov+mmPQ5QNGHmnUKA2yhwT38bt9NnzL6CpaG36/eYoZeSb0STfWrGfqYDjbEJu+xX2Le3DhItn3OHwSa5L0WBEoJJkALgg2GVGahWAbykJiYjPYGM3N2h0yPsAg2Aj1CR8MwCrMK9CL6oiry+4YGG18JsiwXKgaDyV+1dD0lPgdh5yuKYmbOMudNGgl/mdQRYdHRKxCppvtvQIQOqnLAStJ2xMeLddifZmGw8S//NprUeVMl4LT+CRY1CAyH2+PQAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/763f92325514b8a4c65913416b8c633c/1f8a1/insubria.png","srcSet":"/static/763f92325514b8a4c65913416b8c633c/ca121/insubria.png 20w,\\n/static/763f92325514b8a4c65913416b8c633c/f31ef/insubria.png 40w,\\n/static/763f92325514b8a4c65913416b8c633c/1f8a1/insubria.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/763f92325514b8a4c65913416b8c633c/264f2/insubria.webp 20w,\\n/static/763f92325514b8a4c65913416b8c633c/e73fe/insubria.webp 40w,\\n/static/763f92325514b8a4c65913416b8c633c/61ca6/insubria.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},1211:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEx0lEQVR42o2Va1BUZRzGz2ezmWaamr6IFjALe4NlYdld9gYuGi7OQOQ4ZmLeMvA2kbdsQ2UMyPBSXhLFIdS8MFo0VjI1pmM55ZhOjAZZGqOhiKy4wl4O5z3v+/Q/u5rWp87MM+/99z7/5+xFkugZaPeOVdq9QeWIt1s+6InI+z0s3uZm0b0uFm0pYMpRH2Of+5hy7L/yRqjtUdo9a9HhfFJjSWi2jlEOek7huB845OOs1YN4ixuxXS5Edzgx/KEDwx85wT71QD3sATvsAzvkTYgf9gLHCjlOFNPY8/3Adu9YSd3nDeJoEZTdBbK8y8XjOwoQ21aA6FaCNTkQ3mhHaIMNoQYblLYiqHttoDNgbe6H4qzNJaNjItg+V52k7nZ3odmF0W1OLm9xIL6ZnG3Mx0h9HsL1dtxdn4fBdTbcWmFAaNdrEN/VQt2eBbWFHO9xJcT2uDha3eCtrm6JbXEMs80OyBvtIv6BG5G1WYhsK8f9hkKEVptwJ2hD/0oL+pZb0LsoA9GeH4GzW8E2GaF+7IZKsWjiOymWHc6YNNqQz+R6B2LrrIhtCiDaMg/3VpgQ7WhAaL0ftxalo6/GiutLLfi9MgV9O5dAe9T2aqjvk9Mt5JIMaWKb7UySa20sXmtDJJiP4RojogdWI/pFEwZXuRC/0In+tQFcezUF16os6KlMR8+SAnBFAYZuQG2isilbtZGAjXawxnwmxVflsujKXIwstyJck4vQglTETu5D/PwJDDbNwejNq7jZOBuXy57DpVd06Ko0Qe7vTbjkXzVCXaOHuoHKrssHq7MxKbosh0WW5SC82IKhagsGF2bj1swJiP38LRSC3fu6FXxURv8n7+F8ybM4V56K0cGbCaD48wL429nglDMP5kF9J5dJI9UWFibI0OvZGJxnxu05ZvTNMqB3WiqiF0+DMwXK3dsJwN0zx/FrbSUEG02MEbkHTjnztwi6ioArrExiS3NYeG4WBmZk4PYsgs004foMA65WpOO3slTcP3cy6UZVky1dACGSQOrz+grwRUbwNwlI1UqcHKpVVoSWFONGaQp6S8fjarkOVyr0uDQ1DRdLJuBOZ/sDKEvCHgJHyOHKIvCFZoJaoVZZCDg/h6FSD7GpCsOdR3Cjegp6Jo3HL65ncN75NM7ansIPheMQ7vopCeXqI2AkDFEzEWK2EWJ+Dvi8bALOMjNRaYF4OQ3Y3whta6z3CobI1cBnrQid/hLx/r+IwTUcvVr+QMkI0HkAoiKVoAQklsSnm5iYboaYQcEGUiDWz6X0ky/hHycP+4+P4zHNLu0dIJgdYpoBfLoGLDcNo9wEaoWoyIJ48Xlymw2xux7ij8sQ9JH5F7SvF6J5A5Xoh3ijhL6G30AsLQMC6cQwxyReaurCVAJOMXIRoCymErSEMvWOg5hC7YIAxJr5EO8uhFhcQetUjY8qmayDKKLLy6jUl/I4AgYQp1tCsSGIgBnw62Xu13PhJ8gkAx2gg8XUetMgCsZDOAnifgGJdW1tEl0+2QRMzOQoypQRyAL3G+oklFrHCF/mKfiNgE/P4c3EI+lpjm4uNCal9bW5x/cUGjj8Jm3+DIrNTyR/tb36sXBkBuHQdcOuiyBfx/6XtL32jB5hz6iFU5f4C/gbBGNaAT9Yz54AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/976122273ccaecbec7c7bf258d849375/56197/swift.png","srcSet":"/static/976122273ccaecbec7c7bf258d849375/f1c6c/swift.png 27w,\\n/static/976122273ccaecbec7c7bf258d849375/ffdd3/swift.png 54w,\\n/static/976122273ccaecbec7c7bf258d849375/56197/swift.png 108w","sizes":"(min-width: 108px) 108px, 100vw"},"sources":[{"srcSet":"/static/976122273ccaecbec7c7bf258d849375/391be/swift.webp 27w,\\n/static/976122273ccaecbec7c7bf258d849375/40067/swift.webp 54w,\\n/static/976122273ccaecbec7c7bf258d849375/e26a9/swift.webp 108w","type":"image/webp","sizes":"(min-width: 108px) 108px, 100vw"}]},"width":108,"height":108}')},7598:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbUlEQVR42pVUS2gTURSdJJNOxgoVXYni1q2u7FYXgjs3utKlH1y4c6MWwWbymcmkiZqViDQIiqitin8QU7EIQVyIYKugBUHre5NMM5npZCaZeO+bdPKxgRoeSeDd884995z3ODqSwSVkOn/+Z3HsR6F8mkaHFMG5YhbXpuwAB0e45Mqhu2b8HQ3Jg/wxFTERmXDxP9wkfNOo0lsD4Mn6udetXzUqqoPk4RTsalvzxukX9r0v9Yk5ulmlfBcPYKl27LFnOtrOq4RL4RF+q7xSHS9ahQ+e0fAarvNmCWqsXBk6xY46miMK3ZJr/tAbT76RSBobg72YCgdBR83f9fqFkrajsMxN2A8XnfmfSBAw+3VAAgfbDxZIVGbCmAReJiMKE3zZlObb7fbK4fvILKo90xYBL1XHpz3LXS1+YmereLyARSQkm8p7QII6KAt6DqzKgA3AoB+8A0X6gdtdYX7/l94aJ57C8ALOfjAWpSt7bnh2U9/PwKNTgbEklCShVC9nP1hEZutKufldp4LCAAk01p88G+GQhMF2WNa25VsVy7xYAgzh07Wjs8ap5ySmoLHrIYOBIa1x8plnOdquAoTJTOBs4QPZINE1/4aAQXDcvvXZmVsCP31XakdmK3tverZrzywSfn18wCyZ50sQpsajr4g8jq4w/4rQjj2z0MUL/2oGYaNZK192Py6zJEjoCvonVfdNr+FTNJzGysFpw4pCmBJoUqib3g4e+V1oio5N0bEcjWFxPxjvrYqp6k9CgG8REy/JqguZ91PEbejRwKEkte3XjDMvjbOvKruv43USMtxGHx0Qwl4FTA4oZ5r/Ak+Bo82SrfYqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1f595a259e5fd65ba994ee98004013ed/1f8a1/lastminute-group.png","srcSet":"/static/1f595a259e5fd65ba994ee98004013ed/ca121/lastminute-group.png 20w,\\n/static/1f595a259e5fd65ba994ee98004013ed/f31ef/lastminute-group.png 40w,\\n/static/1f595a259e5fd65ba994ee98004013ed/1f8a1/lastminute-group.png 80w,\\n/static/1f595a259e5fd65ba994ee98004013ed/e9a79/lastminute-group.png 160w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/1f595a259e5fd65ba994ee98004013ed/264f2/lastminute-group.webp 20w,\\n/static/1f595a259e5fd65ba994ee98004013ed/e73fe/lastminute-group.webp 40w,\\n/static/1f595a259e5fd65ba994ee98004013ed/61ca6/lastminute-group.webp 80w,\\n/static/1f595a259e5fd65ba994ee98004013ed/60b4d/lastminute-group.webp 160w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')}}]); +//# sourceMappingURL=components-bottom-index-22dc5f43f2aca83b3174.js.map \ No newline at end of file diff --git a/components-bottom-index-22dc5f43f2aca83b3174.js.map b/components-bottom-index-22dc5f43f2aca83b3174.js.map new file mode 100644 index 000000000..356e9fdc1 --- /dev/null +++ b/components-bottom-index-22dc5f43f2aca83b3174.js.map @@ -0,0 +1 @@ +{"version":3,"file":"components-bottom-index-22dc5f43f2aca83b3174.js","mappings":"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","sources":["webpack://fabrizioduroni.it/./src/components/design-system/organism/technologies.tsx","webpack://fabrizioduroni.it/./src/components/design-system/molecules/tabs.tsx","webpack://fabrizioduroni.it/./src/components/design-system/molecules/project.tsx","webpack://fabrizioduroni.it/./src/logic/projects.ts","webpack://fabrizioduroni.it/./src/components/design-system/organism/projects.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/heading6.tsx","webpack://fabrizioduroni.it/./node_modules/@styled-icons/boxicons-regular/Briefcase/Briefcase.esm.js","webpack://fabrizioduroni.it/./node_modules/@styled-icons/fa-solid/GraduationCap/GraduationCap.esm.js","webpack://fabrizioduroni.it/./src/components/design-system/organism/timeline.tsx","webpack://fabrizioduroni.it/./src/components/design-system/organism/resume.tsx","webpack://fabrizioduroni.it/./src/components/bottom-index.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/container-fluid.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/container.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/heading3.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/list.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/paragraph.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/standard-external-link.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/standard-link-style.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/time.tsx","webpack://fabrizioduroni.it/./src/components/standard-external-link-with-tracking.tsx"],"sourcesContent":["import { StaticImage } from \"gatsby-plugin-image\";\nimport { Paragraph } from \"../atoms/paragraph\";\nimport styled from \"styled-components\";\nimport { ContainerFluid } from \"../atoms/container-fluid\";\nimport { mediaQuery } from \"../utils-css/media-query\";\nimport { FC } from \"react\";\n\nconst TechnologiesContainer = styled(ContainerFluid)`\n margin: 0;\n display: flex;\n flex-direction: column;\n padding: ${(props) => props.theme.spacing[11]};\n background-color: ${(props) => props.theme.light.primaryColorDark};\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.primaryColorDark};\n }\n`;\n\nconst TechnologyParagraph = styled(Paragraph)`\n text-align: center;\n margin-bottom: ${(props) => props.theme.spacing[7]};\n color: ${(props) => props.theme.light.textAbovePrimaryColor};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.textAbovePrimaryColor};\n }\n\n ${mediaQuery.minWidth.md} {\n padding: 0 ${(props) => props.theme.spacing[12]};\n }\n`;\n\nconst TechnologiesIconsContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n`;\n\nconst TechnologyImageContainer = styled.div`\n width: 80px;\n height: 80px;\n margin: ${(props) => props.theme.spacing[2]};\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport interface TechnologiesProps {\n author: string;\n}\n\nexport const Technologies: FC = ({ author }) => (\n \n \n {`I'm ${author}, a software developer with many years of experience.\n I have a strong knowledge of the following languages: C++, Objective-C, Swift, C, Java, PHP,\n JavaScript, TypeScript, Kotlin.\n I develop mobile app since 2010 and web application since 2005. I'm also passionate about computer graphics.`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import styled, { css } from \"styled-components\";\nimport { StandardExternalLink } from \"../atoms/standard-external-link\";\nimport { trackWith } from \"../../../logic/tracking\";\nimport { FC } from \"react\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\ninterface TabLinkProps {\n active: boolean;\n}\n\nconst TabContainer = styled.li`\n width: 50%;\n`;\n\nconst TabLink = styled(StandardExternalLink)`\n font-size: ${(props) => props.theme.fontSizes[4]};\n display: block;\n background-color: ${(props) => props.theme.light.generalBackgroundLight};\n padding: ${(props) => props.theme.spacing[5]};\n border-radius: 0;\n border-top: ${(props) => props.theme.light.generalBackgroundLight} 1px solid;\n border-bottom: ${(props) => props.theme.light.dividerColor} 1px solid;\n border-left: ${(props) => props.theme.light.dividerColor} 1px solid;\n border-right: ${(props) => props.theme.light.dividerColor} 1px solid;\n text-align: center;\n\n ${mediaQuery.dark} {\n border-top: ${(props) => props.theme.dark.generalBackgroundLight} 1px solid;\n background-color: ${(props) => props.theme.dark.generalBackgroundLight};\n border-bottom: ${(props) => props.theme.dark.dividerColor} 1px solid;\n border-left: ${(props) => props.theme.dark.dividerColor} 1px solid;\n border-right: ${(props) => props.theme.dark.dividerColor} 1px solid;\n }\n\n ${mediaQuery.maxWidth.md} {\n font-size: 16px;\n }\n\n ${(props) =>\n props.active &&\n css`\n background-color: ${(props) => props.theme.light.generalBackground};\n border-right: ${(props) => props.theme.light.generalBackground} 1px solid;\n border-left: ${(props) => props.theme.light.generalBackground} 1px solid;\n border-bottom: ${(props) => props.theme.light.generalBackground} 1px solid;\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackground};\n border-right: ${(props) => props.theme.dark.generalBackground} 1px solid;\n border-left: ${(props) => props.theme.dark.generalBackground} 1px solid;\n border-bottom: ${(props) => props.theme.dark.generalBackground} 1px\n solid;\n }\n `}\n`;\n\ntype TabProps = TabLinkProps & {\n label: string;\n link: string;\n trackingAction: string;\n trackingCategory: string;\n trackingLabel: string;\n action: () => void;\n};\n\nconst Tab: FC = ({\n active,\n label,\n link,\n trackingAction,\n trackingCategory,\n trackingLabel,\n action,\n}) => (\n \n {\n event.preventDefault();\n trackWith({\n action: trackingAction,\n category: trackingCategory,\n label: trackingLabel,\n });\n action();\n }}\n >\n {label}\n \n \n);\n\nconst TabsContainer = styled.ul`\n list-style: none;\n display: flex;\n padding-left: 0;\n margin: 0;\n border: 1px solid transparent;\n`;\n\nexport interface TabsProps {\n tab1: TabProps;\n tab2: TabProps;\n}\n\nexport const Tabs: FC = ({ tab1, tab2 }) => (\n \n \n \n \n);\n","import { FC } from \"react\";\nimport { Heading3 } from \"../atoms/heading3\";\nimport styled from \"styled-components\";\nimport { Container } from \"../atoms/container\";\nimport { CallToActionExternalWithTracking } from \"../../call-to-action-external-with-tracking\";\nimport { mediaQuery } from \"../utils-css/media-query\";\nimport { ProjectCallToAction } from \"../../../logic/projects\";\nimport { Paragraph } from \"../atoms/paragraph\";\nimport { List } from \"../atoms/list\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\ninterface ProjectContainerProps {\n reverse: boolean;\n}\n\nconst ProjectContainer = styled(Container)`\n display: flex;\n flex-direction: column;\n padding: 0;\n margin: ${(props) => props.theme.spacing[7]} auto;\n\n ${mediaQuery.minWidth.md} {\n flex-direction: ${(props) => (props.reverse ? \"row-reverse\" : \"row\")};\n max-width: 1100px;\n }\n`;\n\nconst ProjectContentContainer = styled.div`\n flex: 50%;\n padding: ${(props) => props.theme.spacing[2]};\n`;\n\nconst ProjectImageContainer = styled(ProjectContentContainer)`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst CallToActionContainer = styled.div`\n margin: ${(props) => props.theme.spacing[6]} 0;\n`;\n\nexport type ProjectProps = ProjectContainerProps & {\n name: string;\n image: IGatsbyImageData;\n description: string;\n features: string[];\n callToActions: ProjectCallToAction[];\n};\n\nexport const Project: FC = ({\n reverse,\n name,\n image,\n description,\n features,\n callToActions,\n}) => (\n \n \n \n \n \n {name}\n {description}\n \n {features.map((feature) => (\n
  • {feature}
  • \n ))}\n
    \n \n {callToActions.map((callToAction) => (\n \n {callToAction.label}\n \n ))}\n \n
    \n
    \n);\n","import { tracking } from \"./tracking\";\n\nexport interface ProjectCallToAction {\n label: string;\n link: string;\n trackingAction: string;\n trackingCategory: string;\n trackingLabel: string;\n}\n\nexport interface Project {\n name: string;\n abstract: string;\n description: string;\n callToActions: ProjectCallToAction[];\n features: string[];\n}\n\nexport const projects: Record = {\n \"spectral-clara-lux-tracer\": {\n name: \"Spectral Clara Lux Tracer\",\n abstract:\n \"Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI)\" +\n \" evaluation.\",\n description:\n \"Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI)\" +\n \" evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision\" +\n \" Laboratory.\",\n features: [\n \"Computer graphics\",\n \"Ray-tracing\",\n \"Physically based rendering\",\n \"Color calculation using spectral data\",\n \"Color Rendering index calculation\",\n \"iOS, macOS, Windows\",\n \"Objective-C, C++\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_sclt_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Spectral-Clara-Lux-Tracer\",\n },\n {\n label: \"Thesis\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_sclt_thesis,\n trackingLabel: tracking.label.body,\n link: \"https://www.fabrizioduroni.it/tesi-fabrizio-duroni-770157.pdf\",\n },\n ],\n },\n \"spectral-brdf-explorer\": {\n name: \"Spectral BRDF Explorer\",\n abstract: \"An iOS OpenGL ES appfor exploring lighting models.\",\n description:\n \"An iOS OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that\" +\n \" shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.\",\n features: [\n \"Computer graphics\",\n \"OpenGL ES\",\n \"Color calculation using spectral data\",\n \"iOS, Android\",\n \"Objective-C, Java, C++\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_spectral_brdf_explorer_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Spectral-BRDF-Explorer\",\n },\n ],\n },\n id3tageditor: {\n name: \"ID3TagEditor\",\n abstract: \"A Swift library to edit ID3 Tag of any mp3 file. \",\n description:\n \"A Swift library to read and modify ID3 Tag of any mp3 file. Supported \" +\n \"ID3 tag version: 2.2. and 2.3. Listed in the implementations section \" +\n \"of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.\",\n features: [\n \"Multiple id3 tag version supported\",\n \"Strictly adhere to the offical standard\",\n \"No external dependencies\",\n \"Swift SPM and cocoapods support\",\n \"100% Swift\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_id3tageditor_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/ID3TagEditor\",\n },\n {\n label: \"Docs\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_id3tageditor_doc,\n trackingLabel: tracking.label.body,\n link: \"https://id3tageditor.fabrizioduroni.it\",\n },\n ],\n },\n \"range-ui-slider\": {\n name: \"RangeUISlider\",\n abstract: \"A RangeUISlider component for iOS and iPadOS.\",\n description:\n \"A highly customizable iOS range selection slider, developed using \" +\n \"autolayout and completely customizable using IBDesignabled and \" +\n \"IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.\",\n features: [\n \"Cocoa Touch\",\n \"SwiftUI\",\n \"Custom UI Component\",\n \"Autolayout\",\n \"IBDesignable\",\n \"IBInspectable\",\n \"iOS\",\n \"Swift\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_rangeuislider_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/RangeUISlider\",\n },\n {\n label: \"Docs\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_rangeuislider_doc,\n trackingLabel: tracking.label.body,\n link: \"https://rangeuislider.fabrizioduroni.it\",\n },\n ],\n },\n tabbaruiaction: {\n name: \"TabBarUIAction\",\n abstract: \"A SwiftUI custom TabBar for iOS and macOS.\",\n description:\n \"A SwiftUI custom TabBar view with action button for modal content \" +\n \"display. Fully compatible with Mac Catalyst. Available as a standalone \" +\n \"framework, a SwiftPM package and as a Cocoapods pod.\",\n features: [\n \"customizable tab item\",\n \"custom central tab item action to show modal screens\",\n \"supported platform: iOS, iPadOS and macOS\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_tabbaruiaction_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/TabBarUIAction\",\n },\n {\n label: \"Docs\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_tabbaruiaction_doc,\n trackingLabel: tracking.label.body,\n link: \"https://tabbaruiaction.fabrizioduroni.it\",\n },\n ],\n },\n mp3id3tagger: {\n name: \"Mp3ID3Tagger\",\n abstract: \"A macOS application to edit the ID3 tag of your mp3 files.\",\n description:\n \"A macOS application to edit the ID3 tag of your mp3 files. \" +\n \"Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It \" +\n \"will let you modify the information inside the ID3 tag of \" +\n \"you mp3 files.\",\n features: [\n \"100% macOS native app\",\n \"Implemented using Reactive programming (RxCocoa)\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_mp3id3tagger_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Mp3ID3Tagger\",\n },\n {\n label: \"Download\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_mp3id3tagger_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Mp3ID3Tagger/raw/master/Release/Mp3ID3Tagger.dmg\",\n },\n ],\n },\n};\n","import { Project } from \"../molecules/project\";\nimport { FC } from \"react\";\nimport { projects } from \"../../../logic/projects\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nexport const Projects: FC = () => {\n const projectsImages = useStaticQuery(graphql`\n query ProjectsImages {\n allFile(\n filter: {\n relativeDirectory: { eq: \"projects\" }\n extension: { regex: \"/(jpg)|(jpeg)|(png)/\" }\n }\n ) {\n edges {\n node {\n childImageSharp {\n gatsbyImageData(layout: FULL_WIDTH, placeholder: BLURRED)\n }\n name\n }\n }\n }\n }\n `);\n\n return (\n <>\n {Object.keys(projects).map((projectKey, index) => {\n const project = projects[projectKey];\n const projectImage = projectsImages.allFile.edges.find(\n (projectImage) => projectImage.node.name === projectKey,\n )!.node!.childImageSharp!.gatsbyImageData!;\n\n return (\n \n );\n })}\n \n );\n};\n","import styled from \"styled-components\";\nimport { headingStyle } from \"./heading-style\";\n\nexport const Heading6 = styled.h6`\n font-size: ${(props) => props.theme.fontSizes[6]};\n ${headingStyle}\n`;\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\nimport { StyledIconBase } from '@styled-icons/styled-icon';\nexport var Briefcase = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var attrs = {\n \"fill\": \"currentColor\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n };\n return /*#__PURE__*/React.createElement(StyledIconBase, _extends({\n iconAttrs: attrs,\n iconVerticalAlign: \"middle\",\n iconViewBox: \"0 0 24 24\"\n }, props, {\n ref: ref\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-5-2v2H9V4h6zM8 8h12v3H4V8h4zM4 19v-6h6v2h4v-2h6l.001 6H4z\"\n }));\n});\nBriefcase.displayName = 'Briefcase';\nexport var BriefcaseDimensions = {\n height: 24,\n width: 24\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\nimport { StyledIconBase } from '@styled-icons/styled-icon';\nexport var GraduationCap = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var attrs = {\n \"fill\": \"currentColor\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n };\n return /*#__PURE__*/React.createElement(StyledIconBase, _extends({\n iconAttrs: attrs,\n iconVerticalAlign: \"middle\",\n iconViewBox: \"0 0 640 512\"\n }, props, {\n ref: ref\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9V320c0 28.4-10.8 57.7-22.3 80.8-6.5 13-13.9 25.8-22.5 37.6-3.2 4.3-4.1 9.9-2.3 15s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7.3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7-3.2-14.2-7.5-28.7-13.5-42v-24.6c0-30.2 10.2-58.7 27.9-81.5 12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5.8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1l280.6-101c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1c-7.6-2.7-15.6-4.1-23.7-4.1zM128 408c0 35.3 86 72 192 72s192-36.7 192-72l-15.3-145.4L354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6l-142.2-51.4L128 408z\"\n }));\n});\nGraduationCap.displayName = 'GraduationCap';\nexport var GraduationCapDimensions = {\n height: 512,\n width: 640\n};","import { StaticImage } from \"gatsby-plugin-image\";\nimport { Paragraph } from \"../atoms/paragraph\";\nimport { List } from \"../atoms/list\";\nimport { FC, ReactElement, ReactNode } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Container } from \"../atoms/container\";\nimport { Heading6 } from \"../atoms/heading6\";\nimport { mediaQuery } from \"../utils-css/media-query\";\nimport { StandardExternalLinkWithTracking } from \"../../standard-external-link-with-tracking\";\nimport { Time } from \"../atoms/time\";\nimport { tracking } from \"../../../logic/tracking\";\nimport { Briefcase } from \"@styled-icons/boxicons-regular\";\nimport { GraduationCap } from \"@styled-icons/fa-solid\";\n\nconst TimelineContentContainer = styled(Container)`\n padding: 0;\n margin-top: ${(props) => props.theme.spacing[4]};\n margin-bottom: ${(props) => props.theme.spacing[4]};\n`;\n\nconst TimelineContainer = styled.ul`\n list-style: none;\n padding: ${(props) => props.theme.spacing[4]} 0\n ${(props) => props.theme.spacing[4]};\n position: relative;\n text-align: justify;\n margin: 0;\n background-color: ${(props) => props.theme.light.generalBackground};\n\n ${mediaQuery.minWidth.md} {\n text-align: left;\n\n &:before {\n top: 0;\n bottom: 0;\n position: absolute;\n content: \" \";\n width: 3px;\n left: 50%;\n margin-left: -1.5px;\n background-color: ${(props) => props.theme.light.dividerColor};\n }\n }\n\n ${mediaQuery.maxWidth.md} {\n &:before {\n left: 40px;\n }\n }\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackground};\n\n &:before {\n background-color: ${(props) => props.theme.dark.dividerColor};\n }\n }\n`;\n\nconst TimelineElementContainer = styled.li`\n padding-bottom: ${(props) => props.theme.spacing[4]};\n position: relative;\n\n &:before,\n &:after {\n content: \" \";\n display: table;\n }\n\n &:after {\n clear: both;\n }\n`;\n\ninterface TimelinePanelProps {\n inverted: boolean;\n}\n\nconst TimelinePanel = styled.div`\n background-color: ${(props) => props.theme.light.generalBackgroundLight};\n border: ${(props) => props.theme.light.dividerColor} 1px solid;\n box-shadow: ${(props) => props.theme.light.boxShadowLight} 0 1px 6px;\n width: 100%;\n float: left;\n border-radius: 3px;\n position: relative;\n\n ${mediaQuery.minWidth.md} {\n &:before {\n position: absolute;\n top: 26px;\n right: -15px;\n display: inline-block;\n border-top: 15px solid transparent;\n border-left: ${(props) => props.theme.light.dividerColor} 14px solid;\n border-right: ${(props) => props.theme.light.dividerColor} 0px solid;\n border-bottom: 15px solid transparent;\n content: \" \";\n }\n\n &:after {\n position: absolute;\n top: 27px;\n right: -14px;\n display: inline-block;\n border-left: ${(props) => props.theme.light.generalBackgroundLight} 14px\n solid;\n border-right: ${(props) => props.theme.light.generalBackgroundLight} 0px\n solid;\n border-top: 14px solid transparent;\n border-bottom: 14px solid transparent;\n content: \" \";\n }\n }\n\n ${mediaQuery.minWidth.md} {\n width: 46%;\n }\n\n ${(props) =>\n props.inverted &&\n css`\n float: right;\n\n &:before {\n border-left-width: 0;\n border-right-width: 14px;\n left: -14px;\n right: auto;\n }\n\n &:after {\n border-left-width: 0;\n border-right-width: 14px;\n left: -13px;\n right: auto;\n }\n `};\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackgroundLight};\n border: ${(props) => props.theme.dark.dividerColor} 1px solid;\n box-shadow: ${(props) => props.theme.dark.boxShadowLight} 0 1px 6px;\n\n &:before {\n border-left: ${(props) => props.theme.dark.dividerColor} 14px solid;\n border-right: ${(props) => props.theme.dark.dividerColor} 0px solid;\n }\n\n &:after {\n border-left: ${(props) => props.theme.dark.generalBackgroundLight} 14px\n solid;\n border-right: ${(props) => props.theme.dark.generalBackgroundLight} 0px\n solid;\n }\n\n ${(props) =>\n props.inverted &&\n css`\n float: right;\n\n &:before {\n border-left-width: 0;\n border-right-width: 14px;\n left: -14px;\n right: auto;\n }\n\n &:after {\n border-left-width: 0;\n border-right-width: 14px;\n left: -13px;\n right: auto;\n }\n `};\n }\n`;\n\nconst TimelineBadge = styled.div`\n visibility: hidden;\n\n ${mediaQuery.minWidth.md} {\n visibility: visible;\n background-color: ${(props) => props.theme.light.primaryColor};\n color: ${(props) => props.theme.light.textAbovePrimaryColor};\n width: 40px;\n height: 40px;\n line-height: 40px;\n font-size: 1.4em;\n text-align: center;\n position: absolute;\n top: 20px;\n left: 50%;\n margin-left: -20px;\n z-index: 100;\n border-radius: 50%;\n }\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.primaryColor};\n color: ${(props) => props.theme.dark.textAbovePrimaryColor};\n }\n`;\n\nconst TimelineTitle = styled.div`\n font-size: ${(props) => props.theme.fontSizes[7]};\n margin: ${(props) => props.theme.spacing[0]};\n`;\n\nconst TimelineSubtitle = styled(Heading6)`\n text-align: left;\n margin-bottom: ${(props) => props.theme.spacing[2]};\n`;\n\nconst TimelineDescription = styled(Paragraph)`\n text-align: left;\n margin-top: ${(props) => props.theme.spacing[2]};\n`;\n\nconst TimelineTime = styled(Time)`\n margin: ${(props) => props.theme.spacing[0]};\n font-size: ${(props) => props.theme.fontSizes[3]};\n`;\n\nconst TimelinePanelContentContainer = styled.div`\n padding: ${(props) => props.theme.spacing[2]};\n`;\n\nconst imgSize = 80;\n\nconst TimelineImageContainer = styled.div`\n border: 1px solid gray;\n margin-left: ${(props) => props.theme.spacing[0]};\n margin-right: auto;\n margin-bottom: 15px;\n display: block;\n background-color: #fff;\n width: ${imgSize}px;\n height: ${imgSize}px;\n`;\n\ntype TimelineElementProps = TimelinePanelProps & {\n icon: ReactElement;\n children?: ReactNode;\n};\n\nconst TimelineElement: FC = ({\n children,\n inverted,\n icon,\n}) => (\n \n {icon}\n \n {children}\n \n \n);\n\nexport const Timeline: FC = () => {\n const iconsSize = 20;\n const briefcase = ;\n const graduationCap = ;\n\n return (\n \n \n \n \n \n \n \n Lastminute.com group\n \n Mobile application developer\n February 2017\n \n Designing and implementing iOS and Android apps for the main brands\n of the company:\n \n
  • lastminute.com
  • \n
  • Volagratis
  • \n
  • Rumbo
  • \n
  • Weg.de
  • \n
    \n
    \n
    \n \n \n \n \n \n Milano-Bicocca University\n \n \n {\"Master's degree in Computer Science\"}\n \n July 2016\n \n Thesis: “Spectral Clara Lux Tracer: physically based ray tracer with\n multiple shading models support”. You can find more info about it in\n the project section.\n \n \n
  • Computer graphics
  • \n
  • Software engineering
  • \n
  • Algorithm and Theoretical CS
  • \n
  • IT security
  • \n
  • IT management
  • \n
  • Design and user experience
  • \n
    \n
    \n \n \n \n \n \n Condé Nast Italia\n \n Mobile/Web application developer\n June 2013\n \n Designing and implementing iOS and Android apps for the main brands\n of the company: Vanity Fair, Glamour, Wired, Vogue. I also worked\n with the web team to develop the new version of the official web\n sites for GQ Italia, Glamour, CNLive! and Vogue Italia.\n \n \n \n \n \n \n \n SHI\n \n iOS/Web Developer\n October 2010\n \n Design and development of mobile application on iOS, Android and\n Windows phone platform, for enterprise distribution (ad-hoc\n distribution) or within the various app store. Design and\n development of Web application used as backend for mobile app.\n Design and development of Enterprise Web application.\n \n \n \n \n \n \n \n Bottinelli informatica\n \n Developer\n August 2009\n \n Software development for textile industry.\n \n \n \n \n \n \n \n Avanade\n \n PMO Consultant\n October 2008\n \n {\" \"}\n Assigned on Eurosig integration BA-HVB/Unicredit project, I worked\n with the Accenture Consultant team as a PMO.\n \n
  • \n Tracking creation and evolution of functional specification to\n cover the gaps between ASC, CRE, PAY, MDM and BSS sector of the\n IT systems of Unicredit and HVB bank.\n
  • \n
  • \n Publishing statistics to show the state of art of the functional\n specification produced, the open change request and the state of\n user test. Maintenance of tools created with Microsoft Excel,\n Microsoft Powerpoint and VBA used to generate the above\n mentioned statistics.\n
  • \n
  • \n Maintenance of tools used to manage WBS of the project inside\n Accenture team.\n
  • \n
    \n
    \n
    \n \n \n \n \n \n Insubria University\n \n \n {\"Bachelor's degree in Computer Science\"}\n \n October 2008\n \n Thesis: “Grandi Giardini: implementazione di un portale web con\n funzionalità e-commerce”. A web e-commerce developed for Grandi\n Giardini Italiani s.r.l., a company dealing with the organization of\n events in some of the most beautiful italian gardens (never deployed\n in production).\n \n \n
  • Software engineering
  • \n
  • Algorithm and Theoretical CS
  • \n
  • IT security
  • \n
  • IT management
  • \n
  • Networking
  • \n
  • Programming
  • \n
    \n
    \n \n \n ITCG Romagnosi\n \n High school in Accountant\n July 2005\n \n
    \n
    \n );\n};\n","import { FC, useState } from \"react\";\nimport { tracking } from \"../../../logic/tracking\";\nimport { ContainerFluid } from \"../atoms/container-fluid\";\nimport styled from \"styled-components\";\nimport { Tabs } from \"../molecules/tabs\";\nimport { Projects } from \"./projects\";\nimport { Timeline } from \"./timeline\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nconst ResumeContainer = styled(ContainerFluid)`\n padding-left: 0;\n padding-right: 0;\n background-color: ${(props) => props.theme.light.generalBackground};\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackground};\n }\n`;\n\nenum TabContent {\n projects = \"projects\",\n carrier = \"carrier\",\n}\n\nexport const Resume: FC = () => {\n const [currentTab, setTab] = useState(TabContent.projects);\n\n return (\n \n setTab(TabContent.projects),\n }}\n tab2={{\n active: currentTab === TabContent.carrier,\n label: \"Experience\",\n link: \"#experience\",\n trackingAction: tracking.action.open_education_and_experiences_tab,\n trackingCategory: tracking.category.home,\n trackingLabel: tracking.label.body,\n action: () => setTab(TabContent.carrier),\n }}\n />\n
    \n {currentTab === TabContent.projects && }\n {currentTab === TabContent.carrier && }\n
    \n
    \n );\n};\n","import { Technologies } from \"./design-system/organism/technologies\";\nimport { Resume } from \"./design-system/organism/resume\";\nimport { FC } from \"react\";\n\ninterface BottomIndexProps {\n author: string;\n}\n\nconst BottomIndex: FC = ({ author }) => (\n <>\n \n \n \n);\n\nexport default BottomIndex;\n","import styled from \"styled-components\";\n\nexport const ContainerFluid = styled.div`\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n`;\n","import styled from \"styled-components\";\nimport { ContainerFluid } from \"./container-fluid\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const Container = styled(ContainerFluid)`\n ${mediaQuery.minWidth.xs} {\n max-width: 540px;\n }\n\n ${mediaQuery.minWidth.sm} {\n max-width: 720px;\n }\n\n ${mediaQuery.minWidth.md} {\n max-width: 960px;\n }\n`;\n","import styled, { css } from \"styled-components\";\nimport { headingStyle } from \"./heading-style\";\n\nexport const heading3Style = css`\n font-size: ${(props) => props.theme.fontSizes[9]};\n ${headingStyle}\n`;\n\nexport const Heading3 = styled.h3`\n ${heading3Style}\n`;\n","import styled from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const List = styled.ul`\n font-size: ${(props) => props.theme.fontSizes[2]};\n color: ${(props) => props.theme.light.primaryTextColor};\n line-height: ${(props) => props.theme.lineHeight};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.primaryTextColor};\n }\n`;\n","import styled from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const Paragraph = styled.p`\n font-size: ${(props) => props.theme.fontSizes[2]};\n color: ${(props) => props.theme.light.primaryTextColor};\n margin: ${(props) => props.theme.spacing[0]};\n line-height: ${(props) => props.theme.lineHeight};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.primaryTextColor};\n }\n`;\n","import styled from \"styled-components\";\nimport { standardLinkStyle } from \"./standard-link-style\";\n\nexport const StandardExternalLink = styled.a`\n ${standardLinkStyle}\n`;\n","import { css } from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const standardLinkStyle = css`\n font-size: ${(props) => props.theme.fontSizes[2]};\n color: ${(props) => props.theme.light.accentColor};\n text-decoration: none;\n line-height: ${(props) => props.theme.lineHeight};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.accentColor};\n }\n\n &:hover {\n color: ${(props) => props.theme.light.accentColor};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.accentColor};\n }\n }\n`;\n","import styled from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const Time = styled.time`\n color: ${(props) => props.theme.light.secondaryTextColor};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.secondaryTextColor};\n }\n`;\n","import { FC, ReactNode } from \"react\";\nimport { TrackingElementProps, trackWith } from \"../logic/tracking\";\nimport { StandardExternalLink } from \"./design-system/atoms/standard-external-link\";\n\ntype StandardExternalLinkWithTrackingProps = TrackingElementProps & {\n href: string;\n target?: string;\n rel?: string;\n children?: ReactNode;\n};\n\nexport const StandardExternalLinkWithTracking: FC<\n StandardExternalLinkWithTrackingProps\n> = ({ children, href, trackingData, target, rel }) => (\n {\n trackWith(trackingData);\n }}\n target={target}\n rel={rel}\n >\n {children}\n \n);\n"],"names":["TechnologiesContainer","styled","ContainerFluid","withConfig","displayName","componentId","props","theme","spacing","light","primaryColorDark","mediaQuery","dark","TechnologyParagraph","Paragraph","textAbovePrimaryColor","minWidth","md","TechnologiesIconsContainer","div","TechnologyImageContainer","Technologies","_ref","author","_jsxs","children","_jsx","StaticImage","objectFit","src","alt","placeholder","__imageData","require","TabContainer","li","TabLink","StandardExternalLink","fontSizes","generalBackgroundLight","dividerColor","maxWidth","active","css","generalBackground","Tab","label","link","trackingAction","trackingCategory","trackingLabel","action","href","onClick","event","preventDefault","trackWith","category","TabsContainer","ul","Tabs","_ref2","tab1","tab2","ProjectContainer","Container","reverse","ProjectContentContainer","ProjectImageContainer","CallToActionContainer","Project","name","image","description","features","callToActions","GatsbyImage","style","width","height","Heading3","List","className","map","feature","callToAction","CallToActionExternalWithTracking","trackingData","target","rel","projects","abstract","tracking","home","open_sclt_github","body","open_sclt_thesis","open_spectral_brdf_explorer_github","id3tageditor","open_id3tageditor_github","open_id3tageditor_doc","open_rangeuislider_github","open_rangeuislider_doc","tabbaruiaction","open_tabbaruiaction_github","open_tabbaruiaction_doc","mp3id3tagger","open_mp3id3tagger_github","Projects","projectsImages","useStaticQuery","_Fragment","Object","keys","projectKey","index","project","projectImage","allFile","edges","find","node","childImageSharp","gatsbyImageData","Heading6","h6","headingStyle","Briefcase","ref","iconAttrs","iconVerticalAlign","iconViewBox","d","GraduationCap","fill","TimelineContentContainer","TimelineContainer","TimelineElementContainer","TimelinePanel","boxShadowLight","inverted","TimelineBadge","primaryColor","TimelineTitle","TimelineSubtitle","TimelineDescription","TimelineTime","Time","TimelinePanelContentContainer","imgSize","TimelineImageContainer","TimelineElement","icon","Timeline","briefcase","size","graduationCap","StandardExternalLinkWithTracking","open_experience_and_education","ResumeContainer","TabContent","Resume","currentTab","setTab","useState","open_personal_projects_tab","carrier","open_education_and_experiences_tab","xs","sm","heading3Style","h3","primaryTextColor","lineHeight","p","a","standardLinkStyle","accentColor","time","secondaryTextColor"],"sourceRoot":""} \ No newline at end of file diff --git a/components-bottom-index-50e0b44eba7559dc729c.js b/components-bottom-index-50e0b44eba7559dc729c.js deleted file mode 100644 index 81089107b..000000000 --- a/components-bottom-index-50e0b44eba7559dc729c.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.__LOADABLE_LOADED_CHUNKS__=self.__LOADABLE_LOADED_CHUNKS__||[]).push([[524],{2718:function(e,t,a){a.r(t),a.d(t,{default:function(){return re}});var i=a(8032),n=a(281),c=a(5086),r=a(5814),o=a(4148),s=a(5893);const l=(0,c.default)(r.M).withConfig({displayName:"technologies__TechnologiesContainer",componentId:"sc-aymtyu-0"})(["margin:0;display:flex;flex-direction:column;padding:",";background-color:",";","{background-color:",";}"],(e=>e.theme.spacing[11]),(e=>e.theme.light.primaryColorDark),o.c.dark,(e=>e.theme.dark.primaryColorDark)),d=(0,c.default)(n.n).withConfig({displayName:"technologies__TechnologyParagraph",componentId:"sc-aymtyu-1"})(["text-align:center;margin-bottom:",";color:",";","{color:",";}","{padding:0 ",";}"],(e=>e.theme.spacing[7]),(e=>e.theme.light.textAbovePrimaryColor),o.c.dark,(e=>e.theme.dark.textAbovePrimaryColor),o.c.minWidth.md,(e=>e.theme.spacing[12])),p=c.default.div.withConfig({displayName:"technologies__TechnologiesIconsContainer",componentId:"sc-aymtyu-2"})(["display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;"]),A=c.default.div.withConfig({displayName:"technologies__TechnologyImageContainer",componentId:"sc-aymtyu-3"})(["width:80px;height:80px;margin:",";display:flex;justify-content:center;align-items:center;"],(e=>e.theme.spacing[2])),g=e=>{let{author:t}=e;return(0,s.jsxs)(l,{children:[(0,s.jsx)(d,{children:"I'm "+t+", a software developer with many years of experience.\n I have a strong knowledge of the following languages: C++, Objective-C, Swift, C, Java, PHP,\n JavaScript, TypeScript, Kotlin.\n I develop mobile app since 2010 and web application since 2005. I'm also passionate about computer graphics."}),(0,s.jsxs)(p,{children:[(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/xcode.png",alt:"xcode",placeholder:"blurred",__imageData:a(5310)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{src:"../../../images/technologies/swift.png",alt:"swift",placeholder:"blurred",__imageData:a(1211)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/android.png",alt:"android",placeholder:"blurred",__imageData:a(7299)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/cpp.png",alt:"c++",placeholder:"blurred",__imageData:a(6781)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/opengl-es.png",alt:"opengl",placeholder:"blurred",__imageData:a(5795)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/react.png",alt:"react",placeholder:"blurred",__imageData:a(6824)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/php.png",alt:"php",placeholder:"blurred",__imageData:a(9934)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/html-css-js.png",alt:"js",placeholder:"blurred",__imageData:a(7842)})}),(0,s.jsx)(A,{children:(0,s.jsx)(i.S,{objectFit:"contain",src:"../../../images/technologies/typescript.png",alt:"typescript",placeholder:"blurred",__imageData:a(5021)})})]})]})};var b=a(7294),h=a(6918),f=a(4737);const m=c.default.li.withConfig({displayName:"tabs__TabContainer",componentId:"sc-qlpi67-0"})(["width:50%;"]),x=(0,c.default)(f.K).withConfig({displayName:"tabs__TabLink",componentId:"sc-qlpi67-1"})(["font-size:",";display:block;background-color:",";padding:",";border-radius:0;border-top:"," 1px solid;border-bottom:"," 1px solid;border-left:"," 1px solid;border-right:"," 1px solid;text-align:center;","{border-top:"," 1px solid;background-color:",";border-bottom:"," 1px solid;border-left:"," 1px solid;border-right:"," 1px solid;}","{font-size:16px;}",""],(e=>e.theme.fontSizes[4]),(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.spacing[5]),(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.light.dividerColor),(e=>e.theme.light.dividerColor),(e=>e.theme.light.dividerColor),o.c.dark,(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.dividerColor),o.c.maxWidth.md,(e=>e.active&&(0,c.css)(["background-color:",";border-right:"," 1px solid;border-left:"," 1px solid;border-bottom:"," 1px solid;","{background-color:",";border-right:"," 1px solid;border-left:"," 1px solid;border-bottom:"," 1px solid;}"],(e=>e.theme.light.generalBackground),(e=>e.theme.light.generalBackground),(e=>e.theme.light.generalBackground),(e=>e.theme.light.generalBackground),o.c.dark,(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.generalBackground)))),w=e=>{let{active:t,label:a,link:i,trackingAction:n,trackingCategory:c,trackingLabel:r,action:o}=e;return(0,s.jsx)(m,{children:(0,s.jsx)(x,{active:t,href:i,onClick:e=>{e.preventDefault(),(0,h.$)({action:n,category:c,label:r}),o()},children:a})})},u=c.default.ul.withConfig({displayName:"tabs__TabsContainer",componentId:"sc-qlpi67-2"})(["list-style:none;display:flex;padding-left:0;margin:0;border:1px solid transparent;"]),j=e=>{let{tab1:t,tab2:a}=e;return(0,s.jsxs)(u,{children:[(0,s.jsx)(w,{active:t.active,label:t.label,link:t.link,trackingAction:t.trackingAction,trackingCategory:t.trackingCategory,trackingLabel:t.trackingLabel,action:t.action}),(0,s.jsx)(w,{active:a.active,label:a.label,link:a.link,trackingAction:a.trackingAction,trackingCategory:a.trackingCategory,trackingLabel:a.trackingLabel,action:a.action})]})};var y=a(576),C=a(6137),k=a(8612),v=a(3348);const E=(0,c.default)(C.W).withConfig({displayName:"project__ProjectContainer",componentId:"sc-1phb6xx-0"})(["display:flex;flex-direction:column;padding:0;margin:"," auto;","{flex-direction:",";max-width:1100px;}"],(e=>e.theme.spacing[7]),o.c.minWidth.md,(e=>e.reverse?"row-reverse":"row")),S=c.default.div.withConfig({displayName:"project__ProjectContentContainer",componentId:"sc-1phb6xx-1"})(["flex:50%;padding:",";"],(e=>e.theme.spacing[2])),I=(0,c.default)(S).withConfig({displayName:"project__ProjectImageContainer",componentId:"sc-1phb6xx-2"})(["display:flex;justify-content:center;align-items:center;"]),U=c.default.div.withConfig({displayName:"project__CallToActionContainer",componentId:"sc-1phb6xx-3"})(["margin:"," 0;"],(e=>e.theme.spacing[6])),B=e=>{let{reverse:t,name:a,image:c,description:r,features:o,callToActions:l}=e;return(0,s.jsxs)(E,{reverse:t,children:[(0,s.jsx)(I,{children:(0,s.jsx)(i.G,{style:{width:500,height:500},alt:a,image:c})}),(0,s.jsxs)(S,{children:[(0,s.jsx)(y.a,{children:a}),(0,s.jsx)(n.n,{children:r}),(0,s.jsx)(v.a,{className:"project-features",children:o.map((e=>(0,s.jsx)("li",{children:e},""+a+e)))}),(0,s.jsx)(U,{children:l.map((e=>(0,s.jsx)(k.y,{href:e.link,trackingData:{action:e.trackingAction,category:e.trackingCategory,label:e.trackingLabel},target:"_blank",rel:"noopener noreferrer",children:e.label},e.label)))})]})]})},D={"spectral-clara-lux-tracer":{name:"Spectral Clara Lux Tracer",description:"Physically based ray tracer with multiple shading models support andColor Rendering Index (CRI) evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision Laboratory.",features:["Computer graphics","Ray-tracing","Physically based rendering","Color calculation using spectral data","Color Rendering index calculation","iOS, macOS, Windows","Objective-C, C++"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_sclt_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Spectral-Clara-Lux-Tracer"},{label:"Thesis",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_sclt_thesis,trackingLabel:h.U.label.body,link:"https://www.fabrizioduroni.it/tesi-fabrizio-duroni-770157.pdf"}]},"spectral-brdf-explorer":{name:"Spectral BRDF Explorer",description:"OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.",features:["Computer graphics","OpenGL ES","Color calculation using spectral data","iOS, Android","Objective-C, Java, C++"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_spectral_brdf_explorer_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Spectral-BRDF-Explorer"}]},id3tageditor:{name:"ID3TagEditor",description:"A Swift library to read and modify ID3 Tag of any mp3 file. Supported ID3 tag version: 2.2. and 2.3. Listed in the implementations section of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.",features:["Multiple id3 tag version supported","Strictly adhere to the offical standard","No external dependencies","100% Swift"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_id3tageditor_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/ID3TagEditor"},{label:"Docs",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_id3tageditor_doc,trackingLabel:h.U.label.body,link:"https://id3tageditor.fabrizioduroni.it"}]},"range-ui-slider":{name:"RangeUISlider",description:"A highly customizable iOS range selection slider, developed using autolayout and completely customizable using IBDesignabled and IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.",features:["Cocoa Touch","SwiftUI","Custom UI Component","Autolayout","IBDesignable","IBInspectable","iOS","Swift"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_rangeuislider_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/RangeUISlider"},{label:"Docs",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_rangeuislider_doc,trackingLabel:h.U.label.body,link:"https://rangeuislider.fabrizioduroni.it"}]},tabbaruiaction:{name:"TabBarUIAction",description:"A SwiftUI custom TabBar view with action button for modal content display. Fully compatible with Mac Catalyst. Available as a standalone framework, a SwiftPM package and as a Cocoapods pod.",features:["customizable tab item","custom central tab item action to show modal screens","supported platform: iOS, iPadOS and macOS"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_tabbaruiaction_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/TabBarUIAction"},{label:"Docs",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_tabbaruiaction_doc,trackingLabel:h.U.label.body,link:"https://tabbaruiaction.fabrizioduroni.it"}]},mp3id3tagger:{name:"Mp3ID3Tagger",description:"A macOS application to edit the ID3 tag of your mp3 files. Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It will let you modify the information inside the ID3 tag of you mp3 files.",features:["100% macOS native app","Implemented using Reactive programming (RxCocoa)"],callToActions:[{label:"Github",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_mp3id3tagger_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Mp3ID3Tagger"},{label:"Download",trackingCategory:h.U.category.home,trackingAction:h.U.action.open_mp3id3tagger_github,trackingLabel:h.U.label.body,link:"https://github.com/chicio/Mp3ID3Tagger/raw/master/Release/Mp3ID3Tagger.dmg"}]}};var z=a(4854);const N=()=>{const e=(0,z.useStaticQuery)("2617699820");return(0,s.jsx)(s.Fragment,{children:Object.keys(D).map(((t,a)=>{const i=D[t],n=e.allFile.edges.find((e=>e.node.name===t)).node.childImageSharp.gatsbyImageData;return(0,s.jsx)(B,{reverse:a%2!=0,name:i.name,description:i.description,features:i.features,callToActions:i.callToActions,image:n},i.name)}))})};var L=a(291);const Q=c.default.h6.withConfig({displayName:"heading6__Heading6",componentId:"sc-1k2esb-0"})(["font-size:",";",""],(e=>e.theme.fontSizes[6]),L.J);var T=a(9815),O=a(7553),R=a(434),Y=a.n(R),W=a(4142),M=b.forwardRef((function(e,t){return b.createElement(W.r,Y()({iconAttrs:{fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},e,{ref:t}),b.createElement("path",{d:"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-5-2v2H9V4h6zM8 8h12v3H4V8h4zM4 19v-6h6v2h4v-2h6l.001 6H4z"}))}));M.displayName="Briefcase";var V=b.forwardRef((function(e,t){return b.createElement(W.r,Y()({iconAttrs:{fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"},iconVerticalAlign:"middle",iconViewBox:"0 0 640 512"},e,{ref:t}),b.createElement("path",{fill:"currentColor",d:"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9V320c0 28.4-10.8 57.7-22.3 80.8-6.5 13-13.9 25.8-22.5 37.6-3.2 4.3-4.1 9.9-2.3 15s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7.3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7-3.2-14.2-7.5-28.7-13.5-42v-24.6c0-30.2 10.2-58.7 27.9-81.5 12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5.8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1l280.6-101c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1c-7.6-2.7-15.6-4.1-23.7-4.1zM128 408c0 35.3 86 72 192 72s192-36.7 192-72l-15.3-145.4L354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6l-142.2-51.4L128 408z"}))}));V.displayName="GraduationCap";const G=(0,c.default)(C.W).withConfig({displayName:"timeline__TimelineContentContainer",componentId:"sc-13vxxlb-0"})(["padding:0;margin-top:",";margin-bottom:",";"],(e=>e.theme.spacing[4]),(e=>e.theme.spacing[4])),F=c.default.ul.withConfig({displayName:"timeline__TimelineContainer",componentId:"sc-13vxxlb-1"})(["list-style:none;padding:"," 0 ",";position:relative;text-align:justify;margin:0;background-color:",";",'{text-align:left;&:before{top:0;bottom:0;position:absolute;content:" ";width:3px;left:50%;margin-left:-1.5px;background-color:',";}}","{&:before{left:40px;}}","{background-color:",";&:before{background-color:",";}}"],(e=>e.theme.spacing[4]),(e=>e.theme.spacing[4]),(e=>e.theme.light.generalBackground),o.c.minWidth.md,(e=>e.theme.light.dividerColor),o.c.maxWidth.md,o.c.dark,(e=>e.theme.dark.generalBackground),(e=>e.theme.dark.dividerColor)),X=c.default.li.withConfig({displayName:"timeline__TimelineElementContainer",componentId:"sc-13vxxlb-2"})(["padding-bottom:",';position:relative;&:before,&:after{content:" ";display:table;}&:after{clear:both;}'],(e=>e.theme.spacing[4])),H=c.default.div.withConfig({displayName:"timeline__TimelinePanel",componentId:"sc-13vxxlb-3"})(["background-color:",";border:"," 1px solid;box-shadow:"," 0 1px 6px;width:100%;float:left;border-radius:3px;position:relative;","{&:before{position:absolute;top:26px;right:-15px;display:inline-block;border-top:15px solid transparent;border-left:"," 14px solid;border-right:",' 0px solid;border-bottom:15px solid transparent;content:" ";}&:after{position:absolute;top:27px;right:-14px;display:inline-block;border-left:'," 14px solid;border-right:",' 0px solid;border-top:14px solid transparent;border-bottom:14px solid transparent;content:" ";}}',"{width:46%;}",";","{background-color:",";border:"," 1px solid;box-shadow:"," 0 1px 6px;&:before{border-left:"," 14px solid;border-right:"," 0px solid;}&:after{border-left:"," 14px solid;border-right:"," 0px solid;}",";}"],(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.light.dividerColor),(e=>e.theme.light.boxShadowLight),o.c.minWidth.md,(e=>e.theme.light.dividerColor),(e=>e.theme.light.dividerColor),(e=>e.theme.light.generalBackgroundLight),(e=>e.theme.light.generalBackgroundLight),o.c.minWidth.md,(e=>e.inverted&&(0,c.css)(["float:right;&:before{border-left-width:0;border-right-width:14px;left:-14px;right:auto;}&:after{border-left-width:0;border-right-width:14px;left:-13px;right:auto;}"])),o.c.dark,(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.boxShadowLight),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.dividerColor),(e=>e.theme.dark.generalBackgroundLight),(e=>e.theme.dark.generalBackgroundLight),(e=>e.inverted&&(0,c.css)(["float:right;&:before{border-left-width:0;border-right-width:14px;left:-14px;right:auto;}&:after{border-left-width:0;border-right-width:14px;left:-13px;right:auto;}"]))),J=c.default.div.withConfig({displayName:"timeline__TimelineBadge",componentId:"sc-13vxxlb-4"})(["visibility:hidden;","{visibility:visible;background-color:",";color:",";width:40px;height:40px;line-height:40px;font-size:1.4em;text-align:center;position:absolute;top:20px;left:50%;margin-left:-20px;z-index:100;border-radius:50%;}","{background-color:",";color:",";}"],o.c.minWidth.md,(e=>e.theme.light.primaryColor),(e=>e.theme.light.textAbovePrimaryColor),o.c.dark,(e=>e.theme.dark.primaryColor),(e=>e.theme.dark.textAbovePrimaryColor)),P=c.default.div.withConfig({displayName:"timeline__TimelineTitle",componentId:"sc-13vxxlb-5"})(["font-size:",";margin:",";"],(e=>e.theme.fontSizes[7]),(e=>e.theme.spacing[0])),K=(0,c.default)(Q).withConfig({displayName:"timeline__TimelineSubtitle",componentId:"sc-13vxxlb-6"})(["text-align:left;margin-bottom:",";"],(e=>e.theme.spacing[2])),Z=(0,c.default)(n.n).withConfig({displayName:"timeline__TimelineDescription",componentId:"sc-13vxxlb-7"})(["text-align:left;margin-top:",";"],(e=>e.theme.spacing[2])),q=(0,c.default)(O.q).withConfig({displayName:"timeline__TimelineTime",componentId:"sc-13vxxlb-8"})(["margin:",";font-size:",";"],(e=>e.theme.spacing[0]),(e=>e.theme.fontSizes[3])),_=c.default.div.withConfig({displayName:"timeline__TimelinePanelContentContainer",componentId:"sc-13vxxlb-9"})(["padding:",";"],(e=>e.theme.spacing[2])),$=80,ee=c.default.div.withConfig({displayName:"timeline__TimelineImageContainer",componentId:"sc-13vxxlb-10"})(["border:1px solid gray;margin-left:",";margin-right:auto;margin-bottom:15px;display:block;background-color:#fff;width:","px;height:","px;"],(e=>e.theme.spacing[0]),$,$),te=e=>{let{children:t,inverted:a,icon:i}=e;return(0,s.jsxs)(X,{children:[(0,s.jsx)(J,{children:i}),(0,s.jsx)(H,{inverted:a,children:(0,s.jsx)(_,{children:t})})]})},ae=()=>{const e=(0,s.jsx)(M,{size:20}),t=(0,s.jsx)(V,{size:20});return(0,s.jsx)(G,{children:(0,s.jsxs)(F,{children:[(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/lastminute-group.png",alt:"lastminute",placeholder:"blurred",__imageData:a(7598)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://lmgroup.lastminute.com/",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Lastminute.com group"})}),(0,s.jsx)(K,{children:"Mobile application developer"}),(0,s.jsx)(q,{children:"February 2017"}),(0,s.jsxs)(Z,{children:["Designing and implementing iOS and Android apps for the main brands of the company:",(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"lastminute.com"}),(0,s.jsx)("li",{children:"Volagratis"}),(0,s.jsx)("li",{children:"Rumbo"}),(0,s.jsx)("li",{children:"Weg.de"})]})]})]}),(0,s.jsxs)(te,{inverted:!0,icon:t,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/unimib.jpg",alt:"unimib",placeholder:"blurred",__imageData:a(4565)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.disco.unimib.it/it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Milano-Bicocca University"})}),(0,s.jsx)(K,{children:"Master's degree in Computer Science"}),(0,s.jsx)(q,{children:"July 2016"}),(0,s.jsx)(Z,{children:"Thesis: “Spectral Clara Lux Tracer: physically based ray tracer with multiple shading models support”. You can find more info about it in the project section."}),(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"Computer graphics"}),(0,s.jsx)("li",{children:"Software engineering"}),(0,s.jsx)("li",{children:"Algorithm and Theoretical CS"}),(0,s.jsx)("li",{children:"IT security"}),(0,s.jsx)("li",{children:"IT management"}),(0,s.jsx)("li",{children:"Design and user experience"})]})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/condenast.png",alt:"condenast",placeholder:"blurred",__imageData:a(6215)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.condenast.it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Condé Nast Italia"})}),(0,s.jsx)(K,{children:"Mobile/Web application developer"}),(0,s.jsx)(q,{children:"June 2013"}),(0,s.jsx)(Z,{children:"Designing and implementing iOS and Android apps for the main brands of the company: Vanity Fair, Glamour, Wired, Vogue. I also worked with the web team to develop the new version of the official web sites for GQ Italia, Glamour, CNLive! and Vogue Italia."})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/shi.png",alt:"shi",placeholder:"blurred",__imageData:a(3002)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.linkedin.com/company/shi-srl/?originalSubdomain=it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"SHI"})}),(0,s.jsx)(K,{children:"iOS/Web Developer"}),(0,s.jsx)(q,{children:"October 2010"}),(0,s.jsx)(Z,{children:"Design and development of mobile application on iOS, Android and Windows phone platform, for enterprise distribution (ad-hoc distribution) or within the various app store. Design and development of Web application used as backend for mobile app. Design and development of Enterprise Web application."})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/bottinelli-informatica.png",alt:"bottinelli informatica",placeholder:"blurred",__imageData:a(9358)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"#",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Bottinelli informatica"})}),(0,s.jsx)(K,{children:"Developer"}),(0,s.jsx)(q,{children:"August 2009"}),(0,s.jsx)(Z,{children:"Software development for textile industry."})]}),(0,s.jsxs)(te,{inverted:!1,icon:e,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/avanade.png",alt:"avanade",placeholder:"blurred",__imageData:a(3780)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.avanade.com",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Avanade"})}),(0,s.jsx)(K,{children:"PMO Consultant"}),(0,s.jsx)(q,{children:"October 2008"}),(0,s.jsxs)(Z,{children:[" ","Assigned on Eurosig integration BA-HVB/Unicredit project, I worked with the Accenture Consultant team as a PMO.",(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"Tracking creation and evolution of functional specification to cover the gaps between ASC, CRE, PAY, MDM and BSS sector of the IT systems of Unicredit and HVB bank."}),(0,s.jsx)("li",{children:"Publishing statistics to show the state of art of the functional specification produced, the open change request and the state of user test. Maintenance of tools created with Microsoft Excel, Microsoft Powerpoint and VBA used to generate the above mentioned statistics."}),(0,s.jsx)("li",{children:"Maintenance of tools used to manage WBS of the project inside Accenture team."})]})]})]}),(0,s.jsxs)(te,{inverted:!0,icon:t,children:[(0,s.jsx)(ee,{children:(0,s.jsx)(i.S,{width:$,height:$,src:"../../../images/carrier/insubria.png",alt:"insubria",placeholder:"blurred",__imageData:a(8543)})}),(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"https://www.uninsubria.it",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"Insubria University"})}),(0,s.jsx)(K,{children:"Bachelor's degree in Computer Science"}),(0,s.jsx)(q,{children:"October 2008"}),(0,s.jsx)(Z,{children:"Thesis: “Grandi Giardini: implementazione di un portale web con funzionalità e-commerce”. A web e-commerce developed for Grandi Giardini Italiani s.r.l., a company dealing with the organization of events in some of the most beautiful italian gardens (never deployed in production)."}),(0,s.jsxs)(v.a,{children:[(0,s.jsx)("li",{children:"Software engineering"}),(0,s.jsx)("li",{children:"Algorithm and Theoretical CS"}),(0,s.jsx)("li",{children:"IT security"}),(0,s.jsx)("li",{children:"IT management"}),(0,s.jsx)("li",{children:"Networking"}),(0,s.jsx)("li",{children:"Programming"})]})]}),(0,s.jsxs)(te,{inverted:!0,icon:t,children:[(0,s.jsx)(T.V,{trackingData:{action:h.U.action.open_experience_and_education,category:h.U.category.home,label:h.U.label.body},href:"#",target:"_blank",rel:"noopener noreferrer",children:(0,s.jsx)(P,{children:"ITCG Romagnosi"})}),(0,s.jsx)(K,{children:"High school in Accountant"}),(0,s.jsx)(q,{children:"July 2005"})]})]})})},ie=(0,c.default)(r.M).withConfig({displayName:"resume__ResumeContainer",componentId:"sc-18s4otr-0"})(["padding-left:0;padding-right:0;background-color:",";","{background-color:",";}"],(e=>e.theme.light.generalBackground),o.c.dark,(e=>e.theme.dark.generalBackground));var ne=function(e){return e.projects="projects",e.carrier="carrier",e}(ne||{});const ce=()=>{const{0:e,1:t}=(0,b.useState)(ne.projects);return(0,s.jsxs)(ie,{children:[(0,s.jsx)(j,{tab1:{active:e===ne.projects,label:"Open Source",link:"#personal-projects",trackingAction:h.U.action.open_personal_projects_tab,trackingCategory:h.U.category.home,trackingLabel:h.U.label.body,action:()=>t(ne.projects)},tab2:{active:e===ne.carrier,label:"Experience",link:"#experience",trackingAction:h.U.action.open_education_and_experiences_tab,trackingCategory:h.U.category.home,trackingLabel:h.U.label.body,action:()=>t(ne.carrier)}}),(0,s.jsxs)("div",{children:[e===ne.projects&&(0,s.jsx)(N,{}),e===ne.carrier&&(0,s.jsx)(ae,{})]})]})};var re=e=>{let{author:t}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(g,{author:t}),(0,s.jsx)(ce,{})]})}},5814:function(e,t,a){a.d(t,{M:function(){return i}});const i=a(5086).default.div.withConfig({displayName:"container-fluid__ContainerFluid",componentId:"sc-13iqbmo-0"})(["width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto;"])},6137:function(e,t,a){a.d(t,{W:function(){return r}});var i=a(5086),n=a(5814),c=a(4148);const r=(0,i.default)(n.M).withConfig({displayName:"container__Container",componentId:"sc-s0w66r-0"})(["","{max-width:540px;}","{max-width:720px;}","{max-width:960px;}"],c.c.minWidth.xs,c.c.minWidth.sm,c.c.minWidth.md)},576:function(e,t,a){a.d(t,{a:function(){return r},m:function(){return c}});var i=a(5086),n=a(291);const c=(0,i.css)(["font-size:",";",""],(e=>e.theme.fontSizes[9]),n.J),r=i.default.h3.withConfig({displayName:"heading3__Heading3",componentId:"sc-13l3151-0"})(["",""],c)},3348:function(e,t,a){a.d(t,{a:function(){return c}});var i=a(5086),n=a(4148);const c=i.default.ul.withConfig({displayName:"list__List",componentId:"sc-hcphk6-0"})(["font-size:",";color:",";line-height:",";","{color:",";}"],(e=>e.theme.fontSizes[2]),(e=>e.theme.light.primaryTextColor),(e=>e.theme.lineHeight),n.c.dark,(e=>e.theme.dark.primaryTextColor))},281:function(e,t,a){a.d(t,{n:function(){return c}});var i=a(5086),n=a(4148);const c=i.default.p.withConfig({displayName:"paragraph__Paragraph",componentId:"sc-jaaqjv-0"})(["font-size:",";color:",";margin:",";line-height:",";","{color:",";}"],(e=>e.theme.fontSizes[2]),(e=>e.theme.light.primaryTextColor),(e=>e.theme.spacing[0]),(e=>e.theme.lineHeight),n.c.dark,(e=>e.theme.dark.primaryTextColor))},4737:function(e,t,a){a.d(t,{K:function(){return c}});var i=a(5086),n=a(9495);const c=i.default.a.withConfig({displayName:"standard-external-link__StandardExternalLink",componentId:"sc-sklbck-0"})(["",""],n.L)},9495:function(e,t,a){a.d(t,{L:function(){return c}});var i=a(5086),n=a(4148);const c=(0,i.css)(["font-size:",";color:",";text-decoration:none;line-height:",";","{color:",";}&:hover{color:",";","{color:",";}}"],(e=>e.theme.fontSizes[2]),(e=>e.theme.light.accentColor),(e=>e.theme.lineHeight),n.c.dark,(e=>e.theme.dark.accentColor),(e=>e.theme.light.accentColor),n.c.dark,(e=>e.theme.dark.accentColor))},7553:function(e,t,a){a.d(t,{q:function(){return c}});var i=a(5086),n=a(4148);const c=i.default.time.withConfig({displayName:"time__Time",componentId:"sc-a9frgs-0"})(["color:",";","{color:",";}"],(e=>e.theme.light.secondaryTextColor),n.c.dark,(e=>e.theme.dark.secondaryTextColor))},9815:function(e,t,a){a.d(t,{V:function(){return r}});var i=a(6918),n=a(4737),c=a(5893);const r=e=>{let{children:t,href:a,trackingData:r,target:o,rel:s}=e;return(0,c.jsx)(n.K,{href:a,onClick:()=>{(0,i.$)(r)},target:o,rel:s,children:t})}},3780:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADZklEQVR42o1UeUhUYRD/5Zq6Hh0eHVbbXaJlUaZdtBQdFJZFbD5XbcnWSP/JSrN7s1Mjk+4SraxUWjLMIpOIJUglSkmwkyg7jIggwspKd6d5b31vt1bJB8PMN9/M7/t9M/M9oJOPTHCTdB02UCPK6TGu2WqRKfnIvtftj8xQidp2B8lUjWLFfw9FVAWDc8z/wQg9JF2KIXQDVVQDf2WvFv2pEpVUiCBxbdbpVGboVN1iR2dxkIph7Li+O1ngLtnXsY7KkOUca0IXJVDYbcdoOgyzDPJPjLe1xONCg7/xQL0q5VKd2rhW8sOe2zm7NOQyqCDZOket5Ea9n7Dg7qd5c8uPw+Lb4GsobOyr3yiVwPn6ciLrSFsiLjqDiAeRzh78IXSqqWnMvL1UgZOUj+Gi77VmUcWbsOkjXZjywo0ElFIClrbmeQ4jUXhE5Br9mDtY+zkqrFy0244h2prNPeHvy4SoVd9mhGyxE+pgKTGJQwnF4zltVO2ibPUh2xHfi3ShdzGVBQp0E56t2oCiloiQcQqBfdygNJz+pe0/zhrjd0psnoPdSgyyJaChbTlOfJuN081jMFPyn/EZT5bAHbTb+6l1g89VeuYbSIahXkpeMgS+1RXS4wklIfjvVxGHoxSL6d+1GPxxEipearBX8i9BlFXAdSrrk0oFzDhbXUgZHvlkwHlbLLZx3gMxV6mhAiggguUWA/iJ60dq7HnUC4dpNZdiOcLl5tEhZrnecxTlwO/nYsS0LcU5eeRc3+4K6QpVzFRPq5DyegTaXwVgn7j3dirUYqLcyebJ0LTM4ZcTDY0zhitoPELbBWxnnUqbEVADlNS5IUHcewj0tM8cVJ8jce3rLCz8d147BXWeKQb0vw/cZtHJe+9CUPAhHOmibdG6vihluKXxEfUa9BSlMRQeEjNvDHzQA6X1Xsh/MQBXm0Zgk3yonNP1DwKOOjl/FsC9DgivBvopBGIxrGsQPRaKY8MjMJoSoWE9jWURNyeIG2X4vQJTKAPBPG/zm6PhzTVO4vnNZeCxnBtDzle3xaMXJ+dwUAHrrRxgYtGzFPHeTj5gB9tZfGAs61KOyWMx8kFZvD7LdiHriQ6GAsLYYWZJZztJAoyHgQMv2/TIZHsZv/E17M+VDhGQxr79bO/mmD1s72Lm0vz+Ac6BpQvoocCOAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/979e77f135579d6ed51adcbaafa5c2f9/1f8a1/avanade.png","srcSet":"/static/979e77f135579d6ed51adcbaafa5c2f9/ca121/avanade.png 20w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/f31ef/avanade.png 40w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/1f8a1/avanade.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/979e77f135579d6ed51adcbaafa5c2f9/264f2/avanade.webp 20w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/e73fe/avanade.webp 40w,\\n/static/979e77f135579d6ed51adcbaafa5c2f9/61ca6/avanade.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},3002:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACE0lEQVR42tWUz08TQRTH+SM8Gv8CE5OKIUYTOZDISUw8mNYYiTQxWjBETlQrpFYoKDotQtggLdWWFJVtoUCLSrCyFlJFo7eewZMHWijd7fz0tU2WsKVevOjbl8kk3/eZ92beztThv7C6fwPWtCIYqWEggV4T5pxTxvJ7hb1qL6iMgc4OgSGnEGLs1YfzNx67UbB/6OUACj8anhn0vHGjqf6hQJ936ky3f2LlO4RB8D5cqUVwdqLFgQJxkCG5qmq65wuq4MQ58/nq+BqoajXMKK03u+aSlbVLu4OvWNYI1jATLJvGmwGY4KJmhDmjpsvOyMo3gCExoRR2KDgHFsrgQvBthf+UDocZJaev9NlHopbeF5YHwWa7b/LdRrsUX89swXI2/3uLlOwMw9JUP/N9GOzctQGzfeLYxR7r4HRjl2T3vzXZRk/deW5+Gj3S6m24F2pyhqGC4gG4xMNp84ZLPdb7k2PRT50e2WR90nh79HgbutAbcr1Wjraik12+prtBI6y3avVL5tbDUPdI1DG+0IFk+eMPJCuZrV8gDc+n3fKatPQVmmKEK5nbHb755Q0IZYzBCP8EjJTCJjFMPJHVm89ixj7rmV1eueW6e24xObuozMZTsaV0LLEeS6QWEsp0ZPmszYMiKWOfdQMBKsrmdnI7u2XPl700z+Z2MSHlztW8GBrBmFJS5WCkFPCHi/H/PAa/AbYqLi3oatrZAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/c49c35e93f9b072b695e68b85f8b34a3/1f8a1/shi.png","srcSet":"/static/c49c35e93f9b072b695e68b85f8b34a3/ca121/shi.png 20w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/f31ef/shi.png 40w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/1f8a1/shi.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/c49c35e93f9b072b695e68b85f8b34a3/264f2/shi.webp 20w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/e73fe/shi.webp 40w,\\n/static/c49c35e93f9b072b695e68b85f8b34a3/61ca6/shi.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},5021:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAA3XAAAN1wFCKJt4AAACLElEQVR42u2TPWhTURTH76stpq2pk3MRtIOjs7PgJDgp4qL4VVSqbW3SiIO6FexQBwU/UbSIDg4FddKhtXlpkqIlmprkoSam1ESsyWtiEvP3f++7aih9fuEieOHAue/e97vn/M85QgxO4a/af+A/ADR+YsLl2x9HKAFNJ8LO3s89fSMQdge28FKrLwQPrZV+G036noEQmv36Xr+JNt8UVtNvpi94JgJLgQHn4vCDNDK5MmJvinj2qoCZ1wX6NjLvSugeTUIcmUT/HQupuUXkFz5hLJrHxqGnEHzUCGigoYEGgRcfZVG0q8jmy5CrVqsjnSuhUqqi+2YSW0Zi6vv7YhXxjK380Yl5iD7TCWppyu00z4CJDaeiqBKWeGtjDVPqkJd7gjj7MK0gvtsWxIEJ7Lz2Ep1npqlnyL3KUpN1p6Oofa7DmrPhVdpR+GNBHL6VVMDUfAkH6bfLyHqDqjjLAptkJNSjqwHY4f9+vop2L5LD15WhNDsuxZX+xnIpGxq4XgNT3yLUZ4x+xdEgtl+ZxXh8QUEXyzVsGp6BOG7+HlDq1EltN5+LQRx6ArF/HJcfZxV08C417Zn8MbBCYLIhZS8tkvqoAEP309hzdRYRq6D2e68nlMauwC5Wrl4HrKwG6nR330jgQ7GiIHxPrbHpvNMFrqNHgPdkGLuo07YLL9DS+BirupZp72NEPjb41vPPsVJOiv9XZrnXdBq2sQtke8ifZXpSsz5nQgwd4RcoEvKug3eMGgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/866c7ad6483bd5234a01df43e8df4347/1f8a1/typescript.png","srcSet":"/static/866c7ad6483bd5234a01df43e8df4347/ca121/typescript.png 20w,\\n/static/866c7ad6483bd5234a01df43e8df4347/f31ef/typescript.png 40w,\\n/static/866c7ad6483bd5234a01df43e8df4347/1f8a1/typescript.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/866c7ad6483bd5234a01df43e8df4347/264f2/typescript.webp 20w,\\n/static/866c7ad6483bd5234a01df43e8df4347/e73fe/typescript.webp 40w,\\n/static/866c7ad6483bd5234a01df43e8df4347/61ca6/typescript.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},6781:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEsklEQVR42nVVbWxTVRg+tyX+WMIPfojGHyTTGDAx/tAoBAIKrF0JSpxYGBsQNtZ2K/gHMQEdK7bbOlhwQWRre/vBKiPLMkbABDGByYABEpP1a107yocGhs4wQBlId+99fM+9bWVET3Luee778ZzzftxzGZs+BHMP9A6HQ8dftoZTxRb/cGeNL/aYTxWHI8Vc53BA967jxxmMQWD/Ncw9PXpuxHG1f2Sm1T9cbw0k79sP34BFjCt8csxlNaT7jGzyxNy3QKQJoM/j2lCynE5ydcvhm7AFk7LVF5OsYgw0FasvKtkCSZnrrGIiU+tPlucPoXJwnA/PHhieXyMm+uvC11AbSikWct7QPqRUHBjCOpoV32grl3Edt+G2tPkZ26H0O7nT6dhmMfaCRYz5a0PpbF1nBjW+qFzljcrrD0awu3cUR38aw4X0XQym7qL38hgcJFt/cAhVnqhMxHJdOANrMJW1BYbF9kHMZrZgauCT7ttEFJcsFN6mjgjswTgujk5AURTwkVvUIdML19mDCWxsj6DGG5XswaS09cgtLKw/fZZR8hUuJDKl2hPFllAC18cnVWdJVohgOpmUE2R+m8S2wymeS6xsHlCer/pWYmsDYJu9UYVagioZwwYKczA9oTpMybK6Tv4tIf7LA8R//RMPCec34qNn4AZesnRDv8YHtkYEK/crrEBGx3ceHVXDy58qNfYQ27tG1JzxonB8/Y/HePjXYzSIg5i11k9EPujWBSCs8dNK75zQKsbBq3nsyp1CeI+eSPi0K6kS8bbZEkqqxKsa+/G6rQvM+DXmVYUxY7UXRWYf4U6wjzxPEZLj5dGJAmHk5gNUksxORHWBBN53n8eLliMQPvaClXlQ6TqJ8d8fwOI+hR0d5zB26x5Ktvc+Q3h1OuEmXwKVbZfw6kYKy+gGM3dAVxEE+5ATfo/xcSJs+QE7POdw5/Y9GLb3TQ+5j3pOaxMFWapJ2c5jYIvqISxzQCh1qXjuuna8Ye8GK9mPuZs6oafTFq324TUeclkuZGoZNT/Nx69rVZS0Cl/5+RreNLfhucUNmLGoAW8RjkRvYvLRE+zynsesyhCEyqBaDMHs04rC24a6HFs7R7D885P4rj+pkj3Jai3CK3r+QprmqIr5yOY29HZdAiv9Crr1IUoF9eBaUWH2Q2mlYt9FaV419dCSXZhjakZy5LbWi+QoP9XZvP+mpjSy4eFbeGXVXrCllI6VrQrlV2KVhxS2cFvfQNEH+0FkUzqjS2LvOTBnhRsnTsXUb07J5VTNrfa5kC5KG1ORljRAMJDP8i+n2Mo2yuGBs4y9XDubLXeJgsmdZaUt0JGBsHS3rF9Qj2WbvdjnO4Pe40M4emIIrb7TWFbtAdcxsiFbmZlaqCebs8zgEpnBMZvl7zNmaJ7PSlz9zLQHulK3ojM4JbZ4l8Le3gm24AttckwyndEpCWTDbYmonxlb/r2+1Ic5d+NybGgqZyXOjLCilYibZD2lgVpG4VNvaqS0NNGpWonImVFtc/epxpHDBYHZrBGv2jOTjOuZofE+M+2FUOJUhBKXwjEzNt1TddzmWb//+bnoC7saXMVEGqZU8BxlVcxlWjj5yKb9pP4B/qgC/xGyd3YAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/5ca81a7b4761b05d23be9ece1e1f540f/20fcb/cpp.png","srcSet":"/static/5ca81a7b4761b05d23be9ece1e1f540f/067dc/cpp.png 25w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/18e85/cpp.png 50w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/20fcb/cpp.png 99w","sizes":"(min-width: 99px) 99px, 100vw"},"sources":[{"srcSet":"/static/5ca81a7b4761b05d23be9ece1e1f540f/f608f/cpp.webp 25w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/6e098/cpp.webp 50w,\\n/static/5ca81a7b4761b05d23be9ece1e1f540f/7b8a5/cpp.webp 99w","type":"image/webp","sizes":"(min-width: 99px) 99px, 100vw"}]},"width":99,"height":111}')},6215:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTElEQVR42u1STU/DMAxNYdP4GJvo6NokTuKknYrKEIhqQkxCAiHxcYADN+78/9+ATccB1CLtwIlZimzZec9+iYXY2P+0qMVHLfWfmKij1gnqIvluRVEM6IySJBkCwC6dOE3TffblpDyI43gEkBfOuR0h6r5SasIx31lhB1VVDf3Up1lWJAIAH6y1wRi8J79Egy9OuxsC3SLipbX+3YF7C2mYUv9t58KrMeYEwC+47o2/JvgdQk48+VJIGSx3s0dWqlwZIpUAM81TcUzExzTtPIQwJsKe9z7VWs+yDB3niVzRnYzuep6+7c16LJ2bSCn3eCquc478FktkX9d1v+tNv8gYKFDjmSEZdJ41xdT5AiDMSfZjOAxjzjfvGJ5WDTs/6DNB4yM2cgoCGlRYUu6cSE9ZvlPuqqn7BctdYyt+36t1FztqWey2/Mb+wD4AVlMrAQYV0O4AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/028c0f3e8cb87c90c02ae4b09bcf67cf/1f8a1/condenast.png","srcSet":"/static/028c0f3e8cb87c90c02ae4b09bcf67cf/ca121/condenast.png 20w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/f31ef/condenast.png 40w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/1f8a1/condenast.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/028c0f3e8cb87c90c02ae4b09bcf67cf/264f2/condenast.webp 20w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/e73fe/condenast.webp 40w,\\n/static/028c0f3e8cb87c90c02ae4b09bcf67cf/61ca6/condenast.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},4565:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAEEBf/EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAelUIox0MoP/xAAbEAACAgMBAAAAAAAAAAAAAAABEQAhAxIjQf/aAAgBAQABBQKzKTj1JngPF3ms/wD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAdEAABBAIDAAAAAAAAAAAAAAAAAQIRIRCBMUKx/9oACAEBAAY/AilUS8TNnA3Xpt42+qH/xAAdEAACAgIDAQAAAAAAAAAAAAAAARExIUFRYXGR/9oACAEBAAE/IcuG8Kh2yeCktS5DeNEH8sIUpOnA9Mvt7Jphk9Jal4f/2gAMAwEAAgADAAAAEEMPAP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EAB4QAQADAQACAwEAAAAAAAAAAAEAESExQWFRscHR/9oACAEBAAE/EKqdzruzSGWrpd/HJ5wKFw/sECQ1Ke2LU6cLR65sYYHHS/c6XDlKOUQHbC1co8RO7erQYf2f/9k="},"images":{"fallback":{"src":"/static/5a6eadd2118f0241d417d34e235d7e96/499f6/unimib.jpg","srcSet":"/static/5a6eadd2118f0241d417d34e235d7e96/f4935/unimib.jpg 20w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/2f28c/unimib.jpg 40w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/499f6/unimib.jpg 80w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/41624/unimib.jpg 160w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/5a6eadd2118f0241d417d34e235d7e96/264f2/unimib.webp 20w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/e73fe/unimib.webp 40w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/61ca6/unimib.webp 80w,\\n/static/5a6eadd2118f0241d417d34e235d7e96/60b4d/unimib.webp 160w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},9934:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAADIElEQVR42l1TWU8TYRQdDT65PPmgCcYHSTQKRWlSBFcgRaOCgNZQSmwtpMiuZZsu0+lil2lpBRQRFKQgBDBqF5WWpYILbsQtxuXBH+CT+CgzznGKGo03+ZKTLzfn3nPvuQQhBIDlwlv2GyfMzHxOGR59re4bnG/t6nk6cvHyi7C3fTbs9EyMGM1hb1PLDXWJqjtFLNasIJYCy2gay5fgH/AFWHV99HWd5/z9lzbnJGtxxEBZp2F3z8J7PgjhDzpqErQtBtIYQZ32JntS3fsqv6C1fnOmevUvLvoX6djY24z2zocfnZ5HaG2b4x3MFO/yxDib8wFrNI+ymZmpXEfnPc7tm2MN5gjr9s1yjDfGt118xtucj6Es6/t04Ig7Y4msu3s2TUhYII1RWOzjbIlCxR0+dJiXSqVQlzXD5R7AmjWrUHC0CHv35oDx+CGTyZGXl89n7c/mKqv0QoE5aKqGv2XlWsWEg4ndisto1N39bneFkJS0EQbqKvTGXiQnb4FcXox9+3PRP/AEKaI0KBRybE8VwWofxRmtD0mbNsDpDi8azPdxSuO/TZhs0Td60zhIKvqjRXcZYnEqunqeo17bgXSJGFJpFoqOV6DryhtkZOxGYWEBcnJy0dv/DupyCqmiZLi9Uz9IKoLK2rG3hN509yZlmRLkznwv1xixft1aoSsFJBIJrLZOnJAVQdvYjnPOEPLzD6K4WI7ExESUlCiwc2c6SH0XDObooklYoLLMf4vQaod3NOmCX30dL4W5FLJ5eTLO44vydmYcVsc0mNY7grwIDHQIV/oeCd1lQ6mqh8tzjxdsxBktE2y8ocrakYU92XTa0mJqzg5JDHT4vdM1ICQG+BbjBN9IhrhGMsA2tITYJl2IayCDHGWJsDpDG2tnAhwp5OhMUT5uoVOa/g/SQ4504l/vlJZ6VurpyaoGMjDfpAssGugJxGXEFxb3YxxTlmlhNI/RrI+g5uzYolrjnz8mu1AtEjWs/E3219x/LkUokFBR27v1dN2g8nT1IKOpGhwqr/AHVWXXggplz5BMcYkpknWodmVZtxHEvoT/L+Un/7TR6neIuUQAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/620c56e99f37d2c1428113d7a58d9a79/1db8c/php.png","srcSet":"/static/620c56e99f37d2c1428113d7a58d9a79/dd0fa/php.png 38w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/2238c/php.png 75w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/1db8c/php.png 150w","sizes":"(min-width: 150px) 150px, 100vw"},"sources":[{"srcSet":"/static/620c56e99f37d2c1428113d7a58d9a79/39a61/php.webp 38w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/fad43/php.webp 75w,\\n/static/620c56e99f37d2c1428113d7a58d9a79/9f469/php.webp 150w","type":"image/webp","sizes":"(min-width: 150px) 150px, 100vw"}]},"width":150,"height":81}')},5795:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABu0lEQVR42nVRTUscQRBto5uohCUQ49WLH9vVY1ZZEBMUBUEPipKEQGBzCB70kBAQFb3ICEYJJDPdvTOig4JeXW85bDCzPbNfJBEEYU/5Df6JsXp1VQIWFA3V71W9ekUiEjUQjFynjPtgp32w9hTlhwqExHc56OETfsJ5qjERIQ06yX9xXbutK8Zf58G+wPz3C6xPBZoZPgHep5iVDMEdyoM1kOs042cpr7XOCZP8Sa5v8xkKeZQF8+HvQaslS7KN5Ce1hyvGdlRkmfMSc6b+0J2uq6nmgzr5oMNsRsWrIWYe+Ac90EvNxRTYMmTiaxEy8yGVuwHjE+TU8NaqyYMI113Q5Apzt4og00j6rKi9FID8GIAwEbeaN6xXFeYc/TW8SY0tM+cYhSwHTLzBxq6fEAt3FMpqibpjhV5nutjrzpTBeYugd0ga9RP8hWL2UsEQHJtvKJDCp/YM+r2Jqr+g17OIWz/uXl+58dDXHlK7imusBTWFoqtAZb9i8qX2EH16rL2q+TcSNp08/9b+o/t7m5fyYmdX2WqSkSZyc+UBGQ+peI+Td33g+wEVmcAQi6h8vH5lUrtydO+V9d8l+Z/Mru/JKlAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/529407730cf9a43a0559b8bc29406a3b/5e4f6/opengl-es.png","srcSet":"/static/529407730cf9a43a0559b8bc29406a3b/63986/opengl-es.png 60w,\\n/static/529407730cf9a43a0559b8bc29406a3b/bcec9/opengl-es.png 120w,\\n/static/529407730cf9a43a0559b8bc29406a3b/5e4f6/opengl-es.png 240w","sizes":"(min-width: 240px) 240px, 100vw"},"sources":[{"srcSet":"/static/529407730cf9a43a0559b8bc29406a3b/df675/opengl-es.webp 60w,\\n/static/529407730cf9a43a0559b8bc29406a3b/5763e/opengl-es.webp 120w,\\n/static/529407730cf9a43a0559b8bc29406a3b/26d93/opengl-es.webp 240w","type":"image/webp","sizes":"(min-width: 240px) 240px, 100vw"}]},"width":240,"height":80}')},6824:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAErklEQVR42m1V/W8UVRR9bA0L2+7Ozm7ZWXZnZ3dm3ptFSIMCSmJUQAQCGLWJGGilGAsSMPoD1GJUTIx8VNEKlUqBQqUiUGhXivQjFCUY0PJhoqgIREEIAYL+Aag7c7wzbbWgk7zNy+x9591z77lnGPv3GUKrwN08yJg8yudbyNVku2Hxq4Zh2oZh2Aa3rvJEfP/dPlY5ibFw/7mC/rO3Pe4Ln7uxouH5iXmLL8eXr4L+wBRHxEbAME2Yhg4RK0Zm8gxHWVGD5NzKS9lwqLz/vG8w6BBvAQVCluqTi5ajqOOME6nZZge6z+ajq7c4ZiYDUzcRebfZKez4Ph9Z22gXdp911GeWwIpKdXTW9w/OwI8pRH02nUbo4568WlpmZwNDoY+dgHB9DtLWg5C2dUHe0AJjdAmyfh9GLlhqhxsP5LMpFYZl1Q3KlDEhxLNCcBgZPR9sOQ5tyiwYnMNUE+BqGkNP38Cw3isQyRRMLQWqJ9TZcxBq/twxdT3P3VjLmu+BlZSUyJTdz3SLG2xL27uhTZ0FS5YgVJUy60Dx6+sRfbMe4Q9zBJqEJRUhNfspSJv2w0yptmFlYXJ+ni6SGLesSi4EeKw4L5Ia0fsMoR09iL7VgKJdX6Lg3J8ItfYi2HaC9n8huPOIBx785AjCG9sglDh4PGa7GMR0AeN6JmelNSgvvZEPtp7A8J7zCHR9h9ir78F/+jrRnwnj3vtgUD1TM56E/5vrUFa8TXFnETh0DsF9vYgvrs67bCjDvYxnMlfCDe0I7jnmaJOmIzNuItWmB1JDDsqLK2GaFmXSCvn93eBpHbGq1US9DRKx0MeOR2ra4yhqO+lE6vZQvdWLTHnhNVtq6oSIyjAzafARUci1O+A/dhnWyATCm9rAbgLsN0Be9xHEyCSGnrqByJrNXqzbJBFXqBRfQFn08i2mLHnFDjV1EWCkH7CYAJvhP34FVjwB+YO9Hhj7HYjUNEIkXMCbkN+hPcW6gJwuDu4+injlsluMp7TLMnWP5OKkH5oKfdz9pMXD1MGcW1eiaVBmzSAxg2IxonotXdJCZTlEsRM9yoWfnnYitTvBk8mLjHSUszQNMWpKUe6UV+jCzm+hVNfAf+oatEdmQb9nAjWF6jWj1GtKrGoNAt1nMPzwhb6mLKwaaEoL49nsc55slGKbpzOQtnciSBlGV29F0Z5jnmyCrV+TbHr79q5sVjWQtA5B2tzu1XSQbCqYpmkyKf2CJ2wSqSdsysqiJnFX2I0HUbxyg7ekLQf6hC2HoD36GIm+0xsG0z1rmj8RTsibFtMUFYK7o2fQ6H3laJNn9jlMim5XU/D3XoX/5DWvhqamev+lpj+B4K6jjpHJ2O7oEdMyNnigucXrBswhWVrumYMxpgTy+t0INXUjtL0L4bp+cxh2FxLli4lNRz5L9afRrR2MNWBfPqKyIblwGQpd+yKLCnT9mI+s2+EYJg2/bnj2Fej8gexrW599zV9KcgvX3mlftxlsNiqXJeY9fzFeRQb78DTHNVWDzNV1GKH0G2z1GiSfrvxlVKhw7v8Z7H8+AeMZk0b72AIzobQSnV8J7A+dliHEJXq3b4yPVbgxbuycOz4BfwMW0WG3/7I40QAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/2d9118605a5e0c4c2a0b5f08bde874f1/1f8a1/react.png","srcSet":"/static/2d9118605a5e0c4c2a0b5f08bde874f1/ca121/react.png 20w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/f31ef/react.png 40w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/1f8a1/react.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/2d9118605a5e0c4c2a0b5f08bde874f1/264f2/react.webp 20w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/e73fe/react.webp 40w,\\n/static/2d9118605a5e0c4c2a0b5f08bde874f1/61ca6/react.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},7299:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAAEKElEQVR42rVVa0ybVRjuZFETE/Wnf7xHHZeNS0Hl4iT+2kVnnGx/jAlON+L4M2E4F10ydSpb/GU0g4xL6cpW6uIy5bLCev+KFCi9sbbQlrZQCnS1F1i5tN/3vb7na8tqMqzGeJIn7/ne732ec77vnPMcHi+jAUhySFxe9f0QXLFR9/KwjSD9HFyZ0kRXvT+m3uXwtmr48gESwzFXzVykHx/hs+iqrzGwbBQEIkbByrq/AVg4NRfpg3DMU0NqJRJJdkGMuc6l3vDwTBMoHLXsTft+IFA6jrBaVxO4A9IQ1uT97QwzxPiOJfG8WFcOrbLn6C4VnxaqyxJdmrKEAPstsmdpyehucCxJ/FhbksnNFNuWio/6wgPGHn0xSE11zIjjHAjUxdBNVSKqQKDaBTrndzBg/IiR6EtgPjpoQM4jmRqcOsDkg6n+Ma37Y2iT5yb6DO/DoPkoCDVl0K2t4iDUlGKuDvoM78EleT6tdR9HCnuUcKenpx/iZsopA49Tn1nq7RePlUKHcifdJt+BpBehU7kLsTOFQsy9gAO+xNX0jJeAJzj4a3IyvOROID83EvM1Y6xdCI9YKecnoLQ2MCrrSSBQWhvvwYY5WxPiJOkzw65G8Id1ZuR+GF3zfcstlPvODYti5h2YmD1H+0OjzE3TBzBkqUMcy4I6kJprwR+aYCbmvqTlrgPg+eM3O09tP0W33no+If79Ddro/QnaFXnQqSpCFGZBEX72DjB6LkHPcDVzcehpWmP/nOGprKdZ/B9wTbcPTN4WuKx5ObWqFVlQCSKqlBMk3A5FPmhsX7A8le00jlSQEmzlVlWEBBFVngUVODgfjN42+Fm3F78sFzT2M/C/CLL/RdC0KZiXFFTe/pQhe00yspc1ei6y/0ZQRPHB4G5lCbdDUcDiejC80Zmv11rlz8B1/X7WviCCLjX/HwsK8VhOLUjgl/E9bIvsSdB7muO8wLJJOOE7C87F6z50kTtCqhiuUK+xmaLJVa/8i2A3qdEWofPIA47Fa3793FlYChuukJNCzmAl4glX4IZCPMoHgbIwfpl6dZPcpS5mBKoSdlNQ8wpXIx4rBlegV4bcpxDliIfTbszZT2w9eMKyeB6kt2uYq8PVwIlqKmDAfBj6zYe4Psld1b6ONYcZy2IzrK4HGtJGu2ljxCRTwtsRu9fjMYHMWg/tyny617wPojHvQOiuTdZrfhPaFPm03FYPiUS8HWurk1zOGHLuZ7LbU/Etpf0E2VtxmeMgRO7OngmvTH4jcxxCwdwNytlAroc9mZytXDst+G5yhgUbUvsBvD/cXwWXLd9L7QdxkIIN5VQ9EXw76yWVvnCwqGpitplsBXp8kZjoWh0NoeNjC/VAcqb5C0Sw/L72v1WLxFwXLLMd7HxoZAhJjyMe80d0Q5OznWwo5ji/FfFP2QJ4CpHvjjIAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/8c4e5772010601223509bb4b1a587e66/bed6b/android.png","srcSet":"/static/8c4e5772010601223509bb4b1a587e66/b2057/android.png 21w,\\n/static/8c4e5772010601223509bb4b1a587e66/e5276/android.png 43w,\\n/static/8c4e5772010601223509bb4b1a587e66/bed6b/android.png 85w","sizes":"(min-width: 85px) 85px, 100vw"},"sources":[{"srcSet":"/static/8c4e5772010601223509bb4b1a587e66/d3b0e/android.webp 21w,\\n/static/8c4e5772010601223509bb4b1a587e66/bf6a8/android.webp 43w,\\n/static/8c4e5772010601223509bb4b1a587e66/1d5ef/android.webp 85w","type":"image/webp","sizes":"(min-width: 85px) 85px, 100vw"}]},"width":85,"height":100}')},7842:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAADJ0lEQVR42n3Sa0yTZxQH8GMpIGxB0Tnj0MVrRA2ROJZZMzZZ5w1qW6RKrMbbzAYh1GYRl1VZMd0WE4OgiIxpjAiCdzGpRIRYmoEKGpAV0SpILVCoQAsUbOzb5/37rpkfpsme5JcnOefk5Hz4ExFFCQ4KfhZkC44KMgRB9P/vF4FGRHRgAtFhMVFcoPpROM0Qi8Wa0PCItSFhHypF4rA0kShEFxFK8/7pm/Rfi3FxY9Bber0+hPRtU4KjFm0NmxOjEs1YqKbp83dRjGwZAcE0oIz+bVw2u9UdP+XOqDTyHpcUaX6VHNXyMjn68n/uASYE/szmaaSt/Zs05k7KuP00aF+DNUh3r+0Dndkl/rF2Hw2t/iQfP6ngLi/iXl0qBP6q4HEqC8PpC12j9g2lo8/k597yPpeV9lg2XZq13ziuvfAEx6qtfFFdJ663dPtlJVZQWo2GepaKsjx/5KD/YZNv4IiGea8cYiOGLWxw/1KG4VSgXwX+X0yA/hTEGiqY/Hgza2q3MY97kFU223yfH20GfX8jlRzLw7eP6NToq6/xu4xn4W+vx1jBXjizF/PubhXnsso5z3MFN9Kh4MZtyRwcMk5iOI3dZ9pgedYNk8WOWssLJiloAe2qkpJTErHGnbEWjrICv3NrLHzmMoyX5vLO3xdjuFcFT4cCHY0y9FnWo/FWIqzmb5GYW8inlzzi1UV3EZVdB0uXg0nyGkFqYyy54yctc++MR99ds99lNvpYj4WN5WzDQGEcXD0p8NmVKM5NQN6vK7E5VYL6KyvxXXE+VMWPcL+9y1/TavNVtdox03DHSztuLaAhxZJZvYlzuocU0XitS+F92i/gTPp0bPCq1DvYpeQxtIGdzEtgFcVSVnA4wX8mbwUOXchx0W7TyMfZDVhxwsJPz2nAxKzaJtpjmhxIwrA6JtIhm7uu95uphl7pzC39O+Pmel8on+ClCtfOrmKaH75EZclqnMqXcplpX6GtIek8ZSIiWFu9ndJv7iWtKY4yq0Lfiz5AgazhwWfB7qfym55Opa2ucs1jY/kq68BjufX8n9L2pup1fV678khgTgj6u0veAGcEv92/I7QUAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/6f2db00617e236847f782afd8b732e09/c3add/html-css-js.png","srcSet":"/static/6f2db00617e236847f782afd8b732e09/6c869/html-css-js.png 38w,\\n/static/6f2db00617e236847f782afd8b732e09/0d419/html-css-js.png 75w,\\n/static/6f2db00617e236847f782afd8b732e09/c3add/html-css-js.png 150w","sizes":"(min-width: 150px) 150px, 100vw"},"sources":[{"srcSet":"/static/6f2db00617e236847f782afd8b732e09/7472f/html-css-js.webp 38w,\\n/static/6f2db00617e236847f782afd8b732e09/d912e/html-css-js.webp 75w,\\n/static/6f2db00617e236847f782afd8b732e09/f5103/html-css-js.webp 150w","type":"image/webp","sizes":"(min-width: 150px) 150px, 100vw"}]},"width":150,"height":85}')},9358:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB7klEQVR42u1SSW/TQBSeBOFZ7BbUjX1pcexZbDdhDy1LEaraSl3gwIEKKiFxQUri8TiJVRSNCn+BX8GZH8E/QpzCjAsKlPaI1EOf9DRv3vLNe28+AE7kOMqwsq+6ai6/bFD517bx4QFfqWB0lrFhZQRegh4mfxT8fviIPCjUE8TSh26iIkK7N90gT4hIlxHPFgmXK2U8ko9Lu5bOoShvYi7vWh2jWeDdyqZwlN6e8FvjiHaaYDzWrwhXfcJzDXnhY6pekESvwOTTLBKDBRQNmiTeW3WYXEOhUjjSW1j016EoljHV9xHvXyWRXiN09wKOB5sAiXTBDeXSaSHnDWgdh92L5h6P0WLSYe0aDDvXcaDuYL912Qm74X7neZ3UOnUUZg9sLgzSp8TU207BEBSTQOuqxxW3YEhkVyCXvj2tWj8U+Q0LaIDOn5nXZ3FNXvJ844/TOVvjBdmUWdnMNH/vgR/Vj18/TxT3QGN33eXZNmK9ly7vbkOWP8Ms38Sst4epfG52+I7ExY7DOquEqdeIf1jEcbGBqNoBXDuIyjeIqUfge1W//QYHS6Ah/Zmofc6O7tVb03Y3jlm6G7UTJ8io/QDCsobtqhzTTAETNeuynrC5BuyaE2X0P9AafDmlR9w6hLgHiX4U8f8i+okcJ/kJxE5+DYAYgrAAAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/614c7940f8af75350797162b2c1b4098/1f8a1/bottinelli-informatica.png","srcSet":"/static/614c7940f8af75350797162b2c1b4098/ca121/bottinelli-informatica.png 20w,\\n/static/614c7940f8af75350797162b2c1b4098/f31ef/bottinelli-informatica.png 40w,\\n/static/614c7940f8af75350797162b2c1b4098/1f8a1/bottinelli-informatica.png 80w,\\n/static/614c7940f8af75350797162b2c1b4098/e9a79/bottinelli-informatica.png 160w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/614c7940f8af75350797162b2c1b4098/264f2/bottinelli-informatica.webp 20w,\\n/static/614c7940f8af75350797162b2c1b4098/e73fe/bottinelli-informatica.webp 40w,\\n/static/614c7940f8af75350797162b2c1b4098/61ca6/bottinelli-informatica.webp 80w,\\n/static/614c7940f8af75350797162b2c1b4098/60b4d/bottinelli-informatica.webp 160w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},5310:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAE5ElEQVR42pWUeUwUVxzHB4+oaWtTq2VBEVQOD0RgFQRFRBYXEJZ4oCIo2ipqUBRLbSRR4oVaRLksIBpREBFQlOXWgreoCzUtmgihFkWt1bq7wC4z897Mt7PUUvtHD1/yMi9v3u/zvpn5/r4M8x4DwJAXHBxb9fCo1TyefuZqq5W0bfY+BLOiIvQ3LcsbG62zThZe27bnoPZifQNeckDrK2NX08+6a6U3mp2lIwOisjUD+woTgH6hUnEo0D+hHgMkNX+72d/WdtA06xEyaTl4nIvb8pKyarblcQcePn6G0srLuvIbP7zekZq77V8FyjUYOEVtGKm80ukVddsYEV6v2x5Z3V7gl1p5KzH7FFuQk4WgYNXT8E3b1Wk5eYiIiFjZWzix/uWHYU2sXeQd4rusgY+O1nDp6zS0Iuou92hrE9e9WcOLa74H1t6jWFGnxYzsBpQ1PxOu32nE5Mj4lmGpLUMDF64M8fDz+4xZet2wed09/vU6DW/Y+COwoRmIkuaa+8Cqe8CXjQKib7Oi6pKBKMu1RFn6gnpmNwo3Wn8Rd+VXYObhOjb8QodDr7IE9GNCbxpivmoFFlzlqaqOFVR1HA2+zJGASxyZX8cJG27z4qLvWHH5FSMC1Hp4Fz5HUN5DPPjpKeYlq4WgkueYU9DuZ+KZ/gGzuEqn+PwuoKyVQJd4zKvlEVjDw7+aR/RNgthbBF9c4RBcacTSKj0cc54gof4FbjW3wGFXPZ1fwcL37OuYPqBHyavxS+o4bl4NhaKcF/3KCeaoCfwrCDZep4iqI/A6xyJEbcDcYi0UeR1QRScgbPNOuGS0Er8LIlTnu46YgN6SOxhmf9vHoTV8e0A14HmOF7zOEbgVEwRJYP8yApWax8yzLBZe6EboeR28UzSwt7PFaP/1CD7zG1UUEcw+bah9a/w/rLaggm3wqQBmlfB0bilBeBXBIjVFZCXFMjUHZVEPfPJ1WFWqx9wtmRg7ehRcNp2C2zGt4HycheI028bEPhnS5zfvs4Z8RTkQeJ7QkFKK1VUUAcWSRSSFykIO7ieMmHZUB8fDTyEPiMDYcfaYvfcm7FO04pg0I3xzWSOToLXpA87K696hKAMmHCPE7aT0LQsovPIonI8RjE5jYZPSBYskHWy2XoXjZCeMkSvhmNiGWZlvRItvDKJnDmCX1qXoA7oe7Qr3KQKs0gl1yKJYc1HAwkKKUSk8rA6xsDygx6d732DiikOYYCPDiDmb4JT0CgGZWtF8Xw/veRyQZ/Ss7QN+tFvv6XNCgMVhAVMyqbj4jACHdIqhiTws9hthsVcHWXwb5MpwWFuaC1ZhmXR26huyMV8vxBVzdF894JDMZfzVtPG/Wnhlk85hByC1FRVCcqlgn0yocwpHph7qpq4HO4WpW2ohnyrHyLGTxPFxGizOBdYXCFiS00P8v+0xWuzWH3knBioHKY6SBztrANd0CO6ZgEc2MD0LcE8X4ZzEwj0yiUxyGAfZeI+OMbH3cy3jWrYPjXm0lJnfNI1xzDFnbP0HMe96xzWDVsZLQJdkttM1ydgycY++1inxZZbV1+2xw1dfC5rho3xga+cAmcwy7q2KAf8YoqbH4Jj2mUzYo0BmQYk14xTxwTsnet/LZCNDPxk2PM/c3LzXHvIoKUxNrWYKhF4GzP4r7s16e/PPov85fgcFHRJ0sITBeAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5648e6bfe2871de649ff4cc9be70efc3/de3a1/xcode.png","srcSet":"/static/5648e6bfe2871de649ff4cc9be70efc3/f2a56/xcode.png 38w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/7458e/xcode.png 75w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/de3a1/xcode.png 150w","sizes":"(min-width: 150px) 150px, 100vw"},"sources":[{"srcSet":"/static/5648e6bfe2871de649ff4cc9be70efc3/0852d/xcode.webp 38w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/18188/xcode.webp 75w,\\n/static/5648e6bfe2871de649ff4cc9be70efc3/c65bc/xcode.webp 150w","type":"image/webp","sizes":"(min-width: 150px) 150px, 100vw"}]},"width":150,"height":150}')},8543:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAADbElEQVR42pVUW0hUURRdeh+OOT6STNFESktSS0oz9SNNCxWRMjVL562jqaRzHR1TK0Pop6K/iCCigl70Y1GB1EdCQX1UUF9h1kcPkIgIooy0aZ07Y2rM9Liw797n3LPXXftxNhD4CQmwDg2wF4J/fMTBRTAYUhAbvgyyvEkXo5rBvWR+i/4fUImSBkmqot5ASaeso+RTiigbIaOQkks7LkhECzZzCFZCnYqKolw4avejy3ICXaaTaNs1jKrSbf6ftPNcGXVSMFARhghHQUJsBrqsR9Ft/4x9Tu8v6W/xoscxDc12DeUFgj2ZykIbAzETgNVIiElBv/MyDrR50W2bIbtvcFm/Q7NOw0Vb6IFWLzyOl2iozKFPZmRMjEiPuiBvkqrWUa+Bp/kYDnV4CfQObtsXnZUPeAZ9zV70Omib3+ug+9vuITIyXZVlLSoqKnUOTlVX6fS3FpSQ3WsCOOhUTzY10CzDDPOrD9g6wp/sQI/dBFdjJXqbXqHTouktVZ4W5i8oHwNbAkjEXtNhHmLubN3otjwh4DMd0G1rp32W+2UEfUp5SPsMU2Hm+Rv0TWGMm+dyGaGs5XspwznDgz3wNI2Q1U2C5dFhAm57J+0kfp8kWCPXbjIWkdQzRWOi0pIk1RmNxrjZDBbzvR4DzhqGM042+azwdTrcpnMLC3CRYL0EP01WHu6/YRcU88fnWf1zRDGq4eHb9cvgf3L9EsLDx+n0HJr9PkO9RuA2tskVyjCrTEDbANzWcTK9y/UDnBpa4gsZtdSxswy38KI2wllTiF6G47bU8rDmZ/qC+ioZucjeS8YVetE0q5NpsMBj30mELPZj/lxRREGAbP129LeM0uEjNPMtMnyr96PLcoEALgy2isb+RHuUUTxmKj6gulw09nIoSvb8PlQQGmrS76zbIRp7AkPtov+mmPQ5QNGHmnUKA2yhwT38bt9NnzL6CpaG36/eYoZeSb0STfWrGfqYDjbEJu+xX2Le3DhItn3OHwSa5L0WBEoJJkALgg2GVGahWAbykJiYjPYGM3N2h0yPsAg2Aj1CR8MwCrMK9CL6oiry+4YGG18JsiwXKgaDyV+1dD0lPgdh5yuKYmbOMudNGgl/mdQRYdHRKxCppvtvQIQOqnLAStJ2xMeLddifZmGw8S//NprUeVMl4LT+CRY1CAyH2+PQAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/763f92325514b8a4c65913416b8c633c/1f8a1/insubria.png","srcSet":"/static/763f92325514b8a4c65913416b8c633c/ca121/insubria.png 20w,\\n/static/763f92325514b8a4c65913416b8c633c/f31ef/insubria.png 40w,\\n/static/763f92325514b8a4c65913416b8c633c/1f8a1/insubria.png 80w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/763f92325514b8a4c65913416b8c633c/264f2/insubria.webp 20w,\\n/static/763f92325514b8a4c65913416b8c633c/e73fe/insubria.webp 40w,\\n/static/763f92325514b8a4c65913416b8c633c/61ca6/insubria.webp 80w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')},1211:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEx0lEQVR42o2Va1BUZRzGz2ezmWaamr6IFjALe4NlYdld9gYuGi7OQOQ4ZmLeMvA2kbdsQ2UMyPBSXhLFIdS8MFo0VjI1pmM55ZhOjAZZGqOhiKy4wl4O5z3v+/Q/u5rWp87MM+/99z7/5+xFkugZaPeOVdq9QeWIt1s+6InI+z0s3uZm0b0uFm0pYMpRH2Of+5hy7L/yRqjtUdo9a9HhfFJjSWi2jlEOek7huB845OOs1YN4ixuxXS5Edzgx/KEDwx85wT71QD3sATvsAzvkTYgf9gLHCjlOFNPY8/3Adu9YSd3nDeJoEZTdBbK8y8XjOwoQ21aA6FaCNTkQ3mhHaIMNoQYblLYiqHttoDNgbe6H4qzNJaNjItg+V52k7nZ3odmF0W1OLm9xIL6ZnG3Mx0h9HsL1dtxdn4fBdTbcWmFAaNdrEN/VQt2eBbWFHO9xJcT2uDha3eCtrm6JbXEMs80OyBvtIv6BG5G1WYhsK8f9hkKEVptwJ2hD/0oL+pZb0LsoA9GeH4GzW8E2GaF+7IZKsWjiOymWHc6YNNqQz+R6B2LrrIhtCiDaMg/3VpgQ7WhAaL0ftxalo6/GiutLLfi9MgV9O5dAe9T2aqjvk9Mt5JIMaWKb7UySa20sXmtDJJiP4RojogdWI/pFEwZXuRC/0In+tQFcezUF16os6KlMR8+SAnBFAYZuQG2isilbtZGAjXawxnwmxVflsujKXIwstyJck4vQglTETu5D/PwJDDbNwejNq7jZOBuXy57DpVd06Ko0Qe7vTbjkXzVCXaOHuoHKrssHq7MxKbosh0WW5SC82IKhagsGF2bj1swJiP38LRSC3fu6FXxURv8n7+F8ybM4V56K0cGbCaD48wL429nglDMP5kF9J5dJI9UWFibI0OvZGJxnxu05ZvTNMqB3WiqiF0+DMwXK3dsJwN0zx/FrbSUEG02MEbkHTjnztwi6ioArrExiS3NYeG4WBmZk4PYsgs004foMA65WpOO3slTcP3cy6UZVky1dACGSQOrz+grwRUbwNwlI1UqcHKpVVoSWFONGaQp6S8fjarkOVyr0uDQ1DRdLJuBOZ/sDKEvCHgJHyOHKIvCFZoJaoVZZCDg/h6FSD7GpCsOdR3Cjegp6Jo3HL65ncN75NM7ansIPheMQ7vopCeXqI2AkDFEzEWK2EWJ+Dvi8bALOMjNRaYF4OQ3Y3whta6z3CobI1cBnrQid/hLx/r+IwTUcvVr+QMkI0HkAoiKVoAQklsSnm5iYboaYQcEGUiDWz6X0ky/hHycP+4+P4zHNLu0dIJgdYpoBfLoGLDcNo9wEaoWoyIJ48Xlymw2xux7ij8sQ9JH5F7SvF6J5A5Xoh3ijhL6G30AsLQMC6cQwxyReaurCVAJOMXIRoCymErSEMvWOg5hC7YIAxJr5EO8uhFhcQetUjY8qmayDKKLLy6jUl/I4AgYQp1tCsSGIgBnw62Xu13PhJ8gkAx2gg8XUetMgCsZDOAnifgGJdW1tEl0+2QRMzOQoypQRyAL3G+oklFrHCF/mKfiNgE/P4c3EI+lpjm4uNCal9bW5x/cUGjj8Jm3+DIrNTyR/tb36sXBkBuHQdcOuiyBfx/6XtL32jB5hz6iFU5f4C/gbBGNaAT9Yz54AAAAASUVORK5CYII="},"images":{"fallback":{"src":"/static/976122273ccaecbec7c7bf258d849375/56197/swift.png","srcSet":"/static/976122273ccaecbec7c7bf258d849375/f1c6c/swift.png 27w,\\n/static/976122273ccaecbec7c7bf258d849375/ffdd3/swift.png 54w,\\n/static/976122273ccaecbec7c7bf258d849375/56197/swift.png 108w","sizes":"(min-width: 108px) 108px, 100vw"},"sources":[{"srcSet":"/static/976122273ccaecbec7c7bf258d849375/391be/swift.webp 27w,\\n/static/976122273ccaecbec7c7bf258d849375/40067/swift.webp 54w,\\n/static/976122273ccaecbec7c7bf258d849375/e26a9/swift.webp 108w","type":"image/webp","sizes":"(min-width: 108px) 108px, 100vw"}]},"width":108,"height":108}')},7598:function(e){e.exports=JSON.parse('{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACbUlEQVR42pVUS2gTURSdJJNOxgoVXYni1q2u7FYXgjs3utKlH1y4c6MWwWbymcmkiZqViDQIiqitin8QU7EIQVyIYKugBUHre5NMM5npZCaZeO+bdPKxgRoeSeDd884995z3ODqSwSVkOn/+Z3HsR6F8mkaHFMG5YhbXpuwAB0e45Mqhu2b8HQ3Jg/wxFTERmXDxP9wkfNOo0lsD4Mn6udetXzUqqoPk4RTsalvzxukX9r0v9Yk5ulmlfBcPYKl27LFnOtrOq4RL4RF+q7xSHS9ahQ+e0fAarvNmCWqsXBk6xY46miMK3ZJr/tAbT76RSBobg72YCgdBR83f9fqFkrajsMxN2A8XnfmfSBAw+3VAAgfbDxZIVGbCmAReJiMKE3zZlObb7fbK4fvILKo90xYBL1XHpz3LXS1+YmereLyARSQkm8p7QII6KAt6DqzKgA3AoB+8A0X6gdtdYX7/l94aJ57C8ALOfjAWpSt7bnh2U9/PwKNTgbEklCShVC9nP1hEZutKufldp4LCAAk01p88G+GQhMF2WNa25VsVy7xYAgzh07Wjs8ap5ySmoLHrIYOBIa1x8plnOdquAoTJTOBs4QPZINE1/4aAQXDcvvXZmVsCP31XakdmK3tverZrzywSfn18wCyZ50sQpsajr4g8jq4w/4rQjj2z0MUL/2oGYaNZK192Py6zJEjoCvonVfdNr+FTNJzGysFpw4pCmBJoUqib3g4e+V1oio5N0bEcjWFxPxjvrYqp6k9CgG8REy/JqguZ91PEbejRwKEkte3XjDMvjbOvKruv43USMtxGHx0Qwl4FTA4oZ5r/Ak+Bo82SrfYqAAAAAElFTkSuQmCC"},"images":{"fallback":{"src":"/static/1f595a259e5fd65ba994ee98004013ed/1f8a1/lastminute-group.png","srcSet":"/static/1f595a259e5fd65ba994ee98004013ed/ca121/lastminute-group.png 20w,\\n/static/1f595a259e5fd65ba994ee98004013ed/f31ef/lastminute-group.png 40w,\\n/static/1f595a259e5fd65ba994ee98004013ed/1f8a1/lastminute-group.png 80w,\\n/static/1f595a259e5fd65ba994ee98004013ed/e9a79/lastminute-group.png 160w","sizes":"(min-width: 80px) 80px, 100vw"},"sources":[{"srcSet":"/static/1f595a259e5fd65ba994ee98004013ed/264f2/lastminute-group.webp 20w,\\n/static/1f595a259e5fd65ba994ee98004013ed/e73fe/lastminute-group.webp 40w,\\n/static/1f595a259e5fd65ba994ee98004013ed/61ca6/lastminute-group.webp 80w,\\n/static/1f595a259e5fd65ba994ee98004013ed/60b4d/lastminute-group.webp 160w","type":"image/webp","sizes":"(min-width: 80px) 80px, 100vw"}]},"width":80,"height":80}')}}]); -//# sourceMappingURL=components-bottom-index-50e0b44eba7559dc729c.js.map \ No newline at end of file diff --git a/components-bottom-index-50e0b44eba7559dc729c.js.map b/components-bottom-index-50e0b44eba7559dc729c.js.map deleted file mode 100644 index 63beeffac..000000000 --- a/components-bottom-index-50e0b44eba7559dc729c.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"components-bottom-index-50e0b44eba7559dc729c.js","mappings":"kOAOA,MAAMA,GAAwBC,EAAAA,EAAAA,SAAOC,EAAAA,GAAeC,WAAA,CAAAC,YAAA,sCAAAC,YAAA,eAAtBJ,CAAsB,6GAItCK,GAAUA,EAAMC,MAAMC,QAAQ,MACrBF,GAAUA,EAAMC,MAAME,MAAMC,kBAE/CC,EAAAA,EAAWC,MACUN,GAAUA,EAAMC,MAAMK,KAAKF,mBAI9CG,GAAsBZ,EAAAA,EAAAA,SAAOa,EAAAA,GAAUX,WAAA,CAAAC,YAAA,oCAAAC,YAAA,eAAjBJ,CAAiB,sFAEzBK,GAAUA,EAAMC,MAAMC,QAAQ,KACtCF,GAAUA,EAAMC,MAAME,MAAMM,uBAEpCJ,EAAAA,EAAWC,MACDN,GAAUA,EAAMC,MAAMK,KAAKG,uBAGrCJ,EAAAA,EAAWK,SAASC,IACNX,GAAUA,EAAMC,MAAMC,QAAQ,MAI1CU,EAA6BjB,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,2CAAAC,YAAA,eAAVJ,CAAU,+FAQvCmB,EAA2BnB,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,yCAAAC,YAAA,eAAVJ,CAAU,+FAG9BK,GAAUA,EAAMC,MAAMC,QAAQ,KAU9Ba,EAAsCC,IAAA,IAAC,OAAEC,GAAQD,EAAA,OAC5DE,EAAAA,EAAAA,MAACxB,EAAqB,CAAAyB,SAAA,EACpBC,EAAAA,EAAAA,KAACb,EAAmB,CAAAY,SAAA,OACVF,EAAM,gUAKhBC,EAAAA,EAAAA,MAACN,EAA0B,CAAAO,SAAA,EACzBC,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,yCACLC,IAAK,QACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVE,IAAK,yCACLC,IAAK,QACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,2CACLC,IAAK,UACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,uCACLC,IAAK,MACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,6CACLC,IAAK,SACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,yCACLC,IAAK,QACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,uCACLC,IAAK,MACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,+CACLC,IAAK,KACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACN,EAAwB,CAAAK,UACvBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVC,UAAW,UACXC,IAAK,8CACLC,IAAK,aACLC,YAAa,UAAUC,YAAAC,EAAA,eAIP,E,kCC7H1B,MAAMC,EAAejC,EAAAA,QAAOkC,GAAEhC,WAAA,CAAAC,YAAA,qBAAAC,YAAA,eAATJ,CAAS,gBAIxBmC,GAAUnC,EAAAA,EAAAA,SAAOoC,EAAAA,GAAqBlC,WAAA,CAAAC,YAAA,gBAAAC,YAAA,eAA5BJ,CAA4B,0WAC5BK,GAAUA,EAAMC,MAAM+B,UAAU,KAEzBhC,GAAUA,EAAMC,MAAME,MAAM8B,yBACrCjC,GAAUA,EAAMC,MAAMC,QAAQ,KAE3BF,GAAUA,EAAMC,MAAME,MAAM8B,yBACzBjC,GAAUA,EAAMC,MAAME,MAAM+B,eAC9BlC,GAAUA,EAAMC,MAAME,MAAM+B,eAC3BlC,GAAUA,EAAMC,MAAME,MAAM+B,cAG3C7B,EAAAA,EAAWC,MACIN,GAAUA,EAAMC,MAAMK,KAAK2B,yBACrBjC,GAAUA,EAAMC,MAAMK,KAAK2B,yBAC9BjC,GAAUA,EAAMC,MAAMK,KAAK4B,eAC7BlC,GAAUA,EAAMC,MAAMK,KAAK4B,eAC1BlC,GAAUA,EAAMC,MAAMK,KAAK4B,cAG5C7B,EAAAA,EAAW8B,SAASxB,IAInBX,GACDA,EAAMoC,SACNC,EAAAA,EAAAA,KAAG,uNACoBrC,GAAUA,EAAMC,MAAME,MAAMmC,oBAChCtC,GAAUA,EAAMC,MAAME,MAAMmC,oBAC7BtC,GAAUA,EAAMC,MAAME,MAAMmC,oBAC1BtC,GAAUA,EAAMC,MAAME,MAAMmC,mBAE5CjC,EAAAA,EAAWC,MACUN,GAAUA,EAAMC,MAAMK,KAAKgC,oBAC/BtC,GAAUA,EAAMC,MAAMK,KAAKgC,oBAC5BtC,GAAUA,EAAMC,MAAMK,KAAKgC,oBACzBtC,GAAUA,EAAMC,MAAMK,KAAKgC,sBAe/CC,EAAoBvB,IAAA,IAAC,OACzBoB,EAAM,MACNI,EAAK,KACLC,EAAI,eACJC,EAAc,iBACdC,EAAgB,cAChBC,EAAa,OACbC,GACD7B,EAAA,OACCI,EAAAA,EAAAA,KAACQ,EAAY,CAAAT,UACXC,EAAAA,EAAAA,KAACU,EAAO,CACNM,OAAQA,EACRU,KAAML,EACNM,QAAUC,IACRA,EAAMC,kBACNC,EAAAA,EAAAA,GAAU,CACRL,OAAQH,EACRS,SAAUR,EACVH,MAAOI,IAETC,GAAQ,EACR1B,SAEDqB,KAEU,EAGXY,EAAgBzD,EAAAA,QAAO0D,GAAExD,WAAA,CAAAC,YAAA,sBAAAC,YAAA,eAATJ,CAAS,wFAalB2D,EAAsBC,IAAA,IAAC,KAAEC,EAAI,KAAEC,GAAMF,EAAA,OAChDrC,EAAAA,EAAAA,MAACkC,EAAa,CAAAjC,SAAA,EACZC,EAAAA,EAAAA,KAACmB,EAAG,CACFH,OAAQoB,EAAKpB,OACbI,MAAOgB,EAAKhB,MACZC,KAAMe,EAAKf,KACXC,eAAgBc,EAAKd,eACrBC,iBAAkBa,EAAKb,iBACvBC,cAAeY,EAAKZ,cACpBC,OAAQW,EAAKX,UAEfzB,EAAAA,EAAAA,KAACmB,EAAG,CACFH,OAAQqB,EAAKrB,OACbI,MAAOiB,EAAKjB,MACZC,KAAMgB,EAAKhB,KACXC,eAAgBe,EAAKf,eACrBC,iBAAkBc,EAAKd,iBACvBC,cAAea,EAAKb,cACpBC,OAAQY,EAAKZ,WAED,E,2CC/GlB,MAAMa,GAAmB/D,EAAAA,EAAAA,SAAOgE,EAAAA,GAAU9D,WAAA,CAAAC,YAAA,4BAAAC,YAAA,gBAAjBJ,CAAiB,4GAI7BK,GAAUA,EAAMC,MAAMC,QAAQ,IAEvCG,EAAAA,EAAWK,SAASC,IACDX,GAAWA,EAAM4D,QAAU,cAAgB,QAK5DC,EAA0BlE,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,mCAAAC,YAAA,gBAAVJ,CAAU,2BAE5BK,GAAUA,EAAMC,MAAMC,QAAQ,KAGtC4D,GAAwBnE,EAAAA,EAAAA,SAAOkE,GAAwBhE,WAAA,CAAAC,YAAA,iCAAAC,YAAA,gBAA/BJ,CAA+B,6DAMvDoE,EAAwBpE,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,iCAAAC,YAAA,gBAAVJ,CAAU,mBAC3BK,GAAUA,EAAMC,MAAMC,QAAQ,KAW9B8D,EAA4BhD,IAAA,IAAC,QACxC4C,EAAO,KACPK,EAAI,MACJC,EAAK,YACLC,EAAW,SACXC,EAAQ,cACRC,GACDrD,EAAA,OACCE,EAAAA,EAAAA,MAACwC,EAAgB,CAACE,QAASA,EAAQzC,SAAA,EACjCC,EAAAA,EAAAA,KAAC0C,EAAqB,CAAA3C,UACpBC,EAAAA,EAAAA,KAACkD,EAAAA,EAAW,CACVC,MAAO,CACLC,MAAO,IACPC,OAAQ,KAEVjD,IAAKyC,EACLC,MAAOA,OAGXhD,EAAAA,EAAAA,MAAC2C,EAAuB,CAAA1C,SAAA,EACtBC,EAAAA,EAAAA,KAACsD,EAAAA,EAAQ,CAAAvD,SAAE8C,KACX7C,EAAAA,EAAAA,KAACZ,EAAAA,EAAS,CAAAW,SAAEgD,KACZ/C,EAAAA,EAAAA,KAACuD,EAAAA,EAAI,CAACC,UAAU,mBAAkBzD,SAC/BiD,EAASS,KAAKC,IACb1D,EAAAA,EAAAA,KAAA,MAAAD,SAA+B2D,GAAO,GAA1Bb,EAAOa,QAGvB1D,EAAAA,EAAAA,KAAC2C,EAAqB,CAAA5C,SACnBkD,EAAcQ,KAAKE,IAClB3D,EAAAA,EAAAA,KAAC4D,EAAAA,EAAgC,CAE/BlC,KAAMiC,EAAatC,KACnBwC,aAAc,CACZpC,OAAQkC,EAAarC,eACrBS,SAAU4B,EAAapC,iBACvBH,MAAOuC,EAAanC,eAEtBsC,OAAO,SACPC,IAAI,sBAAqBhE,SAExB4D,EAAavC,OAVTuC,EAAavC,gBAeT,EC9ER4C,EAAoC,CAC/C,4BAA6B,CAC3BnB,KAAM,4BACNE,YACE,0NAGFC,SAAU,CACR,oBACA,cACA,6BACA,wCACA,oCACA,sBACA,oBAEFC,cAAe,CACb,CACE7B,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAO0C,iBAChC3C,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,uDAER,CACED,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAO4C,iBAChC7C,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,mEAIZ,yBAA0B,CACxBwB,KAAM,yBACNE,YACE,+QACFC,SAAU,CACR,oBACA,YACA,wCACA,eACA,0BAEFC,cAAe,CACb,CACE7B,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAO6C,mCAChC9C,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,sDAIZkD,aAAc,CACZ1B,KAAM,eACNE,YACE,0QAGFC,SAAU,CACR,qCACA,0CACA,2BACA,cAEFC,cAAe,CACb,CACE7B,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAO+C,yBAChChD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,0CAER,CACED,MAAO,OACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOgD,sBAChCjD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,4CAIZ,kBAAmB,CACjBwB,KAAM,gBACNE,YACE,+NAGFC,SAAU,CACR,cACA,UACA,sBACA,aACA,eACA,gBACA,MACA,SAEFC,cAAe,CACb,CACE7B,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOiD,0BAChClD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,2CAER,CACED,MAAO,OACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOkD,uBAChCnD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,6CAIZuD,eAAgB,CACd/B,KAAM,iBACNE,YACE,gMAGFC,SAAU,CACR,wBACA,uDACA,6CAEFC,cAAe,CACb,CACE7B,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOoD,2BAChCrD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,4CAER,CACED,MAAO,OACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOqD,wBAChCtD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,8CAIZ0D,aAAc,CACZlC,KAAM,eACNE,YACE,6MAIFC,SAAU,CACR,wBACA,oDAEFC,cAAe,CACb,CACE7B,MAAO,SACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOuD,yBAChCxD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,0CAER,CACED,MAAO,WACPG,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC5C,eAAgB2C,EAAAA,EAASxC,OAAOuD,yBAChCxD,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B/C,KAAM,iF,cCpLP,MAAM4D,EAAeA,KAC1B,MAAMC,GAAiBC,EAAAA,EAAAA,gBAAc,cAoBrC,OACEnF,EAAAA,EAAAA,KAAAoF,EAAAA,SAAA,CAAArF,SACGsF,OAAOC,KAAKtB,GAAUP,KAAI,CAAC8B,EAAYC,KACtC,MAAMC,EAAUzB,EAASuB,GACnBG,EAAeR,EAAeS,QAAQC,MAAMC,MAC/CH,GAAiBA,EAAaI,KAAKjD,OAAS0C,IAC5CO,KAAMC,gBAAiBC,gBAE1B,OACEhG,EAAAA,EAAAA,KAAC4C,EAAO,CAENJ,QAASgD,EAAQ,GAAM,EACvB3C,KAAM4C,EAAQ5C,KACdE,YAAa0C,EAAQ1C,YACrBC,SAAUyC,EAAQzC,SAClBC,cAAewC,EAAQxC,cACvBH,MAAO4C,GANFD,EAAQ5C,KAOb,KAGL,E,aC3CA,MAAMoD,EAAW1H,EAAAA,QAAO2H,GAAEzH,WAAA,CAAAC,YAAA,qBAAAC,YAAA,eAATJ,CAAS,uBACjBK,GAAUA,EAAMC,MAAM+B,UAAU,IAC5CuF,EAAAA,G,oDCFOC,EAAyB,cAAiB,SAAUxH,EAAOyH,GAKpE,OAAoB,gBAAoB,IAAgB,IAAS,CAC/DC,UALU,CACV,KAAQ,eACR,MAAS,8BAITC,kBAAmB,SACnBC,YAAa,aACZ5H,EAAO,CACRyH,IAAKA,IACU,gBAAoB,OAAQ,CAC3CI,EAAG,4MAEP,IACAL,EAAU1H,YAAc,YACjB,IChBIgI,EAA6B,cAAiB,SAAU9H,EAAOyH,GAKxE,OAAoB,gBAAoB,IAAgB,IAAS,CAC/DC,UALU,CACV,KAAQ,eACR,MAAS,8BAITC,kBAAmB,SACnBC,YAAa,eACZ5H,EAAO,CACRyH,IAAKA,IACU,gBAAoB,OAAQ,CAC3CM,KAAM,eACNF,EAAG,6uBAEP,IACAC,EAAchI,YAAc,gBCL5B,MAAMkI,GAA2BrI,EAAAA,EAAAA,SAAOgE,EAAAA,GAAU9D,WAAA,CAAAC,YAAA,qCAAAC,YAAA,gBAAjBJ,CAAiB,iDAEjCK,GAAUA,EAAMC,MAAMC,QAAQ,KAC3BF,GAAUA,EAAMC,MAAMC,QAAQ,KAG5C+H,EAAoBtI,EAAAA,QAAO0D,GAAExD,WAAA,CAAAC,YAAA,8BAAAC,YAAA,gBAATJ,CAAS,oUAErBK,GAAUA,EAAMC,MAAMC,QAAQ,KACrCF,GAAUA,EAAMC,MAAMC,QAAQ,KAIdF,GAAUA,EAAMC,MAAME,MAAMmC,mBAE/CjC,EAAAA,EAAWK,SAASC,IAWGX,GAAUA,EAAMC,MAAME,MAAM+B,cAInD7B,EAAAA,EAAW8B,SAASxB,GAMpBN,EAAAA,EAAWC,MACUN,GAAUA,EAAMC,MAAMK,KAAKgC,oBAGzBtC,GAAUA,EAAMC,MAAMK,KAAK4B,eAKhDgG,EAA2BvI,EAAAA,QAAOkC,GAAEhC,WAAA,CAAAC,YAAA,qCAAAC,YAAA,gBAATJ,CAAS,2GACrBK,GAAUA,EAAMC,MAAMC,QAAQ,KAkB7CiI,EAAgBxI,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,0BAAAC,YAAA,gBAAVJ,CAAU,mwBACTK,GAAUA,EAAMC,MAAME,MAAM8B,yBACtCjC,GAAUA,EAAMC,MAAME,MAAM+B,eACxBlC,GAAUA,EAAMC,MAAME,MAAMiI,gBAMzC/H,EAAAA,EAAWK,SAASC,IAOFX,GAAUA,EAAMC,MAAME,MAAM+B,eAC3BlC,GAAUA,EAAMC,MAAME,MAAM+B,eAU7BlC,GAAUA,EAAMC,MAAME,MAAM8B,yBAE3BjC,GAAUA,EAAMC,MAAME,MAAM8B,wBAQ/C5B,EAAAA,EAAWK,SAASC,IAInBX,GACDA,EAAMqI,WACNhG,EAAAA,EAAAA,KAAG,0KAkBHhC,EAAAA,EAAWC,MACUN,GAAUA,EAAMC,MAAMK,KAAK2B,yBACrCjC,GAAUA,EAAMC,MAAMK,KAAK4B,eACvBlC,GAAUA,EAAMC,MAAMK,KAAK8H,iBAGxBpI,GAAUA,EAAMC,MAAMK,KAAK4B,eAC1BlC,GAAUA,EAAMC,MAAMK,KAAK4B,eAI5BlC,GAAUA,EAAMC,MAAMK,KAAK2B,yBAE1BjC,GAAUA,EAAMC,MAAMK,KAAK2B,yBAI3CjC,GACDA,EAAMqI,WACNhG,EAAAA,EAAAA,KAAG,2KAoBHiG,EAAgB3I,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,0BAAAC,YAAA,gBAAVJ,CAAU,gRAG5BU,EAAAA,EAAWK,SAASC,IAECX,GAAUA,EAAMC,MAAME,MAAMoI,eACvCvI,GAAUA,EAAMC,MAAME,MAAMM,uBActCJ,EAAAA,EAAWC,MACUN,GAAUA,EAAMC,MAAMK,KAAKiI,eACtCvI,GAAUA,EAAMC,MAAMK,KAAKG,wBAInC+H,EAAgB7I,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,0BAAAC,YAAA,gBAAVJ,CAAU,+BAChBK,GAAUA,EAAMC,MAAM+B,UAAU,KACnChC,GAAUA,EAAMC,MAAMC,QAAQ,KAGrCuI,GAAmB9I,EAAAA,EAAAA,SAAO0H,GAASxH,WAAA,CAAAC,YAAA,6BAAAC,YAAA,gBAAhBJ,CAAgB,wCAErBK,GAAUA,EAAMC,MAAMC,QAAQ,KAG5CwI,GAAsB/I,EAAAA,EAAAA,SAAOa,EAAAA,GAAUX,WAAA,CAAAC,YAAA,gCAAAC,YAAA,gBAAjBJ,CAAiB,qCAE5BK,GAAUA,EAAMC,MAAMC,QAAQ,KAGzCyI,GAAehJ,EAAAA,EAAAA,SAAOiJ,EAAAA,GAAK/I,WAAA,CAAAC,YAAA,yBAAAC,YAAA,gBAAZJ,CAAY,+BACpBK,GAAUA,EAAMC,MAAMC,QAAQ,KAC3BF,GAAUA,EAAMC,MAAM+B,UAAU,KAG1C6G,EAAgClJ,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,0CAAAC,YAAA,gBAAVJ,CAAU,kBAClCK,GAAUA,EAAMC,MAAMC,QAAQ,KAGtC4I,EAAU,GAEVC,GAAyBpJ,EAAAA,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,mCAAAC,YAAA,iBAAVJ,CAAU,8IAEvBK,GAAUA,EAAMC,MAAMC,QAAQ,IAKrC4I,EACCA,GAQNE,GAA4ChI,IAAA,IAAC,SACjDG,EAAQ,SACRkH,EAAQ,KACRY,GACDjI,EAAA,OACCE,EAAAA,EAAAA,MAACgH,EAAwB,CAAA/G,SAAA,EACvBC,EAAAA,EAAAA,KAACkH,EAAa,CAAAnH,SAAE8H,KAChB7H,EAAAA,EAAAA,KAAC+G,EAAa,CAACE,SAAUA,EAASlH,UAChCC,EAAAA,EAAAA,KAACyH,EAA6B,CAAA1H,SAAEA,QAET,EAGhB+H,GAAeA,KAC1B,MACMC,GAAY/H,EAAAA,EAAAA,KAACoG,EAAS,CAAC4B,KADX,KAEZC,GAAgBjI,EAAAA,EAAAA,KAAC0G,EAAa,CAACsB,KAFnB,KAIlB,OACEhI,EAAAA,EAAAA,KAAC4G,EAAwB,CAAA7G,UACvBD,EAAAA,EAAAA,MAAC+G,EAAiB,CAAA9G,SAAA,EAChBD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAOY,KAAME,EAAUhI,SAAA,EAChDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,+CACLC,IAAK,aACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,kCACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,4BAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SAAC,kCAClBC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,mBACdD,EAAAA,EAAAA,MAACwH,EAAmB,CAAAvH,SAAA,CAAC,uFAGnBD,EAAAA,EAAAA,MAACyD,EAAAA,EAAI,CAAAxD,SAAA,EACHC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,oBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,gBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,WACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,qBAIVD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAMY,KAAMI,EAAclI,SAAA,EACnDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,qCACLC,IAAK,SACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,iCACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,iCAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SACd,yCAEHC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,eACdC,EAAAA,EAAAA,KAACsH,EAAmB,CAAAvH,SAAC,oKAKrBD,EAAAA,EAAAA,MAACyD,EAAAA,EAAI,CAAAxD,SAAA,EACHC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,uBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,0BACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,kCACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,iBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,mBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,sCAGRD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAOY,KAAME,EAAUhI,SAAA,EAChDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,wCACLC,IAAK,YACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,2BACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,yBAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SAAC,sCAClBC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,eACdC,EAAAA,EAAAA,KAACsH,EAAmB,CAAAvH,SAAC,uQAOvBD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAOY,KAAME,EAAUhI,SAAA,EAChDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,kCACLC,IAAK,MACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KACE,iEAEFoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,WAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SAAC,uBAClBC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,kBACdC,EAAAA,EAAAA,KAACsH,EAAmB,CAAAvH,SAAC,oTAQvBD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAOY,KAAME,EAAUhI,SAAA,EAChDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,qDACLC,IAAK,yBACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,IACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,8BAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SAAC,eAClBC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,iBACdC,EAAAA,EAAAA,KAACsH,EAAmB,CAAAvH,SAAC,mDAIvBD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAOY,KAAME,EAAUhI,SAAA,EAChDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,sCACLC,IAAK,UACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,0BACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,eAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SAAC,oBAClBC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,kBACdD,EAAAA,EAAAA,MAACwH,EAAmB,CAAAvH,SAAA,CACjB,IAAI,mHAGLD,EAAAA,EAAAA,MAACyD,EAAAA,EAAI,CAAAxD,SAAA,EACHC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,0KAKJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,mRAOJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,4FAOVD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAMY,KAAMI,EAAclI,SAAA,EACnDC,EAAAA,EAAAA,KAAC2H,GAAsB,CAAA5H,UACrBC,EAAAA,EAAAA,KAACC,EAAAA,EAAW,CACVmD,MAAOsE,EACPrE,OAAQqE,EACRvH,IAAK,uCACLC,IAAK,WACLC,YAAa,UAAUC,YAAAC,EAAA,WAG3BP,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,4BACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,2BAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SACd,2CAEHC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,kBACdC,EAAAA,EAAAA,KAACsH,EAAmB,CAAAvH,SAAC,+RAOrBD,EAAAA,EAAAA,MAACyD,EAAAA,EAAI,CAAAxD,SAAA,EACHC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,0BACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,kCACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,iBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,mBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,gBACJC,EAAAA,EAAAA,KAAA,MAAAD,SAAI,uBAGRD,EAAAA,EAAAA,MAAC8H,GAAe,CAACX,UAAU,EAAMY,KAAMI,EAAclI,SAAA,EACnDC,EAAAA,EAAAA,KAACkI,EAAAA,EAAgC,CAC/BrE,aAAc,CACZpC,OAAQwC,EAAAA,EAASxC,OAAO0G,8BACxBpG,SAAUkC,EAAAA,EAASlC,SAASmC,KAC5B9C,MAAO6C,EAAAA,EAAS7C,MAAMgD,MAExB1C,KAAM,IACNoC,OAAQ,SACRC,IAAI,sBAAqBhE,UAEzBC,EAAAA,EAAAA,KAACoH,EAAa,CAAArH,SAAC,sBAEjBC,EAAAA,EAAAA,KAACqH,EAAgB,CAAAtH,SAAC,+BAClBC,EAAAA,EAAAA,KAACuH,EAAY,CAAAxH,SAAC,qBAGO,ECrhBzBqI,IAAkB7J,EAAAA,EAAAA,SAAOC,EAAAA,GAAeC,WAAA,CAAAC,YAAA,0BAAAC,YAAA,gBAAtBJ,CAAsB,oFAGvBK,GAAUA,EAAMC,MAAME,MAAMmC,mBAE/CjC,EAAAA,EAAWC,MACUN,GAAUA,EAAMC,MAAMK,KAAKgC,oBAElD,IAEGmH,GAAU,SAAVA,GAAU,OAAVA,EAAU,oBAAVA,EAAU,kBAAVA,CAAU,EAAVA,IAAU,IAKR,MAAMC,GAAaA,KACxB,MAAM,EAACC,EAAW,EAACC,IAAUC,EAAAA,EAAAA,UAAqBJ,GAAWrE,UAE7D,OACElE,EAAAA,EAAAA,MAACsI,GAAe,CAAArI,SAAA,EACdC,EAAAA,EAAAA,KAACkC,EAAI,CACHE,KAAM,CACJpB,OAAQuH,IAAeF,GAAWrE,SAClC5C,MAAO,cACPC,KAAM,qBACNC,eAAgB2C,EAAAA,EAASxC,OAAOiH,2BAChCnH,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC1C,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B3C,OAAQA,IAAM+G,EAAOH,GAAWrE,WAElC3B,KAAM,CACJrB,OAAQuH,IAAeF,GAAWM,QAClCvH,MAAO,aACPC,KAAM,cACNC,eAAgB2C,EAAAA,EAASxC,OAAOmH,mCAChCrH,iBAAkB0C,EAAAA,EAASlC,SAASmC,KACpC1C,cAAeyC,EAAAA,EAAS7C,MAAMgD,KAC9B3C,OAAQA,IAAM+G,EAAOH,GAAWM,aAGpC7I,EAAAA,EAAAA,MAAA,OAAAC,SAAA,CACGwI,IAAeF,GAAWrE,WAAYhE,EAAAA,EAAAA,KAACiF,EAAQ,IAC/CsD,IAAeF,GAAWM,UAAW3I,EAAAA,EAAAA,KAAC8H,GAAQ,SAEjC,ECtCtB,OAP0ClI,IAAA,IAAC,OAAEC,GAAQD,EAAA,OACnDE,EAAAA,EAAAA,MAAAsF,EAAAA,SAAA,CAAArF,SAAA,EACEC,EAAAA,EAAAA,KAACL,EAAY,CAACE,OAAQA,KACtBG,EAAAA,EAAAA,KAACsI,GAAM,MACN,C,uDCVE,MAAM9J,E,QAAiBD,QAAOkB,IAAGhB,WAAA,CAAAC,YAAA,kCAAAC,YAAA,gBAAVJ,CAAU,wF,yFCEjC,MAAMgE,GAAYhE,EAAAA,EAAAA,SAAOC,EAAAA,GAAeC,WAAA,CAAAC,YAAA,uBAAAC,YAAA,eAAtBJ,CAAsB,oEAC3CU,EAAAA,EAAWK,SAASuJ,GAIpB5J,EAAAA,EAAWK,SAASwJ,GAIpB7J,EAAAA,EAAWK,SAASC,G,oGCVjB,MAAMwJ,GAAgB9H,EAAAA,EAAAA,KAAG,uBAChBrC,GAAUA,EAAMC,MAAM+B,UAAU,IAC5CuF,EAAAA,GAGS7C,EAAW/E,EAAAA,QAAOyK,GAAEvK,WAAA,CAAAC,YAAA,qBAAAC,YAAA,gBAATJ,CAAS,QAC7BwK,E,+ECNG,MAAMxF,EAAOhF,EAAAA,QAAO0D,GAAExD,WAAA,CAAAC,YAAA,aAAAC,YAAA,eAATJ,CAAS,6DACbK,GAAUA,EAAMC,MAAM+B,UAAU,KACpChC,GAAUA,EAAMC,MAAME,MAAMkK,mBACtBrK,GAAUA,EAAMC,MAAMqK,YAEpCjK,EAAAA,EAAWC,MACDN,GAAUA,EAAMC,MAAMK,KAAK+J,kB,8ECNlC,MAAM7J,EAAYb,EAAAA,QAAO4K,EAAC1K,WAAA,CAAAC,YAAA,uBAAAC,YAAA,eAARJ,CAAQ,wEACjBK,GAAUA,EAAMC,MAAM+B,UAAU,KACpChC,GAAUA,EAAMC,MAAME,MAAMkK,mBAC3BrK,GAAUA,EAAMC,MAAMC,QAAQ,KACzBF,GAAUA,EAAMC,MAAMqK,YAEpCjK,EAAAA,EAAWC,MACDN,GAAUA,EAAMC,MAAMK,KAAK+J,kB,+ECPlC,MAAMtI,EAAuBpC,EAAAA,QAAO6K,EAAC3K,WAAA,CAAAC,YAAA,+CAAAC,YAAA,eAARJ,CAAQ,QACxC8K,EAAAA,E,+ECDG,MAAMA,GAAoBpI,EAAAA,EAAAA,KAAG,oHACpBrC,GAAUA,EAAMC,MAAM+B,UAAU,KACpChC,GAAUA,EAAMC,MAAME,MAAMuK,cAEtB1K,GAAUA,EAAMC,MAAMqK,YAEpCjK,EAAAA,EAAWC,MACDN,GAAUA,EAAMC,MAAMK,KAAKoK,cAI3B1K,GAAUA,EAAMC,MAAME,MAAMuK,aAEpCrK,EAAAA,EAAWC,MACDN,GAAUA,EAAMC,MAAMK,KAAKoK,a,+ECdpC,MAAM9B,EAAOjJ,EAAAA,QAAOgL,KAAI9K,WAAA,CAAAC,YAAA,aAAAC,YAAA,eAAXJ,CAAW,+BACnBK,GAAUA,EAAMC,MAAME,MAAMyK,oBAEpCvK,EAAAA,EAAWC,MACDN,GAAUA,EAAMC,MAAMK,KAAKsK,oB,yFCIlC,MAAMtB,EAETtI,IAAA,IAAC,SAAEG,EAAQ,KAAE2B,EAAI,aAAEmC,EAAY,OAAEC,EAAM,IAAEC,GAAKnE,EAAA,OAChDI,EAAAA,EAAAA,KAACW,EAAAA,EAAoB,CACnBe,KAAMA,EACNC,QAASA,MACPG,EAAAA,EAAAA,GAAU+B,EAAa,EAEzBC,OAAQA,EACRC,IAAKA,EAAIhE,SAERA,GACoB,C","sources":["webpack://fabrizioduroni.it/./src/components/design-system/organism/technologies.tsx","webpack://fabrizioduroni.it/./src/components/design-system/molecules/tabs.tsx","webpack://fabrizioduroni.it/./src/components/design-system/molecules/project.tsx","webpack://fabrizioduroni.it/./src/logic/projects.ts","webpack://fabrizioduroni.it/./src/components/design-system/organism/projects.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/heading6.tsx","webpack://fabrizioduroni.it/./node_modules/@styled-icons/boxicons-regular/Briefcase/Briefcase.esm.js","webpack://fabrizioduroni.it/./node_modules/@styled-icons/fa-solid/GraduationCap/GraduationCap.esm.js","webpack://fabrizioduroni.it/./src/components/design-system/organism/timeline.tsx","webpack://fabrizioduroni.it/./src/components/design-system/organism/resume.tsx","webpack://fabrizioduroni.it/./src/components/bottom-index.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/container-fluid.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/container.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/heading3.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/list.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/paragraph.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/standard-external-link.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/standard-link-style.tsx","webpack://fabrizioduroni.it/./src/components/design-system/atoms/time.tsx","webpack://fabrizioduroni.it/./src/components/standard-external-link-with-tracking.tsx"],"sourcesContent":["import { StaticImage } from \"gatsby-plugin-image\";\nimport { Paragraph } from \"../atoms/paragraph\";\nimport styled from \"styled-components\";\nimport { ContainerFluid } from \"../atoms/container-fluid\";\nimport { mediaQuery } from \"../utils-css/media-query\";\nimport { FC } from \"react\";\n\nconst TechnologiesContainer = styled(ContainerFluid)`\n margin: 0;\n display: flex;\n flex-direction: column;\n padding: ${(props) => props.theme.spacing[11]};\n background-color: ${(props) => props.theme.light.primaryColorDark};\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.primaryColorDark};\n }\n`;\n\nconst TechnologyParagraph = styled(Paragraph)`\n text-align: center;\n margin-bottom: ${(props) => props.theme.spacing[7]};\n color: ${(props) => props.theme.light.textAbovePrimaryColor};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.textAbovePrimaryColor};\n }\n\n ${mediaQuery.minWidth.md} {\n padding: 0 ${(props) => props.theme.spacing[12]};\n }\n`;\n\nconst TechnologiesIconsContainer = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n`;\n\nconst TechnologyImageContainer = styled.div`\n width: 80px;\n height: 80px;\n margin: ${(props) => props.theme.spacing[2]};\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport interface TechnologiesProps {\n author: string;\n}\n\nexport const Technologies: FC = ({ author }) => (\n \n \n {`I'm ${author}, a software developer with many years of experience.\n I have a strong knowledge of the following languages: C++, Objective-C, Swift, C, Java, PHP,\n JavaScript, TypeScript, Kotlin.\n I develop mobile app since 2010 and web application since 2005. I'm also passionate about computer graphics.`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import styled, { css } from \"styled-components\";\nimport { StandardExternalLink } from \"../atoms/standard-external-link\";\nimport { trackWith } from \"../../../logic/tracking\";\nimport { FC } from \"react\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\ninterface TabLinkProps {\n active: boolean;\n}\n\nconst TabContainer = styled.li`\n width: 50%;\n`;\n\nconst TabLink = styled(StandardExternalLink)`\n font-size: ${(props) => props.theme.fontSizes[4]};\n display: block;\n background-color: ${(props) => props.theme.light.generalBackgroundLight};\n padding: ${(props) => props.theme.spacing[5]};\n border-radius: 0;\n border-top: ${(props) => props.theme.light.generalBackgroundLight} 1px solid;\n border-bottom: ${(props) => props.theme.light.dividerColor} 1px solid;\n border-left: ${(props) => props.theme.light.dividerColor} 1px solid;\n border-right: ${(props) => props.theme.light.dividerColor} 1px solid;\n text-align: center;\n\n ${mediaQuery.dark} {\n border-top: ${(props) => props.theme.dark.generalBackgroundLight} 1px solid;\n background-color: ${(props) => props.theme.dark.generalBackgroundLight};\n border-bottom: ${(props) => props.theme.dark.dividerColor} 1px solid;\n border-left: ${(props) => props.theme.dark.dividerColor} 1px solid;\n border-right: ${(props) => props.theme.dark.dividerColor} 1px solid;\n }\n\n ${mediaQuery.maxWidth.md} {\n font-size: 16px;\n }\n\n ${(props) =>\n props.active &&\n css`\n background-color: ${(props) => props.theme.light.generalBackground};\n border-right: ${(props) => props.theme.light.generalBackground} 1px solid;\n border-left: ${(props) => props.theme.light.generalBackground} 1px solid;\n border-bottom: ${(props) => props.theme.light.generalBackground} 1px solid;\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackground};\n border-right: ${(props) => props.theme.dark.generalBackground} 1px solid;\n border-left: ${(props) => props.theme.dark.generalBackground} 1px solid;\n border-bottom: ${(props) => props.theme.dark.generalBackground} 1px\n solid;\n }\n `}\n`;\n\ntype TabProps = TabLinkProps & {\n label: string;\n link: string;\n trackingAction: string;\n trackingCategory: string;\n trackingLabel: string;\n action: () => void;\n};\n\nconst Tab: FC = ({\n active,\n label,\n link,\n trackingAction,\n trackingCategory,\n trackingLabel,\n action,\n}) => (\n \n {\n event.preventDefault();\n trackWith({\n action: trackingAction,\n category: trackingCategory,\n label: trackingLabel,\n });\n action();\n }}\n >\n {label}\n \n \n);\n\nconst TabsContainer = styled.ul`\n list-style: none;\n display: flex;\n padding-left: 0;\n margin: 0;\n border: 1px solid transparent;\n`;\n\nexport interface TabsProps {\n tab1: TabProps;\n tab2: TabProps;\n}\n\nexport const Tabs: FC = ({ tab1, tab2 }) => (\n \n \n \n \n);\n","import { FC } from \"react\";\nimport { Heading3 } from \"../atoms/heading3\";\nimport styled from \"styled-components\";\nimport { Container } from \"../atoms/container\";\nimport { CallToActionExternalWithTracking } from \"../../call-to-action-external-with-tracking\";\nimport { mediaQuery } from \"../utils-css/media-query\";\nimport { ProjectCallToAction } from \"../../../logic/projects\";\nimport { Paragraph } from \"../atoms/paragraph\";\nimport { List } from \"../atoms/list\";\nimport { GatsbyImage, IGatsbyImageData } from \"gatsby-plugin-image\";\n\ninterface ProjectContainerProps {\n reverse: boolean;\n}\n\nconst ProjectContainer = styled(Container)`\n display: flex;\n flex-direction: column;\n padding: 0;\n margin: ${(props) => props.theme.spacing[7]} auto;\n\n ${mediaQuery.minWidth.md} {\n flex-direction: ${(props) => (props.reverse ? \"row-reverse\" : \"row\")};\n max-width: 1100px;\n }\n`;\n\nconst ProjectContentContainer = styled.div`\n flex: 50%;\n padding: ${(props) => props.theme.spacing[2]};\n`;\n\nconst ProjectImageContainer = styled(ProjectContentContainer)`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nconst CallToActionContainer = styled.div`\n margin: ${(props) => props.theme.spacing[6]} 0;\n`;\n\nexport type ProjectProps = ProjectContainerProps & {\n name: string;\n image: IGatsbyImageData;\n description: string;\n features: string[];\n callToActions: ProjectCallToAction[];\n};\n\nexport const Project: FC = ({\n reverse,\n name,\n image,\n description,\n features,\n callToActions,\n}) => (\n \n \n \n \n \n {name}\n {description}\n \n {features.map((feature) => (\n
  • {feature}
  • \n ))}\n
    \n \n {callToActions.map((callToAction) => (\n \n {callToAction.label}\n \n ))}\n \n
    \n
    \n);\n","import { tracking } from \"./tracking\";\n\nexport interface ProjectCallToAction {\n label: string;\n link: string;\n trackingAction: string;\n trackingCategory: string;\n trackingLabel: string;\n}\n\nexport interface Project {\n name: string;\n description: string;\n callToActions: ProjectCallToAction[];\n features: string[];\n}\n\nexport const projects: Record = {\n \"spectral-clara-lux-tracer\": {\n name: \"Spectral Clara Lux Tracer\",\n description:\n \"Physically based ray tracer with multiple shading models support andColor Rendering Index (CRI)\" +\n \" evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision\" +\n \" Laboratory.\",\n features: [\n \"Computer graphics\",\n \"Ray-tracing\",\n \"Physically based rendering\",\n \"Color calculation using spectral data\",\n \"Color Rendering index calculation\",\n \"iOS, macOS, Windows\",\n \"Objective-C, C++\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_sclt_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Spectral-Clara-Lux-Tracer\",\n },\n {\n label: \"Thesis\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_sclt_thesis,\n trackingLabel: tracking.label.body,\n link: \"https://www.fabrizioduroni.it/tesi-fabrizio-duroni-770157.pdf\",\n },\n ],\n },\n \"spectral-brdf-explorer\": {\n name: \"Spectral BRDF Explorer\",\n description:\n \"OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.\",\n features: [\n \"Computer graphics\",\n \"OpenGL ES\",\n \"Color calculation using spectral data\",\n \"iOS, Android\",\n \"Objective-C, Java, C++\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_spectral_brdf_explorer_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Spectral-BRDF-Explorer\",\n },\n ],\n },\n id3tageditor: {\n name: \"ID3TagEditor\",\n description:\n \"A Swift library to read and modify ID3 Tag of any mp3 file. Supported \" +\n \"ID3 tag version: 2.2. and 2.3. Listed in the implementations section \" +\n \"of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.\",\n features: [\n \"Multiple id3 tag version supported\",\n \"Strictly adhere to the offical standard\",\n \"No external dependencies\",\n \"100% Swift\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_id3tageditor_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/ID3TagEditor\",\n },\n {\n label: \"Docs\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_id3tageditor_doc,\n trackingLabel: tracking.label.body,\n link: \"https://id3tageditor.fabrizioduroni.it\",\n },\n ],\n },\n \"range-ui-slider\": {\n name: \"RangeUISlider\",\n description:\n \"A highly customizable iOS range selection slider, developed using \" +\n \"autolayout and completely customizable using IBDesignabled and \" +\n \"IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.\",\n features: [\n \"Cocoa Touch\",\n \"SwiftUI\",\n \"Custom UI Component\",\n \"Autolayout\",\n \"IBDesignable\",\n \"IBInspectable\",\n \"iOS\",\n \"Swift\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_rangeuislider_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/RangeUISlider\",\n },\n {\n label: \"Docs\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_rangeuislider_doc,\n trackingLabel: tracking.label.body,\n link: \"https://rangeuislider.fabrizioduroni.it\",\n },\n ],\n },\n tabbaruiaction: {\n name: \"TabBarUIAction\",\n description:\n \"A SwiftUI custom TabBar view with action button for modal content \" +\n \"display. Fully compatible with Mac Catalyst. Available as a standalone \" +\n \"framework, a SwiftPM package and as a Cocoapods pod.\",\n features: [\n \"customizable tab item\",\n \"custom central tab item action to show modal screens\",\n \"supported platform: iOS, iPadOS and macOS\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_tabbaruiaction_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/TabBarUIAction\",\n },\n {\n label: \"Docs\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_tabbaruiaction_doc,\n trackingLabel: tracking.label.body,\n link: \"https://tabbaruiaction.fabrizioduroni.it\",\n },\n ],\n },\n mp3id3tagger: {\n name: \"Mp3ID3Tagger\",\n description:\n \"A macOS application to edit the ID3 tag of your mp3 files. \" +\n \"Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It \" +\n \"will let you modify the information inside the ID3 tag of \" +\n \"you mp3 files.\",\n features: [\n \"100% macOS native app\",\n \"Implemented using Reactive programming (RxCocoa)\",\n ],\n callToActions: [\n {\n label: \"Github\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_mp3id3tagger_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Mp3ID3Tagger\",\n },\n {\n label: \"Download\",\n trackingCategory: tracking.category.home,\n trackingAction: tracking.action.open_mp3id3tagger_github,\n trackingLabel: tracking.label.body,\n link: \"https://github.com/chicio/Mp3ID3Tagger/raw/master/Release/Mp3ID3Tagger.dmg\",\n },\n ],\n },\n};\n","import { Project } from \"../molecules/project\";\nimport { FC } from \"react\";\nimport { projects } from \"../../../logic/projects\";\nimport { graphql, useStaticQuery } from \"gatsby\";\n\nexport const Projects: FC = () => {\n const projectsImages = useStaticQuery(graphql`\n query ProjectsImages {\n allFile(\n filter: {\n relativeDirectory: { eq: \"projects\" }\n extension: { regex: \"/(jpg)|(jpeg)|(png)/\" }\n }\n ) {\n edges {\n node {\n childImageSharp {\n gatsbyImageData(layout: FULL_WIDTH, placeholder: BLURRED)\n }\n name\n }\n }\n }\n }\n `);\n\n return (\n <>\n {Object.keys(projects).map((projectKey, index) => {\n const project = projects[projectKey];\n const projectImage = projectsImages.allFile.edges.find(\n (projectImage) => projectImage.node.name === projectKey,\n )!.node!.childImageSharp!.gatsbyImageData!;\n\n return (\n \n );\n })}\n \n );\n};\n","import styled from \"styled-components\";\nimport { headingStyle } from \"./heading-style\";\n\nexport const Heading6 = styled.h6`\n font-size: ${(props) => props.theme.fontSizes[6]};\n ${headingStyle}\n`;\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\nimport { StyledIconBase } from '@styled-icons/styled-icon';\nexport var Briefcase = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var attrs = {\n \"fill\": \"currentColor\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n };\n return /*#__PURE__*/React.createElement(StyledIconBase, _extends({\n iconAttrs: attrs,\n iconVerticalAlign: \"middle\",\n iconViewBox: \"0 0 24 24\"\n }, props, {\n ref: ref\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 6h-3V4c0-1.103-.897-2-2-2H9c-1.103 0-2 .897-2 2v2H4c-1.103 0-2 .897-2 2v11c0 1.103.897 2 2 2h16c1.103 0 2-.897 2-2V8c0-1.103-.897-2-2-2zm-5-2v2H9V4h6zM8 8h12v3H4V8h4zM4 19v-6h6v2h4v-2h6l.001 6H4z\"\n }));\n});\nBriefcase.displayName = 'Briefcase';\nexport var BriefcaseDimensions = {\n height: 24,\n width: 24\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\nimport { StyledIconBase } from '@styled-icons/styled-icon';\nexport var GraduationCap = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var attrs = {\n \"fill\": \"currentColor\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n };\n return /*#__PURE__*/React.createElement(StyledIconBase, _extends({\n iconAttrs: attrs,\n iconVerticalAlign: \"middle\",\n iconViewBox: \"0 0 640 512\"\n }, props, {\n ref: ref\n }), /*#__PURE__*/React.createElement(\"path\", {\n fill: \"currentColor\",\n d: \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9V320c0 28.4-10.8 57.7-22.3 80.8-6.5 13-13.9 25.8-22.5 37.6-3.2 4.3-4.1 9.9-2.3 15s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7.3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7-3.2-14.2-7.5-28.7-13.5-42v-24.6c0-30.2 10.2-58.7 27.9-81.5 12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5.8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1l280.6-101c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1c-7.6-2.7-15.6-4.1-23.7-4.1zM128 408c0 35.3 86 72 192 72s192-36.7 192-72l-15.3-145.4L354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6l-142.2-51.4L128 408z\"\n }));\n});\nGraduationCap.displayName = 'GraduationCap';\nexport var GraduationCapDimensions = {\n height: 512,\n width: 640\n};","import { StaticImage } from \"gatsby-plugin-image\";\nimport { Paragraph } from \"../atoms/paragraph\";\nimport { List } from \"../atoms/list\";\nimport { FC, ReactElement, ReactNode } from \"react\";\nimport styled, { css } from \"styled-components\";\nimport { Container } from \"../atoms/container\";\nimport { Heading6 } from \"../atoms/heading6\";\nimport { mediaQuery } from \"../utils-css/media-query\";\nimport { StandardExternalLinkWithTracking } from \"../../standard-external-link-with-tracking\";\nimport { Time } from \"../atoms/time\";\nimport { tracking } from \"../../../logic/tracking\";\nimport { Briefcase } from \"@styled-icons/boxicons-regular\";\nimport { GraduationCap } from \"@styled-icons/fa-solid\";\n\nconst TimelineContentContainer = styled(Container)`\n padding: 0;\n margin-top: ${(props) => props.theme.spacing[4]};\n margin-bottom: ${(props) => props.theme.spacing[4]};\n`;\n\nconst TimelineContainer = styled.ul`\n list-style: none;\n padding: ${(props) => props.theme.spacing[4]} 0\n ${(props) => props.theme.spacing[4]};\n position: relative;\n text-align: justify;\n margin: 0;\n background-color: ${(props) => props.theme.light.generalBackground};\n\n ${mediaQuery.minWidth.md} {\n text-align: left;\n\n &:before {\n top: 0;\n bottom: 0;\n position: absolute;\n content: \" \";\n width: 3px;\n left: 50%;\n margin-left: -1.5px;\n background-color: ${(props) => props.theme.light.dividerColor};\n }\n }\n\n ${mediaQuery.maxWidth.md} {\n &:before {\n left: 40px;\n }\n }\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackground};\n\n &:before {\n background-color: ${(props) => props.theme.dark.dividerColor};\n }\n }\n`;\n\nconst TimelineElementContainer = styled.li`\n padding-bottom: ${(props) => props.theme.spacing[4]};\n position: relative;\n\n &:before,\n &:after {\n content: \" \";\n display: table;\n }\n\n &:after {\n clear: both;\n }\n`;\n\ninterface TimelinePanelProps {\n inverted: boolean;\n}\n\nconst TimelinePanel = styled.div`\n background-color: ${(props) => props.theme.light.generalBackgroundLight};\n border: ${(props) => props.theme.light.dividerColor} 1px solid;\n box-shadow: ${(props) => props.theme.light.boxShadowLight} 0 1px 6px;\n width: 100%;\n float: left;\n border-radius: 3px;\n position: relative;\n\n ${mediaQuery.minWidth.md} {\n &:before {\n position: absolute;\n top: 26px;\n right: -15px;\n display: inline-block;\n border-top: 15px solid transparent;\n border-left: ${(props) => props.theme.light.dividerColor} 14px solid;\n border-right: ${(props) => props.theme.light.dividerColor} 0px solid;\n border-bottom: 15px solid transparent;\n content: \" \";\n }\n\n &:after {\n position: absolute;\n top: 27px;\n right: -14px;\n display: inline-block;\n border-left: ${(props) => props.theme.light.generalBackgroundLight} 14px\n solid;\n border-right: ${(props) => props.theme.light.generalBackgroundLight} 0px\n solid;\n border-top: 14px solid transparent;\n border-bottom: 14px solid transparent;\n content: \" \";\n }\n }\n\n ${mediaQuery.minWidth.md} {\n width: 46%;\n }\n\n ${(props) =>\n props.inverted &&\n css`\n float: right;\n\n &:before {\n border-left-width: 0;\n border-right-width: 14px;\n left: -14px;\n right: auto;\n }\n\n &:after {\n border-left-width: 0;\n border-right-width: 14px;\n left: -13px;\n right: auto;\n }\n `};\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackgroundLight};\n border: ${(props) => props.theme.dark.dividerColor} 1px solid;\n box-shadow: ${(props) => props.theme.dark.boxShadowLight} 0 1px 6px;\n\n &:before {\n border-left: ${(props) => props.theme.dark.dividerColor} 14px solid;\n border-right: ${(props) => props.theme.dark.dividerColor} 0px solid;\n }\n\n &:after {\n border-left: ${(props) => props.theme.dark.generalBackgroundLight} 14px\n solid;\n border-right: ${(props) => props.theme.dark.generalBackgroundLight} 0px\n solid;\n }\n\n ${(props) =>\n props.inverted &&\n css`\n float: right;\n\n &:before {\n border-left-width: 0;\n border-right-width: 14px;\n left: -14px;\n right: auto;\n }\n\n &:after {\n border-left-width: 0;\n border-right-width: 14px;\n left: -13px;\n right: auto;\n }\n `};\n }\n`;\n\nconst TimelineBadge = styled.div`\n visibility: hidden;\n\n ${mediaQuery.minWidth.md} {\n visibility: visible;\n background-color: ${(props) => props.theme.light.primaryColor};\n color: ${(props) => props.theme.light.textAbovePrimaryColor};\n width: 40px;\n height: 40px;\n line-height: 40px;\n font-size: 1.4em;\n text-align: center;\n position: absolute;\n top: 20px;\n left: 50%;\n margin-left: -20px;\n z-index: 100;\n border-radius: 50%;\n }\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.primaryColor};\n color: ${(props) => props.theme.dark.textAbovePrimaryColor};\n }\n`;\n\nconst TimelineTitle = styled.div`\n font-size: ${(props) => props.theme.fontSizes[7]};\n margin: ${(props) => props.theme.spacing[0]};\n`;\n\nconst TimelineSubtitle = styled(Heading6)`\n text-align: left;\n margin-bottom: ${(props) => props.theme.spacing[2]};\n`;\n\nconst TimelineDescription = styled(Paragraph)`\n text-align: left;\n margin-top: ${(props) => props.theme.spacing[2]};\n`;\n\nconst TimelineTime = styled(Time)`\n margin: ${(props) => props.theme.spacing[0]};\n font-size: ${(props) => props.theme.fontSizes[3]};\n`;\n\nconst TimelinePanelContentContainer = styled.div`\n padding: ${(props) => props.theme.spacing[2]};\n`;\n\nconst imgSize = 80;\n\nconst TimelineImageContainer = styled.div`\n border: 1px solid gray;\n margin-left: ${(props) => props.theme.spacing[0]};\n margin-right: auto;\n margin-bottom: 15px;\n display: block;\n background-color: #fff;\n width: ${imgSize}px;\n height: ${imgSize}px;\n`;\n\ntype TimelineElementProps = TimelinePanelProps & {\n icon: ReactElement;\n children?: ReactNode;\n};\n\nconst TimelineElement: FC = ({\n children,\n inverted,\n icon,\n}) => (\n \n {icon}\n \n {children}\n \n \n);\n\nexport const Timeline: FC = () => {\n const iconsSize = 20;\n const briefcase = ;\n const graduationCap = ;\n\n return (\n \n \n \n \n \n \n \n Lastminute.com group\n \n Mobile application developer\n February 2017\n \n Designing and implementing iOS and Android apps for the main brands\n of the company:\n \n
  • lastminute.com
  • \n
  • Volagratis
  • \n
  • Rumbo
  • \n
  • Weg.de
  • \n
    \n
    \n
    \n \n \n \n \n \n Milano-Bicocca University\n \n \n {\"Master's degree in Computer Science\"}\n \n July 2016\n \n Thesis: “Spectral Clara Lux Tracer: physically based ray tracer with\n multiple shading models support”. You can find more info about it in\n the project section.\n \n \n
  • Computer graphics
  • \n
  • Software engineering
  • \n
  • Algorithm and Theoretical CS
  • \n
  • IT security
  • \n
  • IT management
  • \n
  • Design and user experience
  • \n
    \n
    \n \n \n \n \n \n Condé Nast Italia\n \n Mobile/Web application developer\n June 2013\n \n Designing and implementing iOS and Android apps for the main brands\n of the company: Vanity Fair, Glamour, Wired, Vogue. I also worked\n with the web team to develop the new version of the official web\n sites for GQ Italia, Glamour, CNLive! and Vogue Italia.\n \n \n \n \n \n \n \n SHI\n \n iOS/Web Developer\n October 2010\n \n Design and development of mobile application on iOS, Android and\n Windows phone platform, for enterprise distribution (ad-hoc\n distribution) or within the various app store. Design and\n development of Web application used as backend for mobile app.\n Design and development of Enterprise Web application.\n \n \n \n \n \n \n \n Bottinelli informatica\n \n Developer\n August 2009\n \n Software development for textile industry.\n \n \n \n \n \n \n \n Avanade\n \n PMO Consultant\n October 2008\n \n {\" \"}\n Assigned on Eurosig integration BA-HVB/Unicredit project, I worked\n with the Accenture Consultant team as a PMO.\n \n
  • \n Tracking creation and evolution of functional specification to\n cover the gaps between ASC, CRE, PAY, MDM and BSS sector of the\n IT systems of Unicredit and HVB bank.\n
  • \n
  • \n Publishing statistics to show the state of art of the functional\n specification produced, the open change request and the state of\n user test. Maintenance of tools created with Microsoft Excel,\n Microsoft Powerpoint and VBA used to generate the above\n mentioned statistics.\n
  • \n
  • \n Maintenance of tools used to manage WBS of the project inside\n Accenture team.\n
  • \n
    \n
    \n
    \n \n \n \n \n \n Insubria University\n \n \n {\"Bachelor's degree in Computer Science\"}\n \n October 2008\n \n Thesis: “Grandi Giardini: implementazione di un portale web con\n funzionalità e-commerce”. A web e-commerce developed for Grandi\n Giardini Italiani s.r.l., a company dealing with the organization of\n events in some of the most beautiful italian gardens (never deployed\n in production).\n \n \n
  • Software engineering
  • \n
  • Algorithm and Theoretical CS
  • \n
  • IT security
  • \n
  • IT management
  • \n
  • Networking
  • \n
  • Programming
  • \n
    \n
    \n \n \n ITCG Romagnosi\n \n High school in Accountant\n July 2005\n \n
    \n
    \n );\n};\n","import { FC, useState } from \"react\";\nimport { tracking } from \"../../../logic/tracking\";\nimport { ContainerFluid } from \"../atoms/container-fluid\";\nimport styled from \"styled-components\";\nimport { Tabs } from \"../molecules/tabs\";\nimport { Projects } from \"./projects\";\nimport { Timeline } from \"./timeline\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nconst ResumeContainer = styled(ContainerFluid)`\n padding-left: 0;\n padding-right: 0;\n background-color: ${(props) => props.theme.light.generalBackground};\n\n ${mediaQuery.dark} {\n background-color: ${(props) => props.theme.dark.generalBackground};\n }\n`;\n\nenum TabContent {\n projects = \"projects\",\n carrier = \"carrier\",\n}\n\nexport const Resume: FC = () => {\n const [currentTab, setTab] = useState(TabContent.projects);\n\n return (\n \n setTab(TabContent.projects),\n }}\n tab2={{\n active: currentTab === TabContent.carrier,\n label: \"Experience\",\n link: \"#experience\",\n trackingAction: tracking.action.open_education_and_experiences_tab,\n trackingCategory: tracking.category.home,\n trackingLabel: tracking.label.body,\n action: () => setTab(TabContent.carrier),\n }}\n />\n
    \n {currentTab === TabContent.projects && }\n {currentTab === TabContent.carrier && }\n
    \n
    \n );\n};\n","import { Technologies } from \"./design-system/organism/technologies\";\nimport { Resume } from \"./design-system/organism/resume\";\nimport { FC } from \"react\";\n\ninterface BottomIndexProps {\n author: string;\n}\n\nconst BottomIndex: FC = ({ author }) => (\n <>\n \n \n \n);\n\nexport default BottomIndex;\n","import styled from \"styled-components\";\n\nexport const ContainerFluid = styled.div`\n width: 100%;\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n`;\n","import styled from \"styled-components\";\nimport { ContainerFluid } from \"./container-fluid\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const Container = styled(ContainerFluid)`\n ${mediaQuery.minWidth.xs} {\n max-width: 540px;\n }\n\n ${mediaQuery.minWidth.sm} {\n max-width: 720px;\n }\n\n ${mediaQuery.minWidth.md} {\n max-width: 960px;\n }\n`;\n","import styled, { css } from \"styled-components\";\nimport { headingStyle } from \"./heading-style\";\n\nexport const heading3Style = css`\n font-size: ${(props) => props.theme.fontSizes[9]};\n ${headingStyle}\n`;\n\nexport const Heading3 = styled.h3`\n ${heading3Style}\n`;\n","import styled from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const List = styled.ul`\n font-size: ${(props) => props.theme.fontSizes[2]};\n color: ${(props) => props.theme.light.primaryTextColor};\n line-height: ${(props) => props.theme.lineHeight};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.primaryTextColor};\n }\n`;\n","import styled from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const Paragraph = styled.p`\n font-size: ${(props) => props.theme.fontSizes[2]};\n color: ${(props) => props.theme.light.primaryTextColor};\n margin: ${(props) => props.theme.spacing[0]};\n line-height: ${(props) => props.theme.lineHeight};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.primaryTextColor};\n }\n`;\n","import styled from \"styled-components\";\nimport { standardLinkStyle } from \"./standard-link-style\";\n\nexport const StandardExternalLink = styled.a`\n ${standardLinkStyle}\n`;\n","import { css } from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const standardLinkStyle = css`\n font-size: ${(props) => props.theme.fontSizes[2]};\n color: ${(props) => props.theme.light.accentColor};\n text-decoration: none;\n line-height: ${(props) => props.theme.lineHeight};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.accentColor};\n }\n\n &:hover {\n color: ${(props) => props.theme.light.accentColor};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.accentColor};\n }\n }\n`;\n","import styled from \"styled-components\";\nimport { mediaQuery } from \"../utils-css/media-query\";\n\nexport const Time = styled.time`\n color: ${(props) => props.theme.light.secondaryTextColor};\n\n ${mediaQuery.dark} {\n color: ${(props) => props.theme.dark.secondaryTextColor};\n }\n`;\n","import { FC, ReactNode } from \"react\";\nimport { TrackingElementProps, trackWith } from \"../logic/tracking\";\nimport { StandardExternalLink } from \"./design-system/atoms/standard-external-link\";\n\ntype StandardExternalLinkWithTrackingProps = TrackingElementProps & {\n href: string;\n target?: string;\n rel?: string;\n children?: ReactNode;\n};\n\nexport const StandardExternalLinkWithTracking: FC<\n StandardExternalLinkWithTrackingProps\n> = ({ children, href, trackingData, target, rel }) => (\n {\n trackWith(trackingData);\n }}\n target={target}\n rel={rel}\n >\n {children}\n \n);\n"],"names":["TechnologiesContainer","styled","ContainerFluid","withConfig","displayName","componentId","props","theme","spacing","light","primaryColorDark","mediaQuery","dark","TechnologyParagraph","Paragraph","textAbovePrimaryColor","minWidth","md","TechnologiesIconsContainer","div","TechnologyImageContainer","Technologies","_ref","author","_jsxs","children","_jsx","StaticImage","objectFit","src","alt","placeholder","__imageData","require","TabContainer","li","TabLink","StandardExternalLink","fontSizes","generalBackgroundLight","dividerColor","maxWidth","active","css","generalBackground","Tab","label","link","trackingAction","trackingCategory","trackingLabel","action","href","onClick","event","preventDefault","trackWith","category","TabsContainer","ul","Tabs","_ref2","tab1","tab2","ProjectContainer","Container","reverse","ProjectContentContainer","ProjectImageContainer","CallToActionContainer","Project","name","image","description","features","callToActions","GatsbyImage","style","width","height","Heading3","List","className","map","feature","callToAction","CallToActionExternalWithTracking","trackingData","target","rel","projects","tracking","home","open_sclt_github","body","open_sclt_thesis","open_spectral_brdf_explorer_github","id3tageditor","open_id3tageditor_github","open_id3tageditor_doc","open_rangeuislider_github","open_rangeuislider_doc","tabbaruiaction","open_tabbaruiaction_github","open_tabbaruiaction_doc","mp3id3tagger","open_mp3id3tagger_github","Projects","projectsImages","useStaticQuery","_Fragment","Object","keys","projectKey","index","project","projectImage","allFile","edges","find","node","childImageSharp","gatsbyImageData","Heading6","h6","headingStyle","Briefcase","ref","iconAttrs","iconVerticalAlign","iconViewBox","d","GraduationCap","fill","TimelineContentContainer","TimelineContainer","TimelineElementContainer","TimelinePanel","boxShadowLight","inverted","TimelineBadge","primaryColor","TimelineTitle","TimelineSubtitle","TimelineDescription","TimelineTime","Time","TimelinePanelContentContainer","imgSize","TimelineImageContainer","TimelineElement","icon","Timeline","briefcase","size","graduationCap","StandardExternalLinkWithTracking","open_experience_and_education","ResumeContainer","TabContent","Resume","currentTab","setTab","useState","open_personal_projects_tab","carrier","open_education_and_experiences_tab","xs","sm","heading3Style","h3","primaryTextColor","lineHeight","p","a","standardLinkStyle","accentColor","time","secondaryTextColor"],"sourceRoot":""} \ No newline at end of file diff --git a/cookie-policy/index.html b/cookie-policy/index.html index 5f1451458..4f6f073d4 100644 --- a/cookie-policy/index.html +++ b/cookie-policy/index.html @@ -241,6 +241,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/index.html b/index.html index 9f60000ea..baca70093 100644 --- a/index.html +++ b/index.html @@ -200,13 +200,13 @@ .cQxjaV{padding-left:0;padding-right:0;background-color:#FBFBFB;}/*!sc*/ @media (prefers-color-scheme: dark){.cQxjaV{background-color:#212221;}}/*!sc*/ data-styled.g95[id="resume__ResumeContainer-sc-18s4otr-0"]{content:"cQxjaV,"}/*!sc*/ -
    Fabrizio Duroni

    Fabrizio Duroni

    Software Developer
    BlogArt
    Github

    I'm Fabrizio Duroni, a software developer with many years of experience. +

    Fabrizio Duroni

    Fabrizio Duroni

    Software Developer
    BlogArt
    Github

    I'm Fabrizio Duroni, a software developer with many years of experience. I have a strong knowledge of the following languages: C++, Objective-C, Swift, C, Java, PHP, JavaScript, TypeScript, Kotlin. - I develop mobile app since 2010 and web application since 2005. I'm also passionate about computer graphics.

    xcode
    swift
    android
    c++
    opengl
    react
    php
    js
    typescript
    Spectral Clara Lux Tracer

    Spectral Clara Lux Tracer

    Physically based ray tracer with multiple shading models support andColor Rendering Index (CRI) evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision Laboratory.

    • Computer graphics
    • Ray-tracing
    • Physically based rendering
    • Color calculation using spectral data
    • Color Rendering index calculation
    • iOS, macOS, Windows
    • Objective-C, C++
    Spectral BRDF Explorer

    Spectral BRDF Explorer

    OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.

    • Computer graphics
    • OpenGL ES
    • Color calculation using spectral data
    • iOS, Android
    • Objective-C, Java, C++
    ID3TagEditor

    ID3TagEditor

    A Swift library to read and modify ID3 Tag of any mp3 file. Supported ID3 tag version: 2.2. and 2.3. Listed in the implementations section of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.

    • Multiple id3 tag version supported
    • Strictly adhere to the offical standard
    • No external dependencies
    • 100% Swift
    RangeUISlider

    RangeUISlider

    A highly customizable iOS range selection slider, developed using autolayout and completely customizable using IBDesignabled and IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.

    • Cocoa Touch
    • SwiftUI
    • Custom UI Component
    • Autolayout
    • IBDesignable
    • IBInspectable
    • iOS
    • Swift
    TabBarUIAction

    TabBarUIAction

    A SwiftUI custom TabBar view with action button for modal content display. Fully compatible with Mac Catalyst. Available as a standalone framework, a SwiftPM package and as a Cocoapods pod.

    • customizable tab item
    • custom central tab item action to show modal screens
    • supported platform: iOS, iPadOS and macOS
    Mp3ID3Tagger

    Mp3ID3Tagger

    A macOS application to edit the ID3 tag of your mp3 files. Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It will let you modify the information inside the ID3 tag of you mp3 files.

    • 100% macOS native app
    • Implemented using Reactive programming (RxCocoa)
    + I develop mobile app since 2010 and web application since 2005. I'm also passionate about computer graphics.

    xcode
    swift
    android
    c++
    opengl
    react
    php
    js
    typescript
    Spectral Clara Lux Tracer

    Spectral Clara Lux Tracer

    Physically based ray tracer with multiple shading models support and Color Rendering Index (CRI) evaluation. Project developed for my master degree thesis at University Milano-Bicocca - Imaging and Vision Laboratory.

    • Computer graphics
    • Ray-tracing
    • Physically based rendering
    • Color calculation using spectral data
    • Color Rendering index calculation
    • iOS, macOS, Windows
    • Objective-C, C++
    Spectral BRDF Explorer

    Spectral BRDF Explorer

    An iOS OpenGL ES application inspired by Walt Animation Disney Studios BRDF Viewer. A simple application that shows some of the most famous lighting model used in computer graphics and that supports color calculation using RGB and spectral data of lights and object surfaces.

    • Computer graphics
    • OpenGL ES
    • Color calculation using spectral data
    • iOS, Android
    • Objective-C, Java, C++
    ID3TagEditor

    ID3TagEditor

    A Swift library to read and modify ID3 Tag of any mp3 file. Supported ID3 tag version: 2.2. and 2.3. Listed in the implementations section of the official ID3 standard website id3.org. It supports the following operating systems: iOS, macOS, tvOS, watchOS, Linux.

    • Multiple id3 tag version supported
    • Strictly adhere to the offical standard
    • No external dependencies
    • Swift SPM and cocoapods support
    • 100% Swift
    RangeUISlider

    RangeUISlider

    A highly customizable iOS range selection slider, developed using autolayout and completely customizable using IBDesignabled and IBInspectable.Compatible with SwiftUI Distributed as a custom framework and with cocoapods.

    • Cocoa Touch
    • SwiftUI
    • Custom UI Component
    • Autolayout
    • IBDesignable
    • IBInspectable
    • iOS
    • Swift
    TabBarUIAction

    TabBarUIAction

    A SwiftUI custom TabBar view with action button for modal content display. Fully compatible with Mac Catalyst. Available as a standalone framework, a SwiftPM package and as a Cocoapods pod.

    • customizable tab item
    • custom central tab item action to show modal screens
    • supported platform: iOS, iPadOS and macOS
    Mp3ID3Tagger

    Mp3ID3Tagger

    A macOS application to edit the ID3 tag of your mp3 files. Mp3ID3Tagger supports the following ID3 tag versions: 2.2. and 2.3. It will let you modify the information inside the ID3 tag of you mp3 files.

    • 100% macOS native app
    • Implemented using Reactive programming (RxCocoa)
    - \ No newline at end of file + \ No newline at end of file diff --git a/offline-plugin-app-shell-fallback/index.html b/offline-plugin-app-shell-fallback/index.html index 22372b59d..a919be9fa 100644 --- a/offline-plugin-app-shell-fallback/index.html +++ b/offline-plugin-app-shell-fallback/index.html @@ -12,6 +12,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index 40c5c8231..ed645b735 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"5c1b09513b6b22303395"} +{"webpackCompilationHash":"9310a1d3784d397ad4d1"} diff --git a/page-data/sq/d/2617699820.json b/page-data/sq/d/2617699820.json index 5e7813b1b..5e847ce2c 100644 --- a/page-data/sq/d/2617699820.json +++ b/page-data/sq/d/2617699820.json @@ -1 +1 @@ -{"data":{"allFile":{"edges":[{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMCBAX/xAAXAQEAAwAAAAAAAAAAAAAAAAADAAEE/9oADAMBAAIQAxAAAAHG7d5bfDWG9QABU//EABsQAAICAwEAAAAAAAAAAAAAAAIRAQMAEiAz/9oACAEBAAEFAgDciqQrKfSXILj/xAAZEQACAwEAAAAAAAAAAAAAAAABAgADEBL/2gAIAQMBAT8Be0hp1v8A/8QAGREAAQUAAAAAAAAAAAAAAAAAAQACEBES/9oACAECAQE/AWmwtz//xAAZEAACAwEAAAAAAAAAAAAAAAAAEQEQMSD/2gAIAQEABj8CQ3UE7nP/xAAaEAEBAAMBAQAAAAAAAAAAAAABEQAhMRAg/9oACAEBAAE/IZFzHI0JeTwY2+PMaLO2n5f/2gAMAwEAAgADAAAAEHTnQ//EABYRAQEBAAAAAAAAAAAAAAAAAAEgIf/aAAgBAwEBPxAODkf/xAAWEQEBAQAAAAAAAAAAAAAAAAAQEQH/2gAIAQIBAT8Qwoaf/8QAHxAAAgIBBAMAAAAAAAAAAAAAAREAMSEQQVFxYYGR/9oACAEBAAE/EC2iCWnQdRuiELMFY5560JynkUYIwCNijOsU9n7EJ//Z"},"images":{"fallback":{"src":"/static/9d95a54a25f3b0b7d31abb0ab3adc126/be5ed/id3tageditor.jpg","srcSet":"/static/9d95a54a25f3b0b7d31abb0ab3adc126/be5ed/id3tageditor.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/9d95a54a25f3b0b7d31abb0ab3adc126/5f169/id3tageditor.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"id3tageditor"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMFBv/EABcBAAMBAAAAAAAAAAAAAAAAAAACBAH/2gAMAwEAAhADEAAAAc69NGifn1jFBqAH/8QAGxAAAwACAwAAAAAAAAAAAAAAAQIDABESICH/2gAIAQEAAQUCSZctDzWQIU1pLj0//8QAGBEAAgMAAAAAAAAAAAAAAAAAACEBEBH/2gAIAQMBAT8Bcs2//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHBAAAQMFAAAAAAAAAAAAAAAAABEhIgECECAx/9oACAEBAAY/AkI3LiXBnrr/AP/EAB0QAQACAQUBAAAAAAAAAAAAAAEAESEQIDFBUZH/2gAIAQEAAT8hqbHrKWgzrQvpanKcHyJbez//2gAMAwEAAgADAAAAEPw3Qf/EABcRAAMBAAAAAAAAAAAAAAAAAAERICH/2gAIAQMBAT8QWAx//8QAFxEBAQEBAAAAAAAAAAAAAAAAAREAEP/aAAgBAgEBPxBUZNO//8QAGhABAQEBAQEBAAAAAAAAAAAAAREAMWFxEP/aAAgBAQABPxChQBU4GiINYjPPwduGIFyqC8EHv7w81SOt0M16r9dDf//Z"},"images":{"fallback":{"src":"/static/e8f06f8f7514db7d70a327e633db9d54/be5ed/mp3id3tagger.jpg","srcSet":"/static/e8f06f8f7514db7d70a327e633db9d54/be5ed/mp3id3tagger.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/e8f06f8f7514db7d70a327e633db9d54/5f169/mp3id3tagger.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"mp3id3tagger"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACX0lEQVR42rWU22/SYBTAG/in9uArvACR8aBjD8KY8kYIukLKZe1c8Pbi0xYz4wOJLjMxUUMWYwzRiGEGsA33S1ra0GRRJ7jgBqVXT5kSYrg8efLl9Gtzft+59JwPKf+VUqlUr9dTqVQsFotMSDQawTAsHo9ns9lqtQpmYwQZ7wqFAsuyVqsVQRCj0YhMiMFgAB0KhcAAzKbAIHCwxWIxmUx2u93hcNjtl2Et25fhdenSks/nYximWCxOgYHM5/PBYFAbi6orRVFAszyHE3ij0ZgeNsC5XA5FJ+CRKKp+Bs/zEPZcOJvbQFH5WBjQvT7bE5gzgfkl0F2tLbIUHY1F58FQT3QD7TxpHcXf7BNvE1uNp5tkhUgwD/Plnc9bd2436jPgSqVCkiT8FUVUpb4k9iVZUGANB6KmaBzbxvHZOQNMURTA/+SsjnJut3W42WzOhL+QJB6LPCtKe+/Y3RR3LyM+OBL3Usyj918Tn/i723h9jmeAiVhkJyfiB6XNA+rmYe/W4Smxn8Vfsrsf+PvbeO1/hU1SVDiMibLeGJKsDiVNEOX++ZneJFybmF+wUbXDg4GQyXJlKtnrvsp8fPz89Qu+06ebNEEQC+AwhkmS3PnRO+1+Hwrdbyf8cedEkrVWi10AX+SsN7OqZ6qo8NRURc+Z47hFOYPncBhMf/a1c/FPwQRBuOjteU0CX2u1GkziysrVK6tu5+q1Nc+a2+12Op0ul8tms/n9fpqmp48kfIVZN5vN4+mHK2G8AR0IBCD46ZcBeIaoksmk1+tdX78OcmMksPF4POA2nU5DaJNh/wYwSIAqP1n4agAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/81a34ff161983f65674e4342282503f1/82c11/range-ui-slider.png","srcSet":"/static/81a34ff161983f65674e4342282503f1/82c11/range-ui-slider.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/81a34ff161983f65674e4342282503f1/5f169/range-ui-slider.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"range-ui-slider"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAEDBAIF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHyOd8xeZrJbcY6yB//xAAcEAACAgIDAAAAAAAAAAAAAAAAAQIQAxESIUL/2gAIAQEAAQUCapdHlQ5iwNEa2f/EABcRAAMBAAAAAAAAAAAAAAAAAAABEhD/2gAIAQMBAT8Bkl7/AP/EABcRAAMBAAAAAAAAAAAAAAAAAAABEhD/2gAIAQIBAT8Bopb/AP/EABsQAAEFAQEAAAAAAAAAAAAAAAEAEBEhMQJB/9oACAEBAAY/ApexQUgAcnx8WL//xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhMXFR/9oACAEBAAE/IfojzWBON3rkUpuG7A0ysctKSlvyPNLllczwn//aAAwDAQACAAMAAAAQSAe8/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAEQEWH/2gAIAQMBAT8QVjMUf//EABcRAQEBAQAAAAAAAAAAAAAAAAEAEGH/2gAIAQIBAT8QRd5z/8QAHRABAAICAwEBAAAAAAAAAAAAAQARIUExUXHR8P/aAAgBAQABPxBQpe0U6XmLZDcFlnIyp6ixOoNcgwlPktsTmnmnMwWIBl8XuXOjLeoDYHy/s/Rfs//Z"},"images":{"fallback":{"src":"/static/d7f8675c8ec0de4462207b8d09640ca2/8a9e3/ray-tracing.jpg","srcSet":"/static/d7f8675c8ec0de4462207b8d09640ca2/8a9e3/ray-tracing.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/d7f8675c8ec0de4462207b8d09640ca2/99d63/ray-tracing.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.002}},"name":"ray-tracing"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMEAQX/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgT/2gAMAwEAAhADEAAAAab8G+U8pweS9xdERJ//xAAcEAACAQUBAAAAAAAAAAAAAAABAhEAAwQSIRP/2gAIAQEAAQUCsLtT2+Edx31HrIJ7EBUAp0BP/8QAFxEAAwEAAAAAAAAAAAAAAAAAAQMQMv/aAAgBAwEBPwFmoZ//xAAVEQEBAAAAAAAAAAAAAAAAAAABIP/aAAgBAgEBPwEj/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAEQERIhQZH/2gAIAQEABj8COeQ6VijFCe4//8QAHBABAAMAAgMAAAAAAAAAAAAAAQARITFRQXHB/9oACAEBAAE/IWxmdxH5RfqIuxkKxKWbIASodXzNRSdstvHqf//aAAwDAQACAAMAAAAQ0BBA/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAwEBPxCKho9Y0qf/xAAXEQEBAQEAAAAAAAAAAAAAAAAAASEx/9oACAECAQE/EOGos1//xAAdEAACAgIDAQAAAAAAAAAAAAABEQAhMUFRcYGx/9oACAEBAAE/EHwEgqRy2CvAJcZrUVcDRrRglg2nxnyP7j9gvgQQse4E0WwQhUmbIJCf/9k="},"images":{"fallback":{"src":"/static/bae1c10627e070721e526a5c21453ccf/be5ed/spectral-clara-lux-tracer.jpg","srcSet":"/static/bae1c10627e070721e526a5c21453ccf/be5ed/spectral-clara-lux-tracer.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/bae1c10627e070721e526a5c21453ccf/5f169/spectral-clara-lux-tracer.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"spectral-clara-lux-tracer"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjElEQVR42sVUy07bQBR1HiRKWQJhUQmpEJAMJJbjJMbxI+OJ7SSOnbqNoQLnVdRFv6Bd9JNiIRXIUyVpEEqhhbbwRb0J0KqLLtouOLqyzrXPmXtndMfEl/8A8dDmz3+JX2ZILi8vr/6MrxB3AHIF4ouLi4kZ2M3NzXj86ePo9GeMTu/IEPhoNBiOPpwMTgYQw8FgOB6Pr6+vwUicn58bhrkaiZi6YhmKVVSe6tjMY6uAbUOxTcUy83ZJtXRc0jEIChpaXn7iOA50RBwcHPh8vkBgxtTxs5JW0rNGAes5Wc/LoN6xtHpl1ynnK3auYudrL4plE3s9nvn5+X6/T7iuOwMIBJJpkZMQy4sJXmDSPEZCTpZECdnb25wgbgnSligJMk6lea/Xu7Cw0Ov1CLfZDAaDgWAwSic2mSRJxdnNmBRLWOz6Nks+14o7ts2maFniRY5nuDTFJAmPZ2ruE81mc3Z2Nhh6tEJuMhSjC6hOxcsR0hFTuWjk9V7t3Zu3iSy9p+Iq1qh4MkJGfT7v4mJ4Wtl1oXIoFCoJqJZRGkgFUUPVG1ysSNOvcmZZEFRDasjaHo/oWHxplSQI4r5t1/XDlv0zuzzaV3VHyjq8XM2oFRHVxAmpwnJIqWaU/Ww+RScfr6yBORwO3x2Y3++HbcTWKYfL1EWlLim1yVOt8riaRvWM2kBaTVJe8piPMuGlZTDDaU8qn52dcRwHydpGlI/FDREZWMmxfDbGaAnWxIqBs2o8iTcoXZCEtLBGbszNzRUKhcmEwcjBeEIPvW6v3e22up1WuwVodzudfq/Vbh9D0mkDf398dHh0CEIQ344zcTvlsMS3Kb5DTDFJvt6nt5/u34P4t4vx77fqYX4GPwAanJdV332WEgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/3ba02b28ca701e835cb54dd4da20b795/82c11/spectral-brdf-explorer.png","srcSet":"/static/3ba02b28ca701e835cb54dd4da20b795/82c11/spectral-brdf-explorer.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/3ba02b28ca701e835cb54dd4da20b795/5f169/spectral-brdf-explorer.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"spectral-brdf-explorer"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB50lEQVR42q3MT0iTcRzH8d+hW7eOXbvqrX8gJoFCoVEntW7bNIzZco6VOq3m1M3pRhuhWIbaIle0NvEPmWRr4TPPueahQ3UJYxhlQULEu+d5tmc8jFESz+HF9/v7fn+fr8j9AiOJD7u/MZJ4s7NL0feCf71LZ7qdSOa+YSQR+/gJI4mxTJa/GdcZ2wPhWU+jN6BISwVp3JJU1C/lZ9resy5RmhddyRfoOV+tYk+9pFNmTyXpW0txY+01N2W9ct9Z2CmUv6V5cXl5HtWzeaxydS0+ZTQRxR+XxWZ5kFxh6vkC0ytL3F9dZmTuMf7EIwLy3rUYlzML6G8I81wURUtilgtLT4gEvPzosJFzdPB10M12cIStiy1stbWyfSvAly4nn9vb+Ol0MBP0yZmYmtXuiKboPRTnH05yLhEhbLXxrvIEG0fqyFbVkznVxGZrO1mLlbenm8lUVLNxuJb3R+sI2R2cjUfUrHZHNEyH0NTPhGkMezF7XJgGejEp1d2NebRfZXL35OeDfVjk2njbp2YapkJF4uT4EHo1Ez6qJ4cL/Hl3fHna+65f3ddMeCnNi2PBHkodD3TnBXVV63XKZUXlkA1Nha7fi3L/xaHrFowkDl5t5r9cKz8XB66cwUhi/6VajCT2Waow0h9zWDvMlZmTSAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/cd3c8193443ccce876863682a39a38e0/82c11/tabbaruiaction.png","srcSet":"/static/cd3c8193443ccce876863682a39a38e0/82c11/tabbaruiaction.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/cd3c8193443ccce876863682a39a38e0/5f169/tabbaruiaction.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"tabbaruiaction"}}]}}} \ No newline at end of file +{"data":{"allFile":{"edges":[{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMCBAX/xAAXAQEAAwAAAAAAAAAAAAAAAAADAAEE/9oADAMBAAIQAxAAAAHG7d5bfDWG9QABU//EABsQAAICAwEAAAAAAAAAAAAAAAIRAQMAEiAz/9oACAEBAAEFAgDciqQrKfSXILj/xAAZEQACAwEAAAAAAAAAAAAAAAABAgADEBL/2gAIAQMBAT8Be0hp1v8A/8QAGREAAQUAAAAAAAAAAAAAAAAAAQACEBES/9oACAECAQE/AWmwtz//xAAZEAACAwEAAAAAAAAAAAAAAAAAEQEQMSD/2gAIAQEABj8CQ3UE7nP/xAAaEAEBAAMBAQAAAAAAAAAAAAABEQAhMRAg/9oACAEBAAE/IZFzHI0JeTwY2+PMaLO2n5f/2gAMAwEAAgADAAAAEHTnQ//EABYRAQEBAAAAAAAAAAAAAAAAAAEgIf/aAAgBAwEBPxAODkf/xAAWEQEBAQAAAAAAAAAAAAAAAAAQEQH/2gAIAQIBAT8Qwoaf/8QAHxAAAgIBBAMAAAAAAAAAAAAAAREAMSEQQVFxYYGR/9oACAEBAAE/EC2iCWnQdRuiELMFY5560JynkUYIwCNijOsU9n7EJ//Z"},"images":{"fallback":{"src":"/static/9d95a54a25f3b0b7d31abb0ab3adc126/be5ed/id3tageditor.jpg","srcSet":"/static/9d95a54a25f3b0b7d31abb0ab3adc126/be5ed/id3tageditor.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/9d95a54a25f3b0b7d31abb0ab3adc126/5f169/id3tageditor.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"id3tageditor"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACX0lEQVR42rWU22/SYBTAG/in9uArvACR8aBjD8KY8kYIukLKZe1c8Pbi0xYz4wOJLjMxUUMWYwzRiGEGsA33S1ra0GRRJ7jgBqVXT5kSYrg8efLl9Gtzft+59JwPKf+VUqlUr9dTqVQsFotMSDQawTAsHo9ns9lqtQpmYwQZ7wqFAsuyVqsVQRCj0YhMiMFgAB0KhcAAzKbAIHCwxWIxmUx2u93hcNjtl2Et25fhdenSks/nYximWCxOgYHM5/PBYFAbi6orRVFAszyHE3ij0ZgeNsC5XA5FJ+CRKKp+Bs/zEPZcOJvbQFH5WBjQvT7bE5gzgfkl0F2tLbIUHY1F58FQT3QD7TxpHcXf7BNvE1uNp5tkhUgwD/Plnc9bd2436jPgSqVCkiT8FUVUpb4k9iVZUGANB6KmaBzbxvHZOQNMURTA/+SsjnJut3W42WzOhL+QJB6LPCtKe+/Y3RR3LyM+OBL3Usyj918Tn/i723h9jmeAiVhkJyfiB6XNA+rmYe/W4Smxn8Vfsrsf+PvbeO1/hU1SVDiMibLeGJKsDiVNEOX++ZneJFybmF+wUbXDg4GQyXJlKtnrvsp8fPz89Qu+06ebNEEQC+AwhkmS3PnRO+1+Hwrdbyf8cedEkrVWi10AX+SsN7OqZ6qo8NRURc+Z47hFOYPncBhMf/a1c/FPwQRBuOjteU0CX2u1GkziysrVK6tu5+q1Nc+a2+12Op0ul8tms/n9fpqmp48kfIVZN5vN4+mHK2G8AR0IBCD46ZcBeIaoksmk1+tdX78OcmMksPF4POA2nU5DaJNh/wYwSIAqP1n4agAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/81a34ff161983f65674e4342282503f1/82c11/range-ui-slider.png","srcSet":"/static/81a34ff161983f65674e4342282503f1/82c11/range-ui-slider.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/81a34ff161983f65674e4342282503f1/5f169/range-ui-slider.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"range-ui-slider"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMFBv/EABcBAAMBAAAAAAAAAAAAAAAAAAACBAH/2gAMAwEAAhADEAAAAc69NGifn1jFBqAH/8QAGxAAAwACAwAAAAAAAAAAAAAAAQIDABESICH/2gAIAQEAAQUCSZctDzWQIU1pLj0//8QAGBEAAgMAAAAAAAAAAAAAAAAAACEBEBH/2gAIAQMBAT8Bcs2//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHBAAAQMFAAAAAAAAAAAAAAAAABEhIgECECAx/9oACAEBAAY/AkI3LiXBnrr/AP/EAB0QAQACAQUBAAAAAAAAAAAAAAEAESEQIDFBUZH/2gAIAQEAAT8hqbHrKWgzrQvpanKcHyJbez//2gAMAwEAAgADAAAAEPw3Qf/EABcRAAMBAAAAAAAAAAAAAAAAAAERICH/2gAIAQMBAT8QWAx//8QAFxEBAQEBAAAAAAAAAAAAAAAAAREAEP/aAAgBAgEBPxBUZNO//8QAGhABAQEBAQEBAAAAAAAAAAAAAREAMWFxEP/aAAgBAQABPxChQBU4GiINYjPPwduGIFyqC8EHv7w81SOt0M16r9dDf//Z"},"images":{"fallback":{"src":"/static/e8f06f8f7514db7d70a327e633db9d54/be5ed/mp3id3tagger.jpg","srcSet":"/static/e8f06f8f7514db7d70a327e633db9d54/be5ed/mp3id3tagger.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/e8f06f8f7514db7d70a327e633db9d54/5f169/mp3id3tagger.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"mp3id3tagger"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAEDBAIF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHyOd8xeZrJbcY6yB//xAAcEAACAgIDAAAAAAAAAAAAAAAAAQIQAxESIUL/2gAIAQEAAQUCapdHlQ5iwNEa2f/EABcRAAMBAAAAAAAAAAAAAAAAAAABEhD/2gAIAQMBAT8Bkl7/AP/EABcRAAMBAAAAAAAAAAAAAAAAAAABEhD/2gAIAQIBAT8Bopb/AP/EABsQAAEFAQEAAAAAAAAAAAAAAAEAEBEhMQJB/9oACAEBAAY/ApexQUgAcnx8WL//xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhMXFR/9oACAEBAAE/IfojzWBON3rkUpuG7A0ysctKSlvyPNLllczwn//aAAwDAQACAAMAAAAQSAe8/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAEQEWH/2gAIAQMBAT8QVjMUf//EABcRAQEBAQAAAAAAAAAAAAAAAAEAEGH/2gAIAQIBAT8QRd5z/8QAHRABAAICAwEBAAAAAAAAAAAAAQARIUExUXHR8P/aAAgBAQABPxBQpe0U6XmLZDcFlnIyp6ixOoNcgwlPktsTmnmnMwWIBl8XuXOjLeoDYHy/s/Rfs//Z"},"images":{"fallback":{"src":"/static/d7f8675c8ec0de4462207b8d09640ca2/8a9e3/ray-tracing.jpg","srcSet":"/static/d7f8675c8ec0de4462207b8d09640ca2/8a9e3/ray-tracing.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/d7f8675c8ec0de4462207b8d09640ca2/99d63/ray-tracing.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.002}},"name":"ray-tracing"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMEAQX/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgT/2gAMAwEAAhADEAAAAab8G+U8pweS9xdERJ//xAAcEAACAQUBAAAAAAAAAAAAAAABAhEAAwQSIRP/2gAIAQEAAQUCsLtT2+Edx31HrIJ7EBUAp0BP/8QAFxEAAwEAAAAAAAAAAAAAAAAAAQMQMv/aAAgBAwEBPwFmoZ//xAAVEQEBAAAAAAAAAAAAAAAAAAABIP/aAAgBAgEBPwEj/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAEQERIhQZH/2gAIAQEABj8COeQ6VijFCe4//8QAHBABAAMAAgMAAAAAAAAAAAAAAQARITFRQXHB/9oACAEBAAE/IWxmdxH5RfqIuxkKxKWbIASodXzNRSdstvHqf//aAAwDAQACAAMAAAAQ0BBA/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERIf/aAAgBAwEBPxCKho9Y0qf/xAAXEQEBAQEAAAAAAAAAAAAAAAAAASEx/9oACAECAQE/EOGos1//xAAdEAACAgIDAQAAAAAAAAAAAAABEQAhMUFRcYGx/9oACAEBAAE/EHwEgqRy2CvAJcZrUVcDRrRglg2nxnyP7j9gvgQQse4E0WwQhUmbIJCf/9k="},"images":{"fallback":{"src":"/static/bae1c10627e070721e526a5c21453ccf/be5ed/spectral-clara-lux-tracer.jpg","srcSet":"/static/bae1c10627e070721e526a5c21453ccf/be5ed/spectral-clara-lux-tracer.jpg 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/bae1c10627e070721e526a5c21453ccf/5f169/spectral-clara-lux-tracer.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"spectral-clara-lux-tracer"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjElEQVR42sVUy07bQBR1HiRKWQJhUQmpEJAMJJbjJMbxI+OJ7SSOnbqNoQLnVdRFv6Bd9JNiIRXIUyVpEEqhhbbwRb0J0KqLLtouOLqyzrXPmXtndMfEl/8A8dDmz3+JX2ZILi8vr/6MrxB3AHIF4ouLi4kZ2M3NzXj86ePo9GeMTu/IEPhoNBiOPpwMTgYQw8FgOB6Pr6+vwUicn58bhrkaiZi6YhmKVVSe6tjMY6uAbUOxTcUy83ZJtXRc0jEIChpaXn7iOA50RBwcHPh8vkBgxtTxs5JW0rNGAes5Wc/LoN6xtHpl1ynnK3auYudrL4plE3s9nvn5+X6/T7iuOwMIBJJpkZMQy4sJXmDSPEZCTpZECdnb25wgbgnSligJMk6lea/Xu7Cw0Ov1CLfZDAaDgWAwSic2mSRJxdnNmBRLWOz6Nks+14o7ts2maFniRY5nuDTFJAmPZ2ruE81mc3Z2Nhh6tEJuMhSjC6hOxcsR0hFTuWjk9V7t3Zu3iSy9p+Iq1qh4MkJGfT7v4mJ4Wtl1oXIoFCoJqJZRGkgFUUPVG1ysSNOvcmZZEFRDasjaHo/oWHxplSQI4r5t1/XDlv0zuzzaV3VHyjq8XM2oFRHVxAmpwnJIqWaU/Ww+RScfr6yBORwO3x2Y3++HbcTWKYfL1EWlLim1yVOt8riaRvWM2kBaTVJe8piPMuGlZTDDaU8qn52dcRwHydpGlI/FDREZWMmxfDbGaAnWxIqBs2o8iTcoXZCEtLBGbszNzRUKhcmEwcjBeEIPvW6v3e22up1WuwVodzudfq/Vbh9D0mkDf398dHh0CEIQ344zcTvlsMS3Kb5DTDFJvt6nt5/u34P4t4vx77fqYX4GPwAanJdV332WEgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/3ba02b28ca701e835cb54dd4da20b795/82c11/spectral-brdf-explorer.png","srcSet":"/static/3ba02b28ca701e835cb54dd4da20b795/82c11/spectral-brdf-explorer.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/3ba02b28ca701e835cb54dd4da20b795/5f169/spectral-brdf-explorer.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"spectral-brdf-explorer"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB50lEQVR42q3MT0iTcRzH8d+hW7eOXbvqrX8gJoFCoVEntW7bNIzZco6VOq3m1M3pRhuhWIbaIle0NvEPmWRr4TPPueahQ3UJYxhlQULEu+d5tmc8jFESz+HF9/v7fn+fr8j9AiOJD7u/MZJ4s7NL0feCf71LZ7qdSOa+YSQR+/gJI4mxTJa/GdcZ2wPhWU+jN6BISwVp3JJU1C/lZ9resy5RmhddyRfoOV+tYk+9pFNmTyXpW0txY+01N2W9ct9Z2CmUv6V5cXl5HtWzeaxydS0+ZTQRxR+XxWZ5kFxh6vkC0ytL3F9dZmTuMf7EIwLy3rUYlzML6G8I81wURUtilgtLT4gEvPzosJFzdPB10M12cIStiy1stbWyfSvAly4nn9vb+Ol0MBP0yZmYmtXuiKboPRTnH05yLhEhbLXxrvIEG0fqyFbVkznVxGZrO1mLlbenm8lUVLNxuJb3R+sI2R2cjUfUrHZHNEyH0NTPhGkMezF7XJgGejEp1d2NebRfZXL35OeDfVjk2njbp2YapkJF4uT4EHo1Ez6qJ4cL/Hl3fHna+65f3ddMeCnNi2PBHkodD3TnBXVV63XKZUXlkA1Nha7fi3L/xaHrFowkDl5t5r9cKz8XB66cwUhi/6VajCT2Waow0h9zWDvMlZmTSAAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/cd3c8193443ccce876863682a39a38e0/82c11/tabbaruiaction.png","srcSet":"/static/cd3c8193443ccce876863682a39a38e0/82c11/tabbaruiaction.png 500w","sizes":"100vw"},"sources":[{"srcSet":"/static/cd3c8193443ccce876863682a39a38e0/5f169/tabbaruiaction.webp 500w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"tabbaruiaction"}}]}}} \ No newline at end of file diff --git a/page-data/sq/d/379746230.json b/page-data/sq/d/379746230.json index fc1905612..402f3e693 100644 --- a/page-data/sq/d/379746230.json +++ b/page-data/sq/d/379746230.json @@ -1 +1 @@ -{"data":{"allFile":{"edges":[{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQFA//EABUBAQEAAAAAAAAAAAAAAAAAAAEA/9oADAMBAAIQAxAAAAGifQ51mLBd6wcQJ//EABoQAAIDAQEAAAAAAAAAAAAAAAECAAMhEjH/2gAIAQEAAQUCCRqgrNVogXqFtr2BQin3/8QAFhEBAQEAAAAAAAAAAAAAAAAAEAER/9oACAEDAQE/AdKf/8QAFxEBAAMAAAAAAAAAAAAAAAAAEAERQf/aAAgBAgEBPwGpNP/EABoQAQACAwEAAAAAAAAAAAAAAAABIRARErH/2gAIAQEABj8CRz7naVqS/8QAGxABAAMBAAMAAAAAAAAAAAAAAQAhMREQYYH/2gAIAQEAAT8h6EuNxpLd8DAErU2k1gBJjMPiKb0V2JW9z//aAAwDAQACAAMAAAAQF+98/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EAA7AYT/xAAYEQEBAQEBAAAAAAAAAAAAAAABABExIf/aAAgBAgEBPxDbEuQvie3/xAAcEAEBAAMBAAMAAAAAAAAAAAABEQAhMUFhceH/2gAIAQEAAT8QOM6ZfwqlfZlHrIoRfcJqEEA4PfzCKOgeawFxd+ufOAlCVLDHc7Xn/9k="},"images":{"fallback":{"src":"/static/39a1d40bce1da5216577131c48d7fa27/e07e1/alessandro-romano.jpg","srcSet":"/static/39a1d40bce1da5216577131c48d7fa27/e07e1/alessandro-romano.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/39a1d40bce1da5216577131c48d7fa27/d8057/alessandro-romano.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"alessandro-romano"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAEDBP/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/aAAwDAQACEAMQAAABmvXmKuQ035SUCP8A/8QAHRAAAgEEAwAAAAAAAAAAAAAAAQISAAMhIxExMv/aAAgBAQABBQK68UR25lUMAbTgt2h3XfX/xAAWEQEBAQAAAAAAAAAAAAAAAAAQARH/2gAIAQMBAT8Bwh//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAABAwUAAAAAAAAAAAAAAAAQAAEhAhEiMXH/2gAIAQEABj8ChZV3Ermy4//EABsQAAMAAwEBAAAAAAAAAAAAAAABESExcWGx/9oACAEBAAE/IXe7GyGkJuQ7FefiLReBMJRoXT8Pmf/aAAwDAQACAAMAAAAQm+AD/8QAFxEBAQEBAAAAAAAAAAAAAAAAARARMf/aAAgBAwEBPxAGM4Z//8QAFxEBAQEBAAAAAAAAAAAAAAAAARARMf/aAAgBAgEBPxBXY9J//8QAHRABAAMAAgMBAAAAAAAAAAAAAQARITFRQXHR8P/aAAgBAQABPxAwlVAsIQDJUDRHxsRfNrtIR36XZfqdLZC5+wKWmjGwiF1SGET+cs//2Q=="},"images":{"fallback":{"src":"/static/42af558788204434e27e8ff9ce9ab88b/e07e1/angelo-sciarra.jpg","srcSet":"/static/42af558788204434e27e8ff9ce9ab88b/e07e1/angelo-sciarra.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/42af558788204434e27e8ff9ce9ab88b/d8057/angelo-sciarra.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"angelo-sciarra"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAEEBQID/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHJtV7EaQ8Q7HRecgv/xAAaEAACAwEBAAAAAAAAAAAAAAAAAgEDEhET/9oACAEBAAEFAkkxHn0rjph5GqfS0oosGYP/xAAXEQADAQAAAAAAAAAAAAAAAAAAEBES/9oACAEDAQE/Aaaf/8QAFxEAAwEAAAAAAAAAAAAAAAAAABAREv/aAAgBAgEBPwGGX//EAB0QAAIBBAMAAAAAAAAAAAAAAAABEQIQEiExUWH/2gAIAQEABj8CMpOR+FOnDOzSv//EAB0QAAMAAgIDAAAAAAAAAAAAAAABETFBIVFhkbH/2gAIAQEAAT8hyXeyaM1o0WURydw9kqP4Quyng6I+3dFWPlQdMH//2gAMAwEAAgADAAAAEJfIvP/EABgRAQEBAQEAAAAAAAAAAAAAAAEAETFB/9oACAEDAQE/EBekreSuhF//xAAYEQEBAAMAAAAAAAAAAAAAAAABACFBUf/aAAgBAgEBPxBHYDuAzN//xAAfEAEBAAICAQUAAAAAAAAAAAABEQAhMUFRYXGBsdH/2gAIAQEAAT8QMQEjWBJjE8T7xeKcxcgUDQJfZlBiwTp6+PnIAg1Dx1nf8NSXU/cuW2C9bzpmf//Z"},"images":{"fallback":{"src":"/static/14c16b4b64a24c3ea4806b34e3e9f681/e07e1/alex-stabile.jpg","srcSet":"/static/14c16b4b64a24c3ea4806b34e3e9f681/e07e1/alex-stabile.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/14c16b4b64a24c3ea4806b34e3e9f681/d8057/alex-stabile.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"alex-stabile"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAMEBQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAwEC/9oADAMBAAIQAxAAAAGtby9PEDt1DPnF74Q//8QAGxAAAgIDAQAAAAAAAAAAAAAAAgMBERIiMjH/2gAIAQEAAQUCUdE3hMWNjIEukJ1FUZNf37H/xAAYEQACAwAAAAAAAAAAAAAAAAAAMQECEP/aAAgBAwEBPwGVtmf/xAAVEQEBAAAAAAAAAAAAAAAAAAAgQf/aAAgBAgEBPwGj/8QAHRABAAICAgMAAAAAAAAAAAAAAQACESExcSJBUf/aAAgBAQAGPwIE5nGDMe5t8pWtrbiP2VGGAOpV9pP/xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxIUFh/9oACAEBAAE/IQhcRzki4LqLOtA4TuQgUXz6cHoBY+UdHxDEq8K7/9oADAMBAAIAAwAAABAfIAL/xAAYEQEBAAMAAAAAAAAAAAAAAAABABARMf/aAAgBAwEBPxBqyXTjpf/EABcRAQADAAAAAAAAAAAAAAAAAAEAEDH/2gAIAQIBAT8QDVk//8QAHBABAAICAwEAAAAAAAAAAAAAAQARITFBUWGh/9oACAEBAAE/EA6FRXedw6oVVWuMsJjsfCZDQJkvPkr5kGS/F9cQ7qKT3Et7RbrwYhQuwKGuZdNVO9s//9k="},"images":{"fallback":{"src":"/static/db0e2f94eee8395a0d5a6b8024ecd145/e07e1/fabrizio-duroni-small.jpg","srcSet":"/static/db0e2f94eee8395a0d5a6b8024ecd145/e07e1/fabrizio-duroni-small.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/db0e2f94eee8395a0d5a6b8024ecd145/d8057/fabrizio-duroni-small.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"fabrizio-duroni-small"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAUEAgP/xAAXAQEBAQEAAAAAAAAAAAAAAAACAQAD/9oADAMBAAIQAxAAAAGhjngrjEEg9HY+Y1//xAAaEAADAQEBAQAAAAAAAAAAAAAAAQIREhMU/9oACAEBAAEFAqrmXdydI+umeib9NJWlrHp//8QAFhEAAwAAAAAAAAAAAAAAAAAAAREg/9oACAEDAQE/AQo//8QAFxEBAAMAAAAAAAAAAAAAAAAAAQAQEf/aAAgBAgEBPwFmt//EAB0QAAEDBQEAAAAAAAAAAAAAAAEAEiECEBEgQVH/2gAIAQEABj8CynOBHlppC4oOn//EABsQAQEBAAIDAAAAAAAAAAAAAAERACFhMVFx/9oACAEBAAE/ITT03KuqbszOS9YIE+gkwgJOp5wTLJcI8Lv/2gAMAwEAAgADAAAAEOs4vP/EABkRAAIDAQAAAAAAAAAAAAAAAAARASFBYf/aAAgBAwEBPxBkWLhoz//EABsRAAEEAwAAAAAAAAAAAAAAAAEAEBEhYaHh/9oACAECAQE/EJA0s+uv/8QAHRABAQACAwADAAAAAAAAAAAAAREAIUFhcTGR0f/aAAgBAQABPxDWJRofZj1VRglLw40/GWV1tqz7xy8QLBv3g9hNojvDQSSfHsw09Bs8uBQB05//2Q=="},"images":{"fallback":{"src":"/static/2bfc02d6ef97e8581cb01b66cffe6bfd/e07e1/emanuele-ianni.jpg","srcSet":"/static/2bfc02d6ef97e8581cb01b66cffe6bfd/e07e1/emanuele-ianni.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/2bfc02d6ef97e8581cb01b66cffe6bfd/d8057/emanuele-ianni.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"emanuele-ianni"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQFA//EABcBAQEBAQAAAAAAAAAAAAAAAAADAQL/2gAMAwEAAhADEAAAAZq8vTxG6uoQ0C94Q//EABsQAAICAwEAAAAAAAAAAAAAAAEDAhEEEiIx/9oACAEBAAEFAlTqTTxAWOTArIx1CgsbMf7Vx//EABcRAAMBAAAAAAAAAAAAAAAAAAABMRD/2gAIAQMBAT8Bc10//8QAFREBAQAAAAAAAAAAAAAAAAAAIEH/2gAIAQIBAT8Bo//EABwQAQACAwADAAAAAAAAAAAAAAEAEQIhMRBRYf/aAAgBAQAGPwIE7OUX420kDJ39iPuYjMaKmK9Sf//EABoQAAMBAQEBAAAAAAAAAAAAAAABETEhUWH/2gAIAQEAAT8hRC4jJSmwUtP6W7yU07ayvpMfvEF4xkKJS7DqWhn/2gAMAwEAAgADAAAAEFz3A//EABgRAQADAQAAAAAAAAAAAAAAAAEAEBEx/9oACAEDAQE/EGrIuOV2n//EABgRAAIDAAAAAAAAAAAAAAAAAAABEDFB/9oACAECAQE/EErRoj//xAAfEAEAAgICAgMAAAAAAAAAAAABABEhYTFBUaGBsdH/2gAIAQEAAT8Qo2VFxeeYDmtLbXGZpanomZPCGS16gr2sPB4vxADp4nwSzvtrQ/kDFTAvTuUZKanbx9BP/9k="},"images":{"fallback":{"src":"/static/04f0a7ef38819e8782b8b6f55b44fd95/96deb/fabrizio-duroni.jpg","srcSet":"/static/04f0a7ef38819e8782b8b6f55b44fd95/96deb/fabrizio-duroni.jpg 150w","sizes":"100vw"},"sources":[{"srcSet":"/static/04f0a7ef38819e8782b8b6f55b44fd95/c65bc/fabrizio-duroni.webp 150w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"fabrizio-duroni"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHLbHcuFNZZeEgf/8QAGxAAAgIDAQAAAAAAAAAAAAAAAQIAAxAREiH/2gAIAQEAAQUCA9atkmop013RWAY4Bn//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAABAwUAAAAAAAAAAAAAAAABABEhECAiMZH/2gAIAQEABj8ChZDlA20IYW//xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhMUFR/9oACAEBAAE/IQQaXhcrvX6ua8mGXbkQLo6y6z5AAog3Hek//9oADAMBAAIAAwAAABDz377/xAAWEQEBAQAAAAAAAAAAAAAAAAABESD/2gAIAQMBAT8QAlx//8QAFhEBAQEAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/EFbMf//EAB0QAQADAAMAAwAAAAAAAAAAAAEAESExQWFRcfH/2gAIAQEAAT8QBtaCU32G1t40s6ZgJUfhg1xjVL/JYZrIbh5xEY28LuNgXRsYAq/cot1ddz//2Q=="},"images":{"fallback":{"src":"/static/ab41a416c0bd4e6c6fe1b2d660f796ee/e07e1/giordano-tamburrelli.jpg","srcSet":"/static/ab41a416c0bd4e6c6fe1b2d660f796ee/e07e1/giordano-tamburrelli.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/ab41a416c0bd4e6c6fe1b2d660f796ee/d8057/giordano-tamburrelli.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"giordano-tamburrelli"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAIDBQEE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwIB/9oADAMBAAIQAxAAAAGM7qCTjFVG15DLzwh//8QAHRAAAgICAwEAAAAAAAAAAAAAAQMAAhESEyExMv/aAAgBAQABBQLGZxLm9RF+t0yT2o7MFjZlvr//xAAWEQEBAQAAAAAAAAAAAAAAAAABEEH/2gAIAQMBAT8BCZP/xAAYEQACAwAAAAAAAAAAAAAAAAAAARASQf/aAAgBAgEBPwFFDI//xAAdEAACAgEFAAAAAAAAAAAAAAAAEQECEAMSITFh/9oACAEBAAY/Ak0OmojmcbZr1i1fBTLJP//EABwQAQADAAIDAAAAAAAAAAAAAAEAESExQVFhcf/aAAgBAQABPyHQ5HcuLC8ryzAEMqaLjQoGysiqfcdbgzUsiF9zH0n/2gAMAwEAAgADAAAAEMs/g//EABgRAAIDAAAAAAAAAAAAAAAAAAARARBB/9oACAEDAQE/EIEMxX//xAAYEQACAwAAAAAAAAAAAAAAAAAAARARMf/aAAgBAgEBPxDBSCP/xAAdEAEAAgICAwAAAAAAAAAAAAABABEhMUFhcZGx/9oACAEBAAE/EDOQ2GwNymYVC2BwjEtBbS46ori+epnN6zYXqP5cqJDVzQje/MG209IABof2f//Z"},"images":{"fallback":{"src":"/static/c1b4b604432bbbf45b48a4470a894cb4/e07e1/francesco-bonfadelli.jpg","srcSet":"/static/c1b4b604432bbbf45b48a4470a894cb4/e07e1/francesco-bonfadelli.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/c1b4b604432bbbf45b48a4470a894cb4/d8057/francesco-bonfadelli.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"francesco-bonfadelli"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAUCA//EABYBAQEBAAAAAAAAAAAAAAAAAAMCBP/aAAwDAQACEAMQAAAB6peDauCSD1NefIi//8QAHBAAAwABBQAAAAAAAAAAAAAAAQIDABITIjEz/9oACAEBAAEFAi3GT6ge9wjGoxMSGmMp5rZ1H//EABgRAAMBAQAAAAAAAAAAAAAAAAABEQNB/9oACAEDAQE/AXoqU4Vn/8QAGBEAAgMAAAAAAAAAAAAAAAAAABEQEyH/2gAIAQIBAT8BqwUI/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAEREgMQIWH/2gAIAQEABj8C51jsoa3YQzH6QoP/xAAdEAADAAICAwAAAAAAAAAAAAAAAREhUTGBcZGx/9oACAEBAAE/IUKp0UiayC0N7Ds7LO30Nj6xoxg5bN+zhe8H/9oADAMBAAIAAwAAABAg17//xAAYEQADAQEAAAAAAAAAAAAAAAAAAREQMf/aAAgBAwEBPxBCBYKHT//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQIBAT8QNqUORI3l/8QAHRABAAMAAQUAAAAAAAAAAAAAAQARIUExUWFxwf/aAAgBAQABPxBoAuhJb7i6nQux8jARIULlG7gqA3SWB5YD7DSrE2Jo5ITIIZ3cfICQHdtP/9k="},"images":{"fallback":{"src":"/static/e34f52c6d46c24b0dd70368524e25a77/2bb76/felice-giovinazzo.jpg","srcSet":"/static/e34f52c6d46c24b0dd70368524e25a77/2bb76/felice-giovinazzo.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/e34f52c6d46c24b0dd70368524e25a77/968d2/felice-giovinazzo.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.01}},"name":"felice-giovinazzo"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQYC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQIA/9oADAMBAAIQAxAAAAHVgqwy67wdztMTqxL/AP/EABsQAAICAwEAAAAAAAAAAAAAAAECAAQSEzE0/9oACAEBAAEFAopfKWLOphbTKXPQOjn/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAaEAACAwEBAAAAAAAAAAAAAAABEQACECEx/9oACAEBAAY/AorI8wVAcHqwwZ//xAAcEAACAgIDAAAAAAAAAAAAAAABEQAhEDFRcaH/2gAIAQEAAT8htGXoCzASxdqIZMVkzZ4wT6xPdNU//9oADAMBAAIAAwAAABBcwAL/xAAWEQEBAQAAAAAAAAAAAAAAAAARASD/2gAIAQMBAT8QgY//xAAWEQADAAAAAAAAAAAAAAAAAAABEBH/2gAIAQIBAT8QhqC//8QAIBABAAICAQQDAAAAAAAAAAAAAQARITFBUWFxsYGRof/aAAgBAQABPxBpRSg15hG40Nusx33+T5I4GC50LoPE7w6lWvBXuXeY1ngT6mR9T7id3BP/2Q=="},"images":{"fallback":{"src":"/static/b397391be23f691af5266768f5e6b1d7/e07e1/marco-de-lucchi.jpg","srcSet":"/static/b397391be23f691af5266768f5e6b1d7/e07e1/marco-de-lucchi.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/b397391be23f691af5266768f5e6b1d7/d8057/marco-de-lucchi.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"marco-de-lucchi"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAUEA//EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAeufR1Mq6IcMK4P/xAAbEAACAgMBAAAAAAAAAAAAAAABAgMRBBITAP/aAAgBAQABBQJRaCct5VatmEodQAKGeo5bmsd35//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EAB8QAAICAgEFAAAAAAAAAAAAAAARAQIDEiEyQVFxof/aAAgBAQAGPwKbpo21nxshq5jdljn6aVvC9Cgi/LNex1Sf/8QAHRABAAMBAAIDAAAAAAAAAAAAAQARITFBUYGR4f/aAAgBAQABPyFx7DdclFjrTB8xJsDzYBkuDeGP2UhOTo+4AcDk1DQO5PLQr0mf/9oADAMBAAIAAwAAABATyAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAbEAEBAAMBAQEAAAAAAAAAAAABEQAhQTGBUf/aAAgBAQABPxCmuA3ZOYHsTSmpFg5gY21A8yaJGqDZbzx8wZTZ0hWitbuAYBADhnmRKVpPzCCHxvPNooA8hn//2Q=="},"images":{"fallback":{"src":"/static/24d4fd4a3f55e9bb782315828bb9fb94/e07e1/mariano-patafio.jpg","srcSet":"/static/24d4fd4a3f55e9bb782315828bb9fb94/e07e1/mariano-patafio.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/24d4fd4a3f55e9bb782315828bb9fb94/d8057/mariano-patafio.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"mariano-patafio"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQDAQX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgD/2gAMAwEAAhADEAAAAac+yzXppWnOYXYY/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIRAAMhBBITIkL/2gAIAQEAAQUCB6pd2PyGpBAguc161GLitI//xAAWEQADAAAAAAAAAAAAAAAAAAABESD/2gAIAQMBAT8BCj//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAADAAEFAAAAAAAAAAAAAAAAAREhAxAxQXH/2gAIAQEABj8CWZglqe8OTS9Ijo//xAAbEAADAAMBAQAAAAAAAAAAAAAAAREhMUFRYf/aAAgBAQABPyH4JsMRkkcJdhBwtEiljotXAen3I8MtjatUf//aAAwDAQACAAMAAAAQrz//AP/EABgRAAIDAAAAAAAAAAAAAAAAAAEQESEx/9oACAEDAQE/EAhaGFf/xAAYEQEAAwEAAAAAAAAAAAAAAAABABARQf/aAAgBAgEBPxBXZkOV/8QAHBABAQADAQADAAAAAAAAAAAAAREAITFBUZHh/9oACAEBAAE/EDKwSaa+8CLoMUfHWOto8HJN+AOKNlLB18MM1SFMfCSOnd/uPkBNNNwEtxZn/9k="},"images":{"fallback":{"src":"/static/f6aef0f2d94a2b0b66b4f39c81968c8c/ac761/stefano-varesi.jpg","srcSet":"/static/f6aef0f2d94a2b0b66b4f39c81968c8c/ac761/stefano-varesi.jpg 104w","sizes":"100vw"},"sources":[{"srcSet":"/static/f6aef0f2d94a2b0b66b4f39c81968c8c/5ca4c/stefano-varesi.webp 104w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"stefano-varesi"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECBAP/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAAByQDnSigbqC//xAAbEAADAAIDAAAAAAAAAAAAAAABAgMAEhATMf/aAAgBAQABBQKc9yya8JXrY0UsfTkxtTP/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAZEAACAwEAAAAAAAAAAAAAAAABIQAQMRH/2gAIAQEABj8CeRUx2LLANf/EAB0QAQACAgIDAAAAAAAAAAAAAAEAERAxIUFRYXH/2gAIAQEAAT8h4n6Uw0mnvBA0++ZWw287MkdEY7Z//9oADAMBAAIAAwAAABAAwID/xAAXEQADAQAAAAAAAAAAAAAAAAABEBEx/9oACAEDAQE/EKJENX//xAAYEQACAwAAAAAAAAAAAAAAAAABEBExQf/aAAgBAgEBPxCDaxf/xAAdEAEAAwACAwEAAAAAAAAAAAABABEhQXExUZFh/9oACAEBAAE/EKKyoooXMjJrfLWxsyYwWhhB5P2GuE3zPTBSJx6l0V2h1PmU+NT/2Q=="},"images":{"fallback":{"src":"/static/44207484cc26a6b01a26ad222a9af368/e07e1/tommaso-resti.jpg","srcSet":"/static/44207484cc26a6b01a26ad222a9af368/e07e1/tommaso-resti.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/44207484cc26a6b01a26ad222a9af368/d8057/tommaso-resti.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"tommaso-resti"}}]}}} \ No newline at end of file +{"data":{"allFile":{"edges":[{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQFA//EABUBAQEAAAAAAAAAAAAAAAAAAAEA/9oADAMBAAIQAxAAAAGifQ51mLBd6wcQJ//EABoQAAIDAQEAAAAAAAAAAAAAAAECAAMhEjH/2gAIAQEAAQUCCRqgrNVogXqFtr2BQin3/8QAFhEBAQEAAAAAAAAAAAAAAAAAEAER/9oACAEDAQE/AdKf/8QAFxEBAAMAAAAAAAAAAAAAAAAAEAERQf/aAAgBAgEBPwGpNP/EABoQAQACAwEAAAAAAAAAAAAAAAABIRARErH/2gAIAQEABj8CRz7naVqS/8QAGxABAAMBAAMAAAAAAAAAAAAAAQAhMREQYYH/2gAIAQEAAT8h6EuNxpLd8DAErU2k1gBJjMPiKb0V2JW9z//aAAwDAQACAAMAAAAQF+98/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EAA7AYT/xAAYEQEBAQEBAAAAAAAAAAAAAAABABExIf/aAAgBAgEBPxDbEuQvie3/xAAcEAEBAAMBAAMAAAAAAAAAAAABEQAhMUFhceH/2gAIAQEAAT8QOM6ZfwqlfZlHrIoRfcJqEEA4PfzCKOgeawFxd+ufOAlCVLDHc7Xn/9k="},"images":{"fallback":{"src":"/static/39a1d40bce1da5216577131c48d7fa27/e07e1/alessandro-romano.jpg","srcSet":"/static/39a1d40bce1da5216577131c48d7fa27/e07e1/alessandro-romano.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/39a1d40bce1da5216577131c48d7fa27/d8057/alessandro-romano.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"alessandro-romano"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAEEBQID/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAHJtV7EaQ8Q7HRecgv/xAAaEAACAwEBAAAAAAAAAAAAAAAAAgEDEhET/9oACAEBAAEFAkkxHn0rjph5GqfS0oosGYP/xAAXEQADAQAAAAAAAAAAAAAAAAAAEBES/9oACAEDAQE/Aaaf/8QAFxEAAwEAAAAAAAAAAAAAAAAAABAREv/aAAgBAgEBPwGGX//EAB0QAAIBBAMAAAAAAAAAAAAAAAABEQIQEiExUWH/2gAIAQEABj8CMpOR+FOnDOzSv//EAB0QAAMAAgIDAAAAAAAAAAAAAAABETFBIVFhkbH/2gAIAQEAAT8hyXeyaM1o0WURydw9kqP4Quyng6I+3dFWPlQdMH//2gAMAwEAAgADAAAAEJfIvP/EABgRAQEBAQEAAAAAAAAAAAAAAAEAETFB/9oACAEDAQE/EBekreSuhF//xAAYEQEBAAMAAAAAAAAAAAAAAAABACFBUf/aAAgBAgEBPxBHYDuAzN//xAAfEAEBAAICAQUAAAAAAAAAAAABEQAhMUFRYXGBsdH/2gAIAQEAAT8QMQEjWBJjE8T7xeKcxcgUDQJfZlBiwTp6+PnIAg1Dx1nf8NSXU/cuW2C9bzpmf//Z"},"images":{"fallback":{"src":"/static/14c16b4b64a24c3ea4806b34e3e9f681/e07e1/alex-stabile.jpg","srcSet":"/static/14c16b4b64a24c3ea4806b34e3e9f681/e07e1/alex-stabile.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/14c16b4b64a24c3ea4806b34e3e9f681/d8057/alex-stabile.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"alex-stabile"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAEDBP/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/aAAwDAQACEAMQAAABmvXmKuQ035SUCP8A/8QAHRAAAgEEAwAAAAAAAAAAAAAAAQISAAMhIxExMv/aAAgBAQABBQK68UR25lUMAbTgt2h3XfX/xAAWEQEBAQAAAAAAAAAAAAAAAAAQARH/2gAIAQMBAT8Bwh//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAABAwUAAAAAAAAAAAAAAAAQAAEhAhEiMXH/2gAIAQEABj8ChZV3Ermy4//EABsQAAMAAwEBAAAAAAAAAAAAAAABESExcWGx/9oACAEBAAE/IXe7GyGkJuQ7FefiLReBMJRoXT8Pmf/aAAwDAQACAAMAAAAQm+AD/8QAFxEBAQEBAAAAAAAAAAAAAAAAARARMf/aAAgBAwEBPxAGM4Z//8QAFxEBAQEBAAAAAAAAAAAAAAAAARARMf/aAAgBAgEBPxBXY9J//8QAHRABAAMAAgMBAAAAAAAAAAAAAQARITFRQXHR8P/aAAgBAQABPxAwlVAsIQDJUDRHxsRfNrtIR36XZfqdLZC5+wKWmjGwiF1SGET+cs//2Q=="},"images":{"fallback":{"src":"/static/42af558788204434e27e8ff9ce9ab88b/e07e1/angelo-sciarra.jpg","srcSet":"/static/42af558788204434e27e8ff9ce9ab88b/e07e1/angelo-sciarra.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/42af558788204434e27e8ff9ce9ab88b/d8057/angelo-sciarra.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"angelo-sciarra"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAUEAgP/xAAXAQEBAQEAAAAAAAAAAAAAAAACAQAD/9oADAMBAAIQAxAAAAGhjngrjEEg9HY+Y1//xAAaEAADAQEBAQAAAAAAAAAAAAAAAQIREhMU/9oACAEBAAEFAqrmXdydI+umeib9NJWlrHp//8QAFhEAAwAAAAAAAAAAAAAAAAAAAREg/9oACAEDAQE/AQo//8QAFxEBAAMAAAAAAAAAAAAAAAAAAQAQEf/aAAgBAgEBPwFmt//EAB0QAAEDBQEAAAAAAAAAAAAAAAEAEiECEBEgQVH/2gAIAQEABj8CynOBHlppC4oOn//EABsQAQEBAAIDAAAAAAAAAAAAAAERACFhMVFx/9oACAEBAAE/ITT03KuqbszOS9YIE+gkwgJOp5wTLJcI8Lv/2gAMAwEAAgADAAAAEOs4vP/EABkRAAIDAQAAAAAAAAAAAAAAAAARASFBYf/aAAgBAwEBPxBkWLhoz//EABsRAAEEAwAAAAAAAAAAAAAAAAEAEBEhYaHh/9oACAECAQE/EJA0s+uv/8QAHRABAQACAwADAAAAAAAAAAAAAREAIUFhcTGR0f/aAAgBAQABPxDWJRofZj1VRglLw40/GWV1tqz7xy8QLBv3g9hNojvDQSSfHsw09Bs8uBQB05//2Q=="},"images":{"fallback":{"src":"/static/2bfc02d6ef97e8581cb01b66cffe6bfd/e07e1/emanuele-ianni.jpg","srcSet":"/static/2bfc02d6ef97e8581cb01b66cffe6bfd/e07e1/emanuele-ianni.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/2bfc02d6ef97e8581cb01b66cffe6bfd/d8057/emanuele-ianni.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"emanuele-ianni"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAMEBQL/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAwEC/9oADAMBAAIQAxAAAAGtby9PEDt1DPnF74Q//8QAGxAAAgIDAQAAAAAAAAAAAAAAAgMBERIiMjH/2gAIAQEAAQUCUdE3hMWNjIEukJ1FUZNf37H/xAAYEQACAwAAAAAAAAAAAAAAAAAAMQECEP/aAAgBAwEBPwGVtmf/xAAVEQEBAAAAAAAAAAAAAAAAAAAgQf/aAAgBAgEBPwGj/8QAHRABAAICAgMAAAAAAAAAAAAAAQACESExcSJBUf/aAAgBAQAGPwIE5nGDMe5t8pWtrbiP2VGGAOpV9pP/xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxIUFh/9oACAEBAAE/IQhcRzki4LqLOtA4TuQgUXz6cHoBY+UdHxDEq8K7/9oADAMBAAIAAwAAABAfIAL/xAAYEQEBAAMAAAAAAAAAAAAAAAABABARMf/aAAgBAwEBPxBqyXTjpf/EABcRAQADAAAAAAAAAAAAAAAAAAEAEDH/2gAIAQIBAT8QDVk//8QAHBABAAICAwEAAAAAAAAAAAAAAQARITFBUWGh/9oACAEBAAE/EA6FRXedw6oVVWuMsJjsfCZDQJkvPkr5kGS/F9cQ7qKT3Et7RbrwYhQuwKGuZdNVO9s//9k="},"images":{"fallback":{"src":"/static/db0e2f94eee8395a0d5a6b8024ecd145/e07e1/fabrizio-duroni-small.jpg","srcSet":"/static/db0e2f94eee8395a0d5a6b8024ecd145/e07e1/fabrizio-duroni-small.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/db0e2f94eee8395a0d5a6b8024ecd145/d8057/fabrizio-duroni-small.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"fabrizio-duroni-small"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQFA//EABcBAQEBAQAAAAAAAAAAAAAAAAADAQL/2gAMAwEAAhADEAAAAZq8vTxG6uoQ0C94Q//EABsQAAICAwEAAAAAAAAAAAAAAAEDAhEEEiIx/9oACAEBAAEFAlTqTTxAWOTArIx1CgsbMf7Vx//EABcRAAMBAAAAAAAAAAAAAAAAAAABMRD/2gAIAQMBAT8Bc10//8QAFREBAQAAAAAAAAAAAAAAAAAAIEH/2gAIAQIBAT8Bo//EABwQAQACAwADAAAAAAAAAAAAAAEAEQIhMRBRYf/aAAgBAQAGPwIE7OUX420kDJ39iPuYjMaKmK9Sf//EABoQAAMBAQEBAAAAAAAAAAAAAAABETEhUWH/2gAIAQEAAT8hRC4jJSmwUtP6W7yU07ayvpMfvEF4xkKJS7DqWhn/2gAMAwEAAgADAAAAEFz3A//EABgRAQADAQAAAAAAAAAAAAAAAAEAEBEx/9oACAEDAQE/EGrIuOV2n//EABgRAAIDAAAAAAAAAAAAAAAAAAABEDFB/9oACAECAQE/EErRoj//xAAfEAEAAgICAgMAAAAAAAAAAAABABEhYTFBUaGBsdH/2gAIAQEAAT8Qo2VFxeeYDmtLbXGZpanomZPCGS16gr2sPB4vxADp4nwSzvtrQ/kDFTAvTuUZKanbx9BP/9k="},"images":{"fallback":{"src":"/static/04f0a7ef38819e8782b8b6f55b44fd95/96deb/fabrizio-duroni.jpg","srcSet":"/static/04f0a7ef38819e8782b8b6f55b44fd95/96deb/fabrizio-duroni.jpg 150w","sizes":"100vw"},"sources":[{"srcSet":"/static/04f0a7ef38819e8782b8b6f55b44fd95/c65bc/fabrizio-duroni.webp 150w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"fabrizio-duroni"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAUCA//EABYBAQEBAAAAAAAAAAAAAAAAAAMCBP/aAAwDAQACEAMQAAAB6peDauCSD1NefIi//8QAHBAAAwABBQAAAAAAAAAAAAAAAQIDABITIjEz/9oACAEBAAEFAi3GT6ge9wjGoxMSGmMp5rZ1H//EABgRAAMBAQAAAAAAAAAAAAAAAAABEQNB/9oACAEDAQE/AXoqU4Vn/8QAGBEAAgMAAAAAAAAAAAAAAAAAABEQEyH/2gAIAQIBAT8BqwUI/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAEREgMQIWH/2gAIAQEABj8C51jsoa3YQzH6QoP/xAAdEAADAAICAwAAAAAAAAAAAAAAAREhUTGBcZGx/9oACAEBAAE/IUKp0UiayC0N7Ds7LO30Nj6xoxg5bN+zhe8H/9oADAMBAAIAAwAAABAg17//xAAYEQADAQEAAAAAAAAAAAAAAAAAAREQMf/aAAgBAwEBPxBCBYKHT//EABcRAQEBAQAAAAAAAAAAAAAAAAEAETH/2gAIAQIBAT8QNqUORI3l/8QAHRABAAMAAQUAAAAAAAAAAAAAAQARIUExUWFxwf/aAAgBAQABPxBoAuhJb7i6nQux8jARIULlG7gqA3SWB5YD7DSrE2Jo5ITIIZ3cfICQHdtP/9k="},"images":{"fallback":{"src":"/static/e34f52c6d46c24b0dd70368524e25a77/2bb76/felice-giovinazzo.jpg","srcSet":"/static/e34f52c6d46c24b0dd70368524e25a77/2bb76/felice-giovinazzo.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/e34f52c6d46c24b0dd70368524e25a77/968d2/felice-giovinazzo.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1.01}},"name":"felice-giovinazzo"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAIDBP/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHLbHcuFNZZeEgf/8QAGxAAAgIDAQAAAAAAAAAAAAAAAQIAAxAREiH/2gAIAQEAAQUCA9atkmop013RWAY4Bn//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAABAwUAAAAAAAAAAAAAAAABABEhECAiMZH/2gAIAQEABj8ChZDlA20IYW//xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhMUFR/9oACAEBAAE/IQQaXhcrvX6ua8mGXbkQLo6y6z5AAog3Hek//9oADAMBAAIAAwAAABDz377/xAAWEQEBAQAAAAAAAAAAAAAAAAABESD/2gAIAQMBAT8QAlx//8QAFhEBAQEAAAAAAAAAAAAAAAAAAREg/9oACAECAQE/EFbMf//EAB0QAQADAAMAAwAAAAAAAAAAAAEAESExQWFRcfH/2gAIAQEAAT8QBtaCU32G1t40s6ZgJUfhg1xjVL/JYZrIbh5xEY28LuNgXRsYAq/cot1ddz//2Q=="},"images":{"fallback":{"src":"/static/ab41a416c0bd4e6c6fe1b2d660f796ee/e07e1/giordano-tamburrelli.jpg","srcSet":"/static/ab41a416c0bd4e6c6fe1b2d660f796ee/e07e1/giordano-tamburrelli.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/ab41a416c0bd4e6c6fe1b2d660f796ee/d8057/giordano-tamburrelli.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"giordano-tamburrelli"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAIDBQEE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAwIB/9oADAMBAAIQAxAAAAGM7qCTjFVG15DLzwh//8QAHRAAAgICAwEAAAAAAAAAAAAAAQMAAhESEyExMv/aAAgBAQABBQLGZxLm9RF+t0yT2o7MFjZlvr//xAAWEQEBAQAAAAAAAAAAAAAAAAABEEH/2gAIAQMBAT8BCZP/xAAYEQACAwAAAAAAAAAAAAAAAAAAARASQf/aAAgBAgEBPwFFDI//xAAdEAACAgEFAAAAAAAAAAAAAAAAEQECEAMSITFh/9oACAEBAAY/Ak0OmojmcbZr1i1fBTLJP//EABwQAQADAAIDAAAAAAAAAAAAAAEAESExQVFhcf/aAAgBAQABPyHQ5HcuLC8ryzAEMqaLjQoGysiqfcdbgzUsiF9zH0n/2gAMAwEAAgADAAAAEMs/g//EABgRAAIDAAAAAAAAAAAAAAAAAAARARBB/9oACAEDAQE/EIEMxX//xAAYEQACAwAAAAAAAAAAAAAAAAAAARARMf/aAAgBAgEBPxDBSCP/xAAdEAEAAgICAwAAAAAAAAAAAAABABEhMUFhcZGx/9oACAEBAAE/EDOQ2GwNymYVC2BwjEtBbS46ori+epnN6zYXqP5cqJDVzQje/MG209IABof2f//Z"},"images":{"fallback":{"src":"/static/c1b4b604432bbbf45b48a4470a894cb4/e07e1/francesco-bonfadelli.jpg","srcSet":"/static/c1b4b604432bbbf45b48a4470a894cb4/e07e1/francesco-bonfadelli.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/c1b4b604432bbbf45b48a4470a894cb4/d8057/francesco-bonfadelli.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"francesco-bonfadelli"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQYC/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQIA/9oADAMBAAIQAxAAAAHVgqwy67wdztMTqxL/AP/EABsQAAICAwEAAAAAAAAAAAAAAAECAAQSEzE0/9oACAEBAAEFAopfKWLOphbTKXPQOjn/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAaEAACAwEBAAAAAAAAAAAAAAABEQACECEx/9oACAEBAAY/AorI8wVAcHqwwZ//xAAcEAACAgIDAAAAAAAAAAAAAAABEQAhEDFRcaH/2gAIAQEAAT8htGXoCzASxdqIZMVkzZ4wT6xPdNU//9oADAMBAAIAAwAAABBcwAL/xAAWEQEBAQAAAAAAAAAAAAAAAAARASD/2gAIAQMBAT8QgY//xAAWEQADAAAAAAAAAAAAAAAAAAABEBH/2gAIAQIBAT8QhqC//8QAIBABAAICAQQDAAAAAAAAAAAAAQARITFBUWFxsYGRof/aAAgBAQABPxBpRSg15hG40Nusx33+T5I4GC50LoPE7w6lWvBXuXeY1ngT6mR9T7id3BP/2Q=="},"images":{"fallback":{"src":"/static/b397391be23f691af5266768f5e6b1d7/e07e1/marco-de-lucchi.jpg","srcSet":"/static/b397391be23f691af5266768f5e6b1d7/e07e1/marco-de-lucchi.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/b397391be23f691af5266768f5e6b1d7/d8057/marco-de-lucchi.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"marco-de-lucchi"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAUEA//EABQBAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhADEAAAAeufR1Mq6IcMK4P/xAAbEAACAgMBAAAAAAAAAAAAAAABAgMRBBITAP/aAAgBAQABBQJRaCct5VatmEodQAKGeo5bmsd35//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EAB8QAAICAgEFAAAAAAAAAAAAAAARAQIDEiEyQVFxof/aAAgBAQAGPwKbpo21nxshq5jdljn6aVvC9Cgi/LNex1Sf/8QAHRABAAMBAAIDAAAAAAAAAAAAAQARITFBUYGR4f/aAAgBAQABPyFx7DdclFjrTB8xJsDzYBkuDeGP2UhOTo+4AcDk1DQO5PLQr0mf/9oADAMBAAIAAwAAABATyAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAbEAEBAAMBAQEAAAAAAAAAAAABEQAhQTGBUf/aAAgBAQABPxCmuA3ZOYHsTSmpFg5gY21A8yaJGqDZbzx8wZTZ0hWitbuAYBADhnmRKVpPzCCHxvPNooA8hn//2Q=="},"images":{"fallback":{"src":"/static/24d4fd4a3f55e9bb782315828bb9fb94/e07e1/mariano-patafio.jpg","srcSet":"/static/24d4fd4a3f55e9bb782315828bb9fb94/e07e1/mariano-patafio.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/24d4fd4a3f55e9bb782315828bb9fb94/d8057/mariano-patafio.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"mariano-patafio"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQDAQX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAgD/2gAMAwEAAhADEAAAAac+yzXppWnOYXYY/8QAHhAAAgEDBQAAAAAAAAAAAAAAAQIRAAMhBBITIkL/2gAIAQEAAQUCB6pd2PyGpBAguc161GLitI//xAAWEQADAAAAAAAAAAAAAAAAAAABESD/2gAIAQMBAT8BCj//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAcEAADAAEFAAAAAAAAAAAAAAAAAREhAxAxQXH/2gAIAQEABj8CWZglqe8OTS9Ijo//xAAbEAADAAMBAQAAAAAAAAAAAAAAAREhMUFRYf/aAAgBAQABPyH4JsMRkkcJdhBwtEiljotXAen3I8MtjatUf//aAAwDAQACAAMAAAAQrz//AP/EABgRAAIDAAAAAAAAAAAAAAAAAAEQESEx/9oACAEDAQE/EAhaGFf/xAAYEQEAAwEAAAAAAAAAAAAAAAABABARQf/aAAgBAgEBPxBXZkOV/8QAHBABAQADAQADAAAAAAAAAAAAAREAITFBUZHh/9oACAEBAAE/EDKwSaa+8CLoMUfHWOto8HJN+AOKNlLB18MM1SFMfCSOnd/uPkBNNNwEtxZn/9k="},"images":{"fallback":{"src":"/static/f6aef0f2d94a2b0b66b4f39c81968c8c/ac761/stefano-varesi.jpg","srcSet":"/static/f6aef0f2d94a2b0b66b4f39c81968c8c/ac761/stefano-varesi.jpg 104w","sizes":"100vw"},"sources":[{"srcSet":"/static/f6aef0f2d94a2b0b66b4f39c81968c8c/5ca4c/stefano-varesi.webp 104w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"stefano-varesi"}},{"node":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","placeholder":{"fallback":"data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECBAP/xAAVAQEBAAAAAAAAAAAAAAAAAAABAP/aAAwDAQACEAMQAAAByQDnSigbqC//xAAbEAADAAIDAAAAAAAAAAAAAAABAgMAEhATMf/aAAgBAQABBQKc9yya8JXrY0UsfTkxtTP/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAZEAACAwEAAAAAAAAAAAAAAAABIQAQMRH/2gAIAQEABj8CeRUx2LLANf/EAB0QAQACAgIDAAAAAAAAAAAAAAEAERAxIUFRYXH/2gAIAQEAAT8h4n6Uw0mnvBA0++ZWw287MkdEY7Z//9oADAMBAAIAAwAAABAAwID/xAAXEQADAQAAAAAAAAAAAAAAAAABEBEx/9oACAEDAQE/EKJENX//xAAYEQACAwAAAAAAAAAAAAAAAAABEBExQf/aAAgBAgEBPxCDaxf/xAAdEAEAAwACAwEAAAAAAAAAAAABABEhQXExUZFh/9oACAEBAAE/EKKyoooXMjJrfLWxsyYwWhhB5P2GuE3zPTBSJx6l0V2h1PmU+NT/2Q=="},"images":{"fallback":{"src":"/static/44207484cc26a6b01a26ad222a9af368/e07e1/tommaso-resti.jpg","srcSet":"/static/44207484cc26a6b01a26ad222a9af368/e07e1/tommaso-resti.jpg 100w","sizes":"100vw"},"sources":[{"srcSet":"/static/44207484cc26a6b01a26ad222a9af368/d8057/tommaso-resti.webp 100w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":1}},"name":"tommaso-resti"}}]}}} \ No newline at end of file diff --git a/projects/astronave/privacy-policy/index.html b/projects/astronave/privacy-policy/index.html index 3dd40f4f6..d3f05253a 100644 --- a/projects/astronave/privacy-policy/index.html +++ b/projects/astronave/privacy-policy/index.html @@ -219,6 +219,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/projects/chicio-coding/privacy-policy/index.html b/projects/chicio-coding/privacy-policy/index.html index 5ed54d15a..6a453fcdc 100644 --- a/projects/chicio-coding/privacy-policy/index.html +++ b/projects/chicio-coding/privacy-policy/index.html @@ -219,6 +219,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/rss.xml b/rss.xml index 0977601be..0cbe3099f 100644 --- a/rss.xml +++ b/rss.xml @@ -1,4 +1,4 @@ -<![CDATA[Chicio coding]]>https://www.fabrizioduroni.itGatsbyJSMon, 23 Oct 2023 19:54:42 GMT<![CDATA[SwiftUI and the Text concatenations super powers]]>https://www.fabrizioduroni.it/2023/06/30/swiftui-text-concatenation/https://www.fabrizioduroni.it/2023/06/30/swiftui-text-concatenation/Mon, 12 Jun 2023 00:00:00 GMT<p>In some recent posts (have a look <a href="https://technology.lastminute.com/widget-ios-swiftui-configuration-intent/" title="swiftui widget friyay lastminute" target="_blank" rel="nofollow noopener noreferrer">here</a> and <a href="https://technology.lastminute.com/widget-ios-swiftui-react-native/" title="swiftui widget lastminute" target="_blank" rel="nofollow noopener noreferrer">here</a> ) we show a beautfiul project me and Marco are creating during our <a href="https://technology.lastminute.com/tech-learning-and-development-friyay/" title="lastminute.com friyay" target="_blank" rel="nofollow noopener noreferrer">Friyay at lastminute.com</a>: some widgets for our iOS apps. +<![CDATA[Chicio coding]]>https://www.fabrizioduroni.itGatsbyJSThu, 26 Oct 2023 06:02:14 GMT<![CDATA[SwiftUI and the Text concatenations super powers]]>https://www.fabrizioduroni.it/2023/06/30/swiftui-text-concatenation/https://www.fabrizioduroni.it/2023/06/30/swiftui-text-concatenation/Mon, 12 Jun 2023 00:00:00 GMT<p>In some recent posts (have a look <a href="https://technology.lastminute.com/widget-ios-swiftui-configuration-intent/" title="swiftui widget friyay lastminute" target="_blank" rel="nofollow noopener noreferrer">here</a> and <a href="https://technology.lastminute.com/widget-ios-swiftui-react-native/" title="swiftui widget lastminute" target="_blank" rel="nofollow noopener noreferrer">here</a> ) we show a beautfiul project me and Marco are creating during our <a href="https://technology.lastminute.com/tech-learning-and-development-friyay/" title="lastminute.com friyay" target="_blank" rel="nofollow noopener noreferrer">Friyay at lastminute.com</a>: some widgets for our iOS apps. For the second widget we developed, one that will show to our users their bookings information, we faced a challenge to display the information of hotels.<br> Our mobile app designer <a href="https://www.linkedin.com/in/raffaelmartinez/" title="Rafael Martinez lastminute.com" target="_blank" rel="nofollow noopener noreferrer">Rafael de Sena Martinez</a> asked us to display the hotel name and the hotel rating as if it was a single text, with the rating diff --git a/sw.js b/sw.js index 160465e2e..5179e3710 100644 --- a/sw.js +++ b/sw.js @@ -27,7 +27,7 @@ workbox.core.clientsClaim(); */ self.__precacheManifest = [ { - "url": "webpack-runtime-07e6ea9adc52412180f4.js" + "url": "webpack-runtime-0b594b7203645a071205.js" }, { "url": "framework-ad6caae84042d6c01a56.js" @@ -37,14 +37,14 @@ self.__precacheManifest = [ }, { "url": "offline-plugin-app-shell-fallback/index.html", - "revision": "aa45123608c45807dfeeb4ba70789355" + "revision": "0fcaced52c26cf88439de3072c993fbc" }, { "url": "fonts/opensans/OpenSans-Regular.woff2", "revision": "237aa94493d93bcf630b9a062f455d0a" }, { - "url": "components-bottom-index-50e0b44eba7559dc729c.js" + "url": "components-bottom-index-22dc5f43f2aca83b3174.js" }, { "url": "organism-footer-907c4b02ecc9ebdf27b7.js" diff --git a/webpack-runtime-07e6ea9adc52412180f4.js b/webpack-runtime-0b594b7203645a071205.js similarity index 96% rename from webpack-runtime-07e6ea9adc52412180f4.js rename to webpack-runtime-0b594b7203645a071205.js index cc79155f0..598c09fff 100644 --- a/webpack-runtime-07e6ea9adc52412180f4.js +++ b/webpack-runtime-0b594b7203645a071205.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,t,n,r,o,c,a,i={},f={};function s(e){var t=f[e];if(void 0!==t)return t.exports;var n=f[e]={exports:{}};return i[e].call(n.exports,n,n.exports,s),n.exports}s.m=i,s.amdO={},e=[],s.O=function(t,n,r,o){if(!n){var c=1/0;for(u=0;u=o)&&Object.keys(s.O).every((function(e){return s.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);s.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},s.d(o,c),o},s.d=function(e,t){for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(t,n){return s.f[n](e,t),t}),[]))},s.u=function(e){return({21:"components-design-system-molecules-post-tags",162:"component---src-pages-projects-chicio-coding-privacy-policy-tsx",174:"components-bottom-art",186:"component---src-templates-post-tsx",218:"component---src-pages-404-tsx",306:"component---cache-caches-gatsby-plugin-offline-app-shell-js",359:"018bd8e218cd2234a0741acc5a707f32810aafaa",364:"component---src-pages-cookie-policy-tsx",381:"component---src-pages-projects-astronave-privacy-policy-tsx",403:"component---src-pages-blog-tags-tsx",475:"organism-footer",524:"components-bottom-index",532:"styles",536:"component---src-templates-blog-tsx",542:"component---src-pages-blog-archive-tsx",600:"992fa8d325989540aeca99dc38709520a3b7c580",691:"component---src-pages-index-tsx",729:"eebb119054c2089d873b7cfa7bba2b49cf282c8d",760:"components-design-system-molecules-comments",878:"component---src-pages-art-tsx",902:"component---src-templates-tag-tsx",906:"components-design-system-organism-read-next",977:"fc341bf219d695c399268ba56b1de68baa2a8f51"}[e]||e)+"-"+{21:"c55372b1b5f1473c918e",162:"6b1cb704e64b572bef3f",174:"6c04a55586c61012060b",186:"143b17b906de1c2af3c3",218:"1f0097102474e982384f",306:"b65f521dcc74f5046a60",359:"2a25576905cb38f31dab",364:"087cf3c419b65e4802e0",381:"e5c160e4e17369d178c6",403:"05fe440d90417dd61760",475:"907c4b02ecc9ebdf27b7",524:"50e0b44eba7559dc729c",532:"72a9f10ee2b345dc3f24",536:"584ce6580a15cca266b5",542:"6ab2f68f34a159c98c9e",600:"252a9102dc52feb1d5e6",691:"631e4b9b889ef75e6204",729:"4a637dddf3e4cf09e835",731:"ab2affadf185a1bfb300",760:"0b14e7ac000249f566d4",843:"d04e46bb7a6833ed6b33",878:"36d8a361f3ccf90b4682",902:"7057be6a53fe0a721189",906:"fba083dcf7f504213947",977:"51df96b069d54262f68e"}[e]+".js"},s.miniCssF=function(e){return"styles.c98ca48beacca2fab051.css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="fabrizioduroni.it:",s.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var f=document.getElementsByTagName("script"),u=0;u=o)&&Object.keys(s.O).every((function(e){return s.O[e](n[i])}))?n.splice(i--,1):(a=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},s.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return s.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},s.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var o=Object.create(null);s.r(o);var c={};t=t||[null,n({}),n([]),n(n)];for(var a=2&r&&e;"object"==typeof a&&!~t.indexOf(a);a=n(a))Object.getOwnPropertyNames(a).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},s.d(o,c),o},s.d=function(e,t){for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=function(e){return Promise.all(Object.keys(s.f).reduce((function(t,n){return s.f[n](e,t),t}),[]))},s.u=function(e){return({21:"components-design-system-molecules-post-tags",162:"component---src-pages-projects-chicio-coding-privacy-policy-tsx",174:"components-bottom-art",186:"component---src-templates-post-tsx",218:"component---src-pages-404-tsx",306:"component---cache-caches-gatsby-plugin-offline-app-shell-js",359:"018bd8e218cd2234a0741acc5a707f32810aafaa",364:"component---src-pages-cookie-policy-tsx",381:"component---src-pages-projects-astronave-privacy-policy-tsx",403:"component---src-pages-blog-tags-tsx",475:"organism-footer",524:"components-bottom-index",532:"styles",536:"component---src-templates-blog-tsx",542:"component---src-pages-blog-archive-tsx",600:"992fa8d325989540aeca99dc38709520a3b7c580",691:"component---src-pages-index-tsx",729:"eebb119054c2089d873b7cfa7bba2b49cf282c8d",760:"components-design-system-molecules-comments",878:"component---src-pages-art-tsx",902:"component---src-templates-tag-tsx",906:"components-design-system-organism-read-next",977:"fc341bf219d695c399268ba56b1de68baa2a8f51"}[e]||e)+"-"+{21:"c55372b1b5f1473c918e",162:"6b1cb704e64b572bef3f",174:"6c04a55586c61012060b",186:"143b17b906de1c2af3c3",218:"1f0097102474e982384f",306:"b65f521dcc74f5046a60",359:"2a25576905cb38f31dab",364:"087cf3c419b65e4802e0",381:"e5c160e4e17369d178c6",403:"05fe440d90417dd61760",475:"907c4b02ecc9ebdf27b7",524:"22dc5f43f2aca83b3174",532:"72a9f10ee2b345dc3f24",536:"584ce6580a15cca266b5",542:"6ab2f68f34a159c98c9e",600:"252a9102dc52feb1d5e6",691:"631e4b9b889ef75e6204",729:"4a637dddf3e4cf09e835",731:"ab2affadf185a1bfb300",760:"0b14e7ac000249f566d4",843:"d04e46bb7a6833ed6b33",878:"36d8a361f3ccf90b4682",902:"7057be6a53fe0a721189",906:"fba083dcf7f504213947",977:"51df96b069d54262f68e"}[e]+".js"},s.miniCssF=function(e){return"styles.c98ca48beacca2fab051.css"},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},o="fabrizioduroni.it:",s.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var a,i;if(void 0!==n)for(var f=document.getElementsByTagName("script"),u=0;u 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"fabrizioduroni.it:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"21\":\"components-design-system-molecules-post-tags\",\"162\":\"component---src-pages-projects-chicio-coding-privacy-policy-tsx\",\"174\":\"components-bottom-art\",\"186\":\"component---src-templates-post-tsx\",\"218\":\"component---src-pages-404-tsx\",\"306\":\"component---cache-caches-gatsby-plugin-offline-app-shell-js\",\"359\":\"018bd8e218cd2234a0741acc5a707f32810aafaa\",\"364\":\"component---src-pages-cookie-policy-tsx\",\"381\":\"component---src-pages-projects-astronave-privacy-policy-tsx\",\"403\":\"component---src-pages-blog-tags-tsx\",\"475\":\"organism-footer\",\"524\":\"components-bottom-index\",\"532\":\"styles\",\"536\":\"component---src-templates-blog-tsx\",\"542\":\"component---src-pages-blog-archive-tsx\",\"600\":\"992fa8d325989540aeca99dc38709520a3b7c580\",\"691\":\"component---src-pages-index-tsx\",\"729\":\"eebb119054c2089d873b7cfa7bba2b49cf282c8d\",\"760\":\"components-design-system-molecules-comments\",\"878\":\"component---src-pages-art-tsx\",\"902\":\"component---src-templates-tag-tsx\",\"906\":\"components-design-system-organism-read-next\",\"977\":\"fc341bf219d695c399268ba56b1de68baa2a8f51\"}[chunkId] || chunkId) + \"-\" + {\"21\":\"c55372b1b5f1473c918e\",\"162\":\"6b1cb704e64b572bef3f\",\"174\":\"6c04a55586c61012060b\",\"186\":\"143b17b906de1c2af3c3\",\"218\":\"1f0097102474e982384f\",\"306\":\"b65f521dcc74f5046a60\",\"359\":\"2a25576905cb38f31dab\",\"364\":\"087cf3c419b65e4802e0\",\"381\":\"e5c160e4e17369d178c6\",\"403\":\"05fe440d90417dd61760\",\"475\":\"907c4b02ecc9ebdf27b7\",\"524\":\"50e0b44eba7559dc729c\",\"532\":\"72a9f10ee2b345dc3f24\",\"536\":\"584ce6580a15cca266b5\",\"542\":\"6ab2f68f34a159c98c9e\",\"600\":\"252a9102dc52feb1d5e6\",\"691\":\"631e4b9b889ef75e6204\",\"729\":\"4a637dddf3e4cf09e835\",\"731\":\"ab2affadf185a1bfb300\",\"760\":\"0b14e7ac000249f566d4\",\"843\":\"d04e46bb7a6833ed6b33\",\"878\":\"36d8a361f3ccf90b4682\",\"902\":\"7057be6a53fe0a721189\",\"906\":\"fba083dcf7f504213947\",\"977\":\"51df96b069d54262f68e\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"c98ca48beacca2fab051\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"__LOADABLE_LOADED_CHUNKS__\"] = self[\"__LOADABLE_LOADED_CHUNKS__\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"webpack-runtime-0b594b7203645a071205.js","mappings":"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","sources":["webpack://fabrizioduroni.it/webpack/runtime/chunk loaded","webpack://fabrizioduroni.it/webpack/runtime/create fake namespace object","webpack://fabrizioduroni.it/webpack/runtime/load script","webpack://fabrizioduroni.it/webpack/runtime/css loading","webpack://fabrizioduroni.it/webpack/bootstrap","webpack://fabrizioduroni.it/webpack/runtime/amd options","webpack://fabrizioduroni.it/webpack/runtime/compat get default export","webpack://fabrizioduroni.it/webpack/runtime/define property getters","webpack://fabrizioduroni.it/webpack/runtime/ensure chunk","webpack://fabrizioduroni.it/webpack/runtime/get javascript chunk filename","webpack://fabrizioduroni.it/webpack/runtime/get mini-css chunk filename","webpack://fabrizioduroni.it/webpack/runtime/global","webpack://fabrizioduroni.it/webpack/runtime/hasOwnProperty shorthand","webpack://fabrizioduroni.it/webpack/runtime/make namespace object","webpack://fabrizioduroni.it/webpack/runtime/publicPath","webpack://fabrizioduroni.it/webpack/runtime/jsonp chunk loading","webpack://fabrizioduroni.it/webpack/runtime/nonce"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"fabrizioduroni.it:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"21\":\"components-design-system-molecules-post-tags\",\"162\":\"component---src-pages-projects-chicio-coding-privacy-policy-tsx\",\"174\":\"components-bottom-art\",\"186\":\"component---src-templates-post-tsx\",\"218\":\"component---src-pages-404-tsx\",\"306\":\"component---cache-caches-gatsby-plugin-offline-app-shell-js\",\"359\":\"018bd8e218cd2234a0741acc5a707f32810aafaa\",\"364\":\"component---src-pages-cookie-policy-tsx\",\"381\":\"component---src-pages-projects-astronave-privacy-policy-tsx\",\"403\":\"component---src-pages-blog-tags-tsx\",\"475\":\"organism-footer\",\"524\":\"components-bottom-index\",\"532\":\"styles\",\"536\":\"component---src-templates-blog-tsx\",\"542\":\"component---src-pages-blog-archive-tsx\",\"600\":\"992fa8d325989540aeca99dc38709520a3b7c580\",\"691\":\"component---src-pages-index-tsx\",\"729\":\"eebb119054c2089d873b7cfa7bba2b49cf282c8d\",\"760\":\"components-design-system-molecules-comments\",\"878\":\"component---src-pages-art-tsx\",\"902\":\"component---src-templates-tag-tsx\",\"906\":\"components-design-system-organism-read-next\",\"977\":\"fc341bf219d695c399268ba56b1de68baa2a8f51\"}[chunkId] || chunkId) + \"-\" + {\"21\":\"c55372b1b5f1473c918e\",\"162\":\"6b1cb704e64b572bef3f\",\"174\":\"6c04a55586c61012060b\",\"186\":\"143b17b906de1c2af3c3\",\"218\":\"1f0097102474e982384f\",\"306\":\"b65f521dcc74f5046a60\",\"359\":\"2a25576905cb38f31dab\",\"364\":\"087cf3c419b65e4802e0\",\"381\":\"e5c160e4e17369d178c6\",\"403\":\"05fe440d90417dd61760\",\"475\":\"907c4b02ecc9ebdf27b7\",\"524\":\"22dc5f43f2aca83b3174\",\"532\":\"72a9f10ee2b345dc3f24\",\"536\":\"584ce6580a15cca266b5\",\"542\":\"6ab2f68f34a159c98c9e\",\"600\":\"252a9102dc52feb1d5e6\",\"691\":\"631e4b9b889ef75e6204\",\"729\":\"4a637dddf3e4cf09e835\",\"731\":\"ab2affadf185a1bfb300\",\"760\":\"0b14e7ac000249f566d4\",\"843\":\"d04e46bb7a6833ed6b33\",\"878\":\"36d8a361f3ccf90b4682\",\"902\":\"7057be6a53fe0a721189\",\"906\":\"fba083dcf7f504213947\",\"977\":\"51df96b069d54262f68e\"}[chunkId] + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".\" + \"c98ca48beacca2fab051\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t658: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(532|658)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"__LOADABLE_LOADED_CHUNKS__\"] = self[\"__LOADABLE_LOADED_CHUNKS__\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","call","m","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","key","splice","r","n","getter","__esModule","d","a","getPrototypeOf","obj","__proto__","t","value","mode","this","then","ns","create","def","current","indexOf","getOwnPropertyNames","forEach","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","test","promise","error","realSrc","message","name","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","id","chunkLoadingGlobal","self"],"sourceRoot":""} \ No newline at end of file diff --git a/webpack.stats.json b/webpack.stats.json index 1f84de7a5..b70adcf52 100644 --- a/webpack.stats.json +++ b/webpack.stats.json @@ -1 +1 @@ -{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-07e6ea9adc52412180f4.js","size":6392},{"name":"framework-ad6caae84042d6c01a56.js","size":141423},{"name":"app-d08355b41508117063b9.js","size":115707}],"filteredAssets":0,"assetsSize":263522,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":809147},"component---cache-caches-gatsby-plugin-offline-app-shell-js":{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js","assets":[{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js-b65f521dcc74f5046a60.js","size":523}],"filteredAssets":0,"assetsSize":523,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":1654},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"component---src-pages-404-tsx-1f0097102474e982384f.js","size":9092}],"filteredAssets":0,"assetsSize":9092,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":23261},"component---src-pages-art-tsx":{"name":"component---src-pages-art-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"component---src-pages-art-tsx-36d8a361f3ccf90b4682.js","size":4355}],"filteredAssets":0,"assetsSize":37998,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":4325880},"component---src-pages-blog-archive-tsx":{"name":"component---src-pages-blog-archive-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-blog-archive-tsx-6ab2f68f34a159c98c9e.js","size":3302}],"filteredAssets":0,"assetsSize":197739,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":795952},"component---src-pages-blog-tags-tsx":{"name":"component---src-pages-blog-tags-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-blog-tags-tsx-05fe440d90417dd61760.js","size":3041}],"filteredAssets":0,"assetsSize":197478,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":795166},"component---src-pages-cookie-policy-tsx":{"name":"component---src-pages-cookie-policy-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-cookie-policy-tsx-087cf3c419b65e4802e0.js","size":4780}],"filteredAssets":0,"assetsSize":199217,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":795453},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"component---src-pages-index-tsx-631e4b9b889ef75e6204.js","size":187226}],"filteredAssets":0,"assetsSize":256677,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":1037652},"component---src-pages-projects-astronave-privacy-policy-tsx":{"name":"component---src-pages-projects-astronave-privacy-policy-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-projects-astronave-privacy-policy-tsx-e5c160e4e17369d178c6.js","size":7451}],"filteredAssets":0,"assetsSize":201888,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":800677},"component---src-pages-projects-chicio-coding-privacy-policy-tsx":{"name":"component---src-pages-projects-chicio-coding-privacy-policy-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-projects-chicio-coding-privacy-policy-tsx-6b1cb704e64b572bef3f.js","size":7460}],"filteredAssets":0,"assetsSize":201897,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":800690},"component---src-templates-blog-tsx":{"name":"component---src-templates-blog-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-templates-blog-tsx-584ce6580a15cca266b5.js","size":13816}],"filteredAssets":0,"assetsSize":208253,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":827327},"component---src-templates-post-tsx":{"name":"component---src-templates-post-tsx","assets":[{"name":"styles.c98ca48beacca2fab051.css","size":142983},{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-templates-post-tsx-143b17b906de1c2af3c3.js","size":12992}],"filteredAssets":0,"assetsSize":350412,"filteredAuxiliaryAssets":51,"auxiliaryAssetsSize":1803985},"component---src-templates-tag-tsx":{"name":"component---src-templates-tag-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-templates-tag-tsx-7057be6a53fe0a721189.js","size":3337}],"filteredAssets":0,"assetsSize":197774,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":796333},"components-bottom-art":{"name":"components-bottom-art","assets":[{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"components-bottom-art-6c04a55586c61012060b.js","size":11316}],"filteredAssets":0,"assetsSize":22094,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":92652},"organism-footer":{"name":"organism-footer","assets":[{"name":"organism-footer-907c4b02ecc9ebdf27b7.js","size":14664}],"filteredAssets":0,"assetsSize":14664,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":36166},"components-bottom-index":{"name":"components-bottom-index","assets":[{"name":"components-bottom-index-50e0b44eba7559dc729c.js","size":61196}],"filteredAssets":0,"assetsSize":61196,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":69899},"components-design-system-organism-read-next":{"name":"components-design-system-organism-read-next","assets":[{"name":"components-design-system-organism-read-next-fba083dcf7f504213947.js","size":7269}],"filteredAssets":0,"assetsSize":7269,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":21549},"components-design-system-molecules-post-tags":{"name":"components-design-system-molecules-post-tags","assets":[{"name":"components-design-system-molecules-post-tags-c55372b1b5f1473c918e.js","size":2227}],"filteredAssets":0,"assetsSize":2227,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":6310},"components-design-system-molecules-comments":{"name":"components-design-system-molecules-comments","assets":[{"name":"components-design-system-molecules-comments-0b14e7ac000249f566d4.js","size":20514}],"filteredAssets":0,"assetsSize":20514,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":65957}},"assetsByChunkName":{"app":["webpack-runtime-07e6ea9adc52412180f4.js","framework-ad6caae84042d6c01a56.js","app-d08355b41508117063b9.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["component---cache-caches-gatsby-plugin-offline-app-shell-js-b65f521dcc74f5046a60.js"],"component---src-pages-404-tsx":["component---src-pages-404-tsx-1f0097102474e982384f.js"],"component---src-pages-art-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","component---src-pages-art-tsx-36d8a361f3ccf90b4682.js"],"component---src-pages-blog-archive-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-blog-archive-tsx-6ab2f68f34a159c98c9e.js"],"component---src-pages-blog-tags-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-blog-tags-tsx-05fe440d90417dd61760.js"],"component---src-pages-cookie-policy-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-cookie-policy-tsx-087cf3c419b65e4802e0.js"],"component---src-pages-index-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","component---src-pages-index-tsx-631e4b9b889ef75e6204.js"],"component---src-pages-projects-astronave-privacy-policy-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-projects-astronave-privacy-policy-tsx-e5c160e4e17369d178c6.js"],"component---src-pages-projects-chicio-coding-privacy-policy-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-projects-chicio-coding-privacy-policy-tsx-6b1cb704e64b572bef3f.js"],"component---src-templates-blog-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-templates-blog-tsx-584ce6580a15cca266b5.js"],"component---src-templates-post-tsx":["styles.c98ca48beacca2fab051.css","eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-templates-post-tsx-143b17b906de1c2af3c3.js"],"component---src-templates-tag-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-templates-tag-tsx-7057be6a53fe0a721189.js"],"components-bottom-art":["fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","components-bottom-art-6c04a55586c61012060b.js"],"organism-footer":["organism-footer-907c4b02ecc9ebdf27b7.js"],"components-bottom-index":["components-bottom-index-50e0b44eba7559dc729c.js"],"components-design-system-organism-read-next":["components-design-system-organism-read-next-fba083dcf7f504213947.js"],"components-design-system-molecules-post-tags":["components-design-system-molecules-post-tags-c55372b1b5f1473c918e.js"],"components-design-system-molecules-comments":["components-design-system-molecules-comments-0b14e7ac000249f566d4.js"]},"childAssetsByChunkName":{}} \ No newline at end of file +{"name":"build-javascript","namedChunkGroups":{"app":{"name":"app","assets":[{"name":"webpack-runtime-0b594b7203645a071205.js","size":6392},{"name":"framework-ad6caae84042d6c01a56.js","size":141423},{"name":"app-d08355b41508117063b9.js","size":115707}],"filteredAssets":0,"assetsSize":263522,"filteredAuxiliaryAssets":3,"auxiliaryAssetsSize":809147},"component---cache-caches-gatsby-plugin-offline-app-shell-js":{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js","assets":[{"name":"component---cache-caches-gatsby-plugin-offline-app-shell-js-b65f521dcc74f5046a60.js","size":523}],"filteredAssets":0,"assetsSize":523,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":1654},"component---src-pages-404-tsx":{"name":"component---src-pages-404-tsx","assets":[{"name":"component---src-pages-404-tsx-1f0097102474e982384f.js","size":9092}],"filteredAssets":0,"assetsSize":9092,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":23261},"component---src-pages-art-tsx":{"name":"component---src-pages-art-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"component---src-pages-art-tsx-36d8a361f3ccf90b4682.js","size":4355}],"filteredAssets":0,"assetsSize":37998,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":4325880},"component---src-pages-blog-archive-tsx":{"name":"component---src-pages-blog-archive-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-blog-archive-tsx-6ab2f68f34a159c98c9e.js","size":3302}],"filteredAssets":0,"assetsSize":197739,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":795952},"component---src-pages-blog-tags-tsx":{"name":"component---src-pages-blog-tags-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-blog-tags-tsx-05fe440d90417dd61760.js","size":3041}],"filteredAssets":0,"assetsSize":197478,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":795166},"component---src-pages-cookie-policy-tsx":{"name":"component---src-pages-cookie-policy-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-cookie-policy-tsx-087cf3c419b65e4802e0.js","size":4780}],"filteredAssets":0,"assetsSize":199217,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":795453},"component---src-pages-index-tsx":{"name":"component---src-pages-index-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"component---src-pages-index-tsx-631e4b9b889ef75e6204.js","size":187226}],"filteredAssets":0,"assetsSize":256677,"filteredAuxiliaryAssets":4,"auxiliaryAssetsSize":1037652},"component---src-pages-projects-astronave-privacy-policy-tsx":{"name":"component---src-pages-projects-astronave-privacy-policy-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-projects-astronave-privacy-policy-tsx-e5c160e4e17369d178c6.js","size":7451}],"filteredAssets":0,"assetsSize":201888,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":800677},"component---src-pages-projects-chicio-coding-privacy-policy-tsx":{"name":"component---src-pages-projects-chicio-coding-privacy-policy-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-pages-projects-chicio-coding-privacy-policy-tsx-6b1cb704e64b572bef3f.js","size":7460}],"filteredAssets":0,"assetsSize":201897,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":800690},"component---src-templates-blog-tsx":{"name":"component---src-templates-blog-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-templates-blog-tsx-584ce6580a15cca266b5.js","size":13816}],"filteredAssets":0,"assetsSize":208253,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":827327},"component---src-templates-post-tsx":{"name":"component---src-templates-post-tsx","assets":[{"name":"styles.c98ca48beacca2fab051.css","size":142983},{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-templates-post-tsx-143b17b906de1c2af3c3.js","size":12992}],"filteredAssets":0,"assetsSize":350412,"filteredAuxiliaryAssets":51,"auxiliaryAssetsSize":1803985},"component---src-templates-tag-tsx":{"name":"component---src-templates-tag-tsx","assets":[{"name":"eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","size":33643},{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","size":25030},{"name":"992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","size":124986},{"name":"component---src-templates-tag-tsx-7057be6a53fe0a721189.js","size":3337}],"filteredAssets":0,"assetsSize":197774,"filteredAuxiliaryAssets":5,"auxiliaryAssetsSize":796333},"components-bottom-art":{"name":"components-bottom-art","assets":[{"name":"fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","size":10778},{"name":"components-bottom-art-6c04a55586c61012060b.js","size":11316}],"filteredAssets":0,"assetsSize":22094,"filteredAuxiliaryAssets":2,"auxiliaryAssetsSize":92652},"organism-footer":{"name":"organism-footer","assets":[{"name":"organism-footer-907c4b02ecc9ebdf27b7.js","size":14664}],"filteredAssets":0,"assetsSize":14664,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":36166},"components-bottom-index":{"name":"components-bottom-index","assets":[{"name":"components-bottom-index-22dc5f43f2aca83b3174.js","size":61662}],"filteredAssets":0,"assetsSize":61662,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":70586},"components-design-system-organism-read-next":{"name":"components-design-system-organism-read-next","assets":[{"name":"components-design-system-organism-read-next-fba083dcf7f504213947.js","size":7269}],"filteredAssets":0,"assetsSize":7269,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":21549},"components-design-system-molecules-post-tags":{"name":"components-design-system-molecules-post-tags","assets":[{"name":"components-design-system-molecules-post-tags-c55372b1b5f1473c918e.js","size":2227}],"filteredAssets":0,"assetsSize":2227,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":6310},"components-design-system-molecules-comments":{"name":"components-design-system-molecules-comments","assets":[{"name":"components-design-system-molecules-comments-0b14e7ac000249f566d4.js","size":20514}],"filteredAssets":0,"assetsSize":20514,"filteredAuxiliaryAssets":1,"auxiliaryAssetsSize":65957}},"assetsByChunkName":{"app":["webpack-runtime-0b594b7203645a071205.js","framework-ad6caae84042d6c01a56.js","app-d08355b41508117063b9.js"],"component---cache-caches-gatsby-plugin-offline-app-shell-js":["component---cache-caches-gatsby-plugin-offline-app-shell-js-b65f521dcc74f5046a60.js"],"component---src-pages-404-tsx":["component---src-pages-404-tsx-1f0097102474e982384f.js"],"component---src-pages-art-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","component---src-pages-art-tsx-36d8a361f3ccf90b4682.js"],"component---src-pages-blog-archive-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-blog-archive-tsx-6ab2f68f34a159c98c9e.js"],"component---src-pages-blog-tags-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-blog-tags-tsx-05fe440d90417dd61760.js"],"component---src-pages-cookie-policy-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-cookie-policy-tsx-087cf3c419b65e4802e0.js"],"component---src-pages-index-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","component---src-pages-index-tsx-631e4b9b889ef75e6204.js"],"component---src-pages-projects-astronave-privacy-policy-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-projects-astronave-privacy-policy-tsx-e5c160e4e17369d178c6.js"],"component---src-pages-projects-chicio-coding-privacy-policy-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-pages-projects-chicio-coding-privacy-policy-tsx-6b1cb704e64b572bef3f.js"],"component---src-templates-blog-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-templates-blog-tsx-584ce6580a15cca266b5.js"],"component---src-templates-post-tsx":["styles.c98ca48beacca2fab051.css","eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-templates-post-tsx-143b17b906de1c2af3c3.js"],"component---src-templates-tag-tsx":["eebb119054c2089d873b7cfa7bba2b49cf282c8d-4a637dddf3e4cf09e835.js","fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","018bd8e218cd2234a0741acc5a707f32810aafaa-2a25576905cb38f31dab.js","992fa8d325989540aeca99dc38709520a3b7c580-252a9102dc52feb1d5e6.js","component---src-templates-tag-tsx-7057be6a53fe0a721189.js"],"components-bottom-art":["fc341bf219d695c399268ba56b1de68baa2a8f51-51df96b069d54262f68e.js","components-bottom-art-6c04a55586c61012060b.js"],"organism-footer":["organism-footer-907c4b02ecc9ebdf27b7.js"],"components-bottom-index":["components-bottom-index-22dc5f43f2aca83b3174.js"],"components-design-system-organism-read-next":["components-design-system-organism-read-next-fba083dcf7f504213947.js"],"components-design-system-molecules-post-tags":["components-design-system-molecules-post-tags-c55372b1b5f1473c918e.js"],"components-design-system-molecules-comments":["components-design-system-molecules-comments-0b14e7ac000249f566d4.js"]},"childAssetsByChunkName":{}} \ No newline at end of file