├── .gitignore
├── .idea
├── .gitignore
├── checkstyle-idea.xml
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── compiler.xml
├── google-java-format.xml
├── gradle.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── jarRepositories.xml
├── jpa-buddy.xml
├── libraries
│ ├── Gradle__ch_qos_logback_logback_classic_1_2_3.xml
│ ├── Gradle__ch_qos_logback_logback_core_1_2_3.xml
│ ├── Gradle__com_fasterxml_jackson_core_jackson_annotations_2_12_3.xml
│ ├── Gradle__com_fasterxml_jackson_core_jackson_core_2_12_3.xml
│ ├── Gradle__com_fasterxml_jackson_core_jackson_databind_2_12_3.xml
│ ├── Gradle__com_h2database_h2_2_1_210.xml
│ ├── Gradle__com_squareup_okhttp3_okhttp_3_12_12.xml
│ ├── Gradle__com_squareup_okio_okio_1_15_0.xml
│ ├── Gradle__commons_codec_commons_codec_1_15.xml
│ ├── Gradle__de_flapdoodle_de_flapdoodle_os_1_2_3.xml
│ ├── Gradle__de_flapdoodle_embed_de_flapdoodle_embed_mongo_3_5_2.xml
│ ├── Gradle__de_flapdoodle_embed_de_flapdoodle_embed_mongo_packageresolver_1_0_12.xml
│ ├── Gradle__de_flapdoodle_embed_de_flapdoodle_embed_process_3_2_7.xml
│ ├── Gradle__io_dropwizard_metrics_metrics_core_4_1_21.xml
│ ├── Gradle__io_micrometer_micrometer_commons_1_10_0.xml
│ ├── Gradle__io_micrometer_micrometer_core_1_10_0.xml
│ ├── Gradle__io_micrometer_micrometer_observation_1_10_0.xml
│ ├── Gradle__io_projectreactor_tools_blockhound_1_0_2_RELEASE.xml
│ ├── Gradle__io_projectreactor_tools_blockhound_1_0_6_RELEASE.xml
│ ├── Gradle__io_r2dbc_r2dbc_h2_0_9_1_RELEASE.xml
│ ├── Gradle__io_r2dbc_r2dbc_spi_0_9_1_RELEASE.xml
│ ├── Gradle__io_socket_engine_io_client_1_0_2.xml
│ ├── Gradle__io_socket_socket_io_client_1_0_2.xml
│ ├── Gradle__net_bytebuddy_byte_buddy_1_10_20.xml
│ ├── Gradle__net_bytebuddy_byte_buddy_agent_1_10_20.xml
│ ├── Gradle__net_java_dev_jna_jna_5_12_1.xml
│ ├── Gradle__net_java_dev_jna_jna_platform_5_12_1.xml
│ ├── Gradle__org_apache_commons_commons_compress_1_21.xml
│ ├── Gradle__org_apache_commons_commons_lang3_3_12_0.xml
│ ├── Gradle__org_apiguardian_apiguardian_api_1_1_2.xml
│ ├── Gradle__org_assertj_assertj_core_3_19_0.xml
│ ├── Gradle__org_hdrhistogram_HdrHistogram_2_1_12.xml
│ ├── Gradle__org_json_json_20090211.xml
│ ├── Gradle__org_junit_jupiter_junit_jupiter_api_5_9_1.xml
│ ├── Gradle__org_junit_jupiter_junit_jupiter_engine_5_9_1.xml
│ ├── Gradle__org_junit_platform_junit_platform_commons_1_9_1.xml
│ ├── Gradle__org_junit_platform_junit_platform_engine_1_9_1.xml
│ ├── Gradle__org_latencyutils_LatencyUtils_2_0_3.xml
│ ├── Gradle__org_mockito_mockito_core_3_9_0.xml
│ ├── Gradle__org_mongodb_bson_4_7_0.xml
│ ├── Gradle__org_mongodb_bson_record_codec_4_7_0.xml
│ ├── Gradle__org_mongodb_mongodb_driver_core_4_7_0.xml
│ ├── Gradle__org_mongodb_mongodb_driver_reactivestreams_4_7_0.xml
│ ├── Gradle__org_objenesis_objenesis_3_2.xml
│ ├── Gradle__org_opentest4j_opentest4j_1_2_0.xml
│ ├── Gradle__org_reactivestreams_reactive_streams_1_0_4.xml
│ ├── Gradle__org_slf4j_slf4j_api_1_7_25.xml
│ └── Gradle__org_slf4j_slf4j_api_1_7_36.xml
├── misc.xml
├── modules.xml
├── modules
│ ├── Reactive Advanced
│ │ ├── Control Backpressure
│ │ │ ├── task1
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task1.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task1.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task1.test.iml
│ │ │ ├── task2
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task2.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task2.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task2.test.iml
│ │ │ ├── task3
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task3.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task3.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task3.test.iml
│ │ │ ├── task4
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task4.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task4.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task4.test.iml
│ │ │ └── task5
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task5.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task5.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Control_Backpressure-task5.test.iml
│ │ ├── Crypto Tracker
│ │ │ ├── application
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-application.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-application.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-application.test.iml
│ │ │ ├── common
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-common.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-common.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-common.test.iml
│ │ │ ├── crypto-service-idl
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-crypto-service-idl.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-crypto-service-idl.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-crypto-service-idl.test.iml
│ │ │ ├── crypto-service
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-crypto-service.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-crypto-service.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-crypto-service.test.iml
│ │ │ ├── price-service-idl
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-price-service-idl.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-price-service-idl.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-price-service-idl.test.iml
│ │ │ ├── price-service
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-price-service.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-price-service.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-price-service.test.iml
│ │ │ ├── trade-service-idl
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-trade-service-idl.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-trade-service-idl.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-trade-service-idl.test.iml
│ │ │ └── trade-service
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-trade-service.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-trade-service.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Crypto_Tracker-trade-service.test.iml
│ │ ├── Hot and Sharable
│ │ │ ├── task1
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task1.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task1.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task1.test.iml
│ │ │ ├── task2
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task2.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task2.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task2.test.iml
│ │ │ └── task3
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task3.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task3.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Hot_and_Sharable-task3.test.iml
│ │ ├── Multiple Sources
│ │ │ └── Fast Media Server
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multiple_Sources-Fast_Media_Server.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multiple_Sources-Fast_Media_Server.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multiple_Sources-Fast_Media_Server.test.iml
│ │ ├── Multithreading Operators
│ │ │ ├── Change Thread Up and Down
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Change_Thread_Up_and_Down.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Change_Thread_Up_and_Down.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Change_Thread_Up_and_Down.test.iml
│ │ │ ├── Data Parallelization
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Data_Parallelization.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Data_Parallelization.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Data_Parallelization.test.iml
│ │ │ ├── Handling Blocking DB Access
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Handling_Blocking_DB_Access.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Handling_Blocking_DB_Access.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Handling_Blocking_DB_Access.test.iml
│ │ │ ├── NonBlocking Generator
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlocking_Generator.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlocking_Generator.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlocking_Generator.test.iml
│ │ │ ├── NonBlockingCreateTempFile
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlockingCreateTempFile.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlockingCreateTempFile.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlockingCreateTempFile.test.iml
│ │ │ ├── NonBlockingTextFileStream
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlockingTextFileStream.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlockingTextFileStream.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-NonBlockingTextFileStream.test.iml
│ │ │ ├── Parallel Concurrency
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Parallel_Concurrency.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Parallel_Concurrency.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Parallel_Concurrency.test.iml
│ │ │ └── Parallelize by Tasks
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Parallelize_by_Tasks.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Parallelize_by_Tasks.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Multithreading_Operators-Parallelize_by_Tasks.test.iml
│ │ └── Resilience
│ │ │ ├── DistributedTransaction
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-DistributedTransaction.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-DistributedTransaction.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-DistributedTransaction.test.iml
│ │ │ ├── ResilientBackpressure
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-ResilientBackpressure.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-ResilientBackpressure.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-ResilientBackpressure.test.iml
│ │ │ ├── task1
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task1.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task1.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task1.test.iml
│ │ │ ├── task2
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task2.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task2.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task2.test.iml
│ │ │ ├── task3
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task3.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task3.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task3.test.iml
│ │ │ ├── task4
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task4.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task4.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task4.test.iml
│ │ │ ├── task5
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task5.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task5.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task5.test.iml
│ │ │ ├── task6
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task6.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task6.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task6.test.iml
│ │ │ ├── task7
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task7.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task7.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task7.test.iml
│ │ │ ├── task8
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task8.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task8.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task8.test.iml
│ │ │ └── task9
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task9.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task9.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Advanced-Resilience-task9.test.iml
│ ├── Reactive Essentials
│ │ ├── Async Publishers
│ │ │ ├── DelayExecution
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-DelayExecution.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-DelayExecution.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-DelayExecution.test.iml
│ │ │ ├── FutureHttpRequest
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-FutureHttpRequest.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-FutureHttpRequest.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-FutureHttpRequest.test.iml
│ │ │ ├── ListenableHttpRequest
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-ListenableHttpRequest.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-ListenableHttpRequest.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-ListenableHttpRequest.test.iml
│ │ │ └── SchedulePeriodic
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-SchedulePeriodic.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-SchedulePeriodic.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Async_Publishers-SchedulePeriodic.test.iml
│ │ ├── Common Operators
│ │ │ ├── BetterCodeReadability
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-BetterCodeReadability.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-BetterCodeReadability.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-BetterCodeReadability.test.iml
│ │ │ ├── FindUsers
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FindUsers.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FindUsers.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FindUsers.test.iml
│ │ │ ├── FizzBuzz
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FizzBuzz.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FizzBuzz.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FizzBuzz.test.iml
│ │ │ ├── FlattenWords
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FlattenWords.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FlattenWords.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-FlattenWords.test.iml
│ │ │ ├── LettersCounter
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-LettersCounter.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-LettersCounter.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-LettersCounter.test.iml
│ │ │ ├── MongoDocsConverter
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-MongoDocsConverter.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-MongoDocsConverter.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-MongoDocsConverter.test.iml
│ │ │ ├── ProductCatalog
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-ProductCatalog.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-ProductCatalog.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-ProductCatalog.test.iml
│ │ │ ├── SequenceOfNetworkCalls
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-SequenceOfNetworkCalls.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-SequenceOfNetworkCalls.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-SequenceOfNetworkCalls.test.iml
│ │ │ ├── VisitorsByCountryCounter
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-VisitorsByCountryCounter.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-VisitorsByCountryCounter.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-VisitorsByCountryCounter.test.iml
│ │ │ └── VisitorsByPeriodCounter
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-VisitorsByPeriodCounter.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-VisitorsByPeriodCounter.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Common_Operators-VisitorsByPeriodCounter.test.iml
│ │ ├── Streaming App
│ │ │ ├── application
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-application.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-application.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-application.test.iml
│ │ │ ├── common
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-common.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-common.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-common.test.iml
│ │ │ ├── crypto-service-idl
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-crypto-service-idl.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-crypto-service-idl.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-crypto-service-idl.test.iml
│ │ │ ├── crypto-service
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-crypto-service.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-crypto-service.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-crypto-service.test.iml
│ │ │ ├── price-service-idl
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-price-service-idl.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-price-service-idl.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-price-service-idl.test.iml
│ │ │ └── price-service
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-price-service.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-price-service.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Streaming_App-price-service.test.iml
│ │ ├── Sync Publishers
│ │ │ ├── CreateSequence
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-CreateSequence.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-CreateSequence.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-CreateSequence.test.iml
│ │ │ ├── CreateTempFile
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-CreateTempFile.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-CreateTempFile.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-CreateTempFile.test.iml
│ │ │ ├── FibonacciSequence
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-FibonacciSequence.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-FibonacciSequence.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-FibonacciSequence.test.iml
│ │ │ ├── GenerateUUID
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-GenerateUUID.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-GenerateUUID.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-GenerateUUID.test.iml
│ │ │ ├── HandleGetRequest
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-HandleGetRequest.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-HandleGetRequest.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-HandleGetRequest.test.iml
│ │ │ ├── PropertiesSource
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-PropertiesSource.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-PropertiesSource.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-PropertiesSource.test.iml
│ │ │ ├── TextFileStream
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-TextFileStream.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-TextFileStream.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-TextFileStream.test.iml
│ │ │ └── ValidateDuration
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-ValidateDuration.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-ValidateDuration.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Sync_Publishers-ValidateDuration.test.iml
│ │ └── Testing
│ │ │ ├── Check Flux
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Check_Flux.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Check_Flux.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Check_Flux.test.iml
│ │ │ ├── Test Publisher
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Test_Publisher.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Test_Publisher.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Test_Publisher.test.iml
│ │ │ └── Test Timed Flux
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Test_Timed_Flux.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Test_Timed_Flux.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Essentials-Testing-Test_Timed_Flux.test.iml
│ ├── Reactive Expert
│ │ ├── Context
│ │ │ ├── task1
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Context-task1.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Context-task1.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Expert-Context-task1.test.iml
│ │ │ ├── task2
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Context-task2.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Context-task2.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Expert-Context-task2.test.iml
│ │ │ └── task3
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Context-task3.iml
│ │ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Context-task3.main.iml
│ │ │ │ └── ReactiveProgrammingCourse.Reactive_Expert-Context-task3.test.iml
│ │ └── Debugging
│ │ │ ├── task1
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task1.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task1.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task1.test.iml
│ │ │ ├── task2
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task2.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task2.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task2.test.iml
│ │ │ └── task3
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task3.iml
│ │ │ ├── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task3.main.iml
│ │ │ └── ReactiveProgrammingCourse.Reactive_Expert-Debugging-task3.test.iml
│ ├── ReactiveProgrammingCourse.iml
│ └── util
│ │ ├── ReactiveProgrammingCourse.util.iml
│ │ ├── ReactiveProgrammingCourse.util.main.iml
│ │ └── ReactiveProgrammingCourse.util.test.iml
└── vcs.xml
├── Reactive Advanced
├── Control Backpressure
│ ├── BackpressureProblem
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task.ru.html
│ │ └── test
│ │ │ └── MultipleSourcesTask5Tests.java
│ ├── lesson-info.yaml
│ ├── task1
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── RefCounted.java
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── BackpressureTask1Tests.java
│ ├── task2
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── BackpressureTask2Tests.java
│ ├── task3
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── BackpressureTask3Tests.java
│ ├── task4
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── StatisticSnapshot.java
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── BackpressureTask4Tests.java
│ └── task5
│ │ ├── build.gradle
│ │ ├── src
│ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ └── BackpressureTask5Tests.java
├── Crypto Tracker
│ ├── application
│ │ ├── build.gradle
│ │ ├── resources
│ │ │ ├── logback.xml
│ │ │ └── ui
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── index.html
│ │ │ │ └── main.js
│ │ ├── src
│ │ │ ├── ApplicationRunner.java
│ │ │ ├── controller
│ │ │ │ └── WSHandler.java
│ │ │ └── utils
│ │ │ │ ├── EmbeddedMongo.java
│ │ │ │ ├── H2Helper.java
│ │ │ │ ├── HttpResourceResolver.java
│ │ │ │ ├── JsonUtils.java
│ │ │ │ ├── MetricsConfig.java
│ │ │ │ └── NettyUtils.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CryptoApplicationTests.java
│ ├── build.gradle
│ ├── common
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── dto
│ │ │ └── MessageDTO.java
│ │ │ └── service
│ │ │ └── utils
│ │ │ ├── MessageMapper.java
│ │ │ └── Sum.java
│ ├── crypto-service-idl
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── service
│ │ │ └── CryptoService.java
│ ├── crypto-service
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── service
│ │ │ │ └── external
│ │ │ │ ├── CryptoCompareClient.java
│ │ │ │ ├── CryptoCompareService.java
│ │ │ │ └── utils
│ │ │ │ ├── MessageUnpacker.java
│ │ │ │ ├── PriceMessageUnpacker.java
│ │ │ │ └── TradeMessageUnpacker.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── service
│ │ │ └── external
│ │ │ └── CryptoServiceTests.java
│ ├── lesson-info.yaml
│ ├── price-service-idl
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── service
│ │ │ └── PriceService.java
│ ├── price-service
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── service
│ │ │ │ └── impl
│ │ │ │ └── DefaultPriceService.java
│ │ └── test
│ │ │ └── service
│ │ │ └── impl
│ │ │ └── PriceServiceTests.java
│ ├── trade-service-idl
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── service
│ │ │ │ └── TradeService.java
│ │ └── test
│ │ │ └── Tests.java
│ └── trade-service
│ │ ├── build.gradle
│ │ ├── src
│ │ ├── domain
│ │ │ ├── Trade.java
│ │ │ └── utils
│ │ │ │ └── DomainMapper.java
│ │ ├── repository
│ │ │ ├── TradeRepository.java
│ │ │ └── impl
│ │ │ │ ├── H2TradeRepository.java
│ │ │ │ └── MongoTradeRepository.java
│ │ └── service
│ │ │ └── impl
│ │ │ └── DefaultTradeService.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ └── service
│ │ └── impl
│ │ └── TradeServiceTests.java
├── Hot and Sharable
│ ├── InMemoryCache
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── InMemoryCachingRepositoryTask.java
│ │ │ ├── UsersProfile.java
│ │ │ └── UsersProfileRepository.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── InMemoryCachingRepositoryTests.java
│ ├── lesson-info.yaml
│ ├── task1
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── HnSTask1Tests.java
│ ├── task2
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── HnSTask2Tests.java
│ └── task3
│ │ ├── build.gradle
│ │ ├── src
│ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ └── HnSTask3Tests.java
├── Multiple Sources
│ ├── EfficientPagination
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── AsyncRestTemplate.java
│ │ │ ├── TimezonedbResponse.java
│ │ │ ├── TimezonedbResponseZone.java
│ │ │ └── TimezonesDbClient.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── TimezonesDbClientTests.java
│ ├── Fast Media Server
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── MediaService.java
│ │ │ ├── Server.java
│ │ │ ├── ServersCatalogue.java
│ │ │ └── Video.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CPTask2Tests.java
│ ├── LogsObserver
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── DiscoveryService.java
│ │ │ ├── LogsObserverTask.java
│ │ │ └── Server.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ ├── task.ru.html
│ │ └── test
│ │ │ └── LogsObserverTests.java
│ ├── MoviePagination
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── Movie.java
│ │ │ ├── MovieService.java
│ │ │ ├── MoviesRepository.java
│ │ │ └── Page.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ ├── task.ru.html
│ │ └── test
│ │ │ └── MovieServiceTests.java
│ ├── OrdersProcessing
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── CurrencyRepository.java
│ │ │ ├── CustomerInfo.java
│ │ │ ├── Order.java
│ │ │ ├── OrderProcessingService.java
│ │ │ ├── OrdersRepository.java
│ │ │ ├── Payment.java
│ │ │ └── Product.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── OrderProcessingServiceTests.java
│ ├── SpeedupExecution
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── AsyncRestTemplate.java
│ │ │ ├── Cart.java
│ │ │ ├── ExecutionOptimizationTask.java
│ │ │ ├── PageView.java
│ │ │ ├── RestTemplate.java
│ │ │ ├── User.java
│ │ │ └── Wallet.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ExecutionOptimizationTests.java
│ └── lesson-info.yaml
├── Multithreading Operators
│ ├── Change Thread Up and Down
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── MultithreadingOperatorsTask4Tests.java
│ ├── Data Parallelization
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── MultithreadingOperatorsTask3Tests.java
│ ├── Handling Blocking DB Access
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── BlockingPaymentsHistoryJpaRepository.java
│ │ │ ├── ConnectionsPool.java
│ │ │ ├── Payment.java
│ │ │ ├── PaymentService.java
│ │ │ ├── PaymentsHistoryJpaRepository.java
│ │ │ ├── PaymentsHistoryReactiveJpaRepository.java
│ │ │ └── ReactivePaymentsHistoryJpaRepositoryAdapter.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CPTask3Tests.java
│ ├── NonBlocking Generator
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── NonBlockingGenerateUUIDTask.java
│ │ │ └── UUIDGenerator.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── NonBlockingGenerateUUIDTaskTests.java
│ ├── NonBlockingCreateTempFile
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── Files.java
│ │ │ └── NonBlockingTempFileTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── NonBlockingTempFileTaskTests.java
│ ├── NonBlockingTextFileStream
│ │ ├── build.gradle
│ │ ├── resources
│ │ │ └── testfile.txt
│ │ ├── src
│ │ │ ├── Files.java
│ │ │ └── NonBlockingTextFileStreamTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── NonBlockingTextFileStreamTaskTests.java
│ ├── Parallel Concurrency
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── MultithreadingOperatorsTask5Tests.java
│ ├── Parallelize by Tasks
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── DecoupleDeserializationTask.java
│ │ │ ├── Deserializer.java
│ │ │ └── Event.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── DecoupleDeserializationTaskTests.java
│ └── lesson-info.yaml
├── Resilience
│ ├── DistributedTransaction
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── Connection.java
│ │ │ ├── DatabaseApi.java
│ │ │ ├── DatabasesIntegration.java
│ │ │ ├── ErrorResult.java
│ │ │ ├── Result.java
│ │ │ └── SuccessResult.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CPTask5Tests.java
│ ├── ResilientBackpressure
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── DataUploaderService.java
│ │ │ ├── HttpClient.java
│ │ │ └── OrderedByteBuffer.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ ├── CPTask4Tests.java
│ │ │ └── TrickyHttpClient.java
│ ├── lesson-info.yaml
│ ├── task1
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask1Tests.java
│ ├── task2
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask2Tests.java
│ ├── task3
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask3Tests.java
│ ├── task4
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask4Tests.java
│ ├── task5
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask5Tests.java
│ ├── task6
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask6Tests.java
│ ├── task7
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask7Tests.java
│ ├── task8
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ResilienceTask8Tests.java
│ └── task9
│ │ ├── build.gradle
│ │ ├── src
│ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ └── ResilienceTask9Tests.java
└── section-info.yaml
├── Reactive Essentials
├── Async Publishers
│ ├── DelayExecution
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── DelayExecutionTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── DelayExecutionTaskTests.java
│ ├── FutureHttpRequest
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── AsyncRestTemplate.java
│ │ │ └── FutureHttpGetRequestTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── AsyncHttpGetRequestTaskTests.java
│ ├── ListenableHttpRequest
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── AsyncHttpClient.java
│ │ │ ├── ListenableFuture.java
│ │ │ └── ListenableHttpGetRequestTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── ListenableHttpGetRequestTaskTests.java
│ ├── SchedulePeriodic
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── SchedulePeriodicTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── SchedulePeriodicTaskTests.java
│ └── lesson-info.yaml
├── Common Operators
│ ├── BetterCodeReadability
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── CommonOperatorsTask5Tests.java
│ ├── DynamicMessageRebalancing
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── KafkaClient.java
│ │ │ ├── KafkaLoadbalancer.java
│ │ │ ├── LoadbalancedMessageProcessorTask.java
│ │ │ └── MessageProcessor.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── LoadbalancedMessageProcessorTests.java
│ ├── FillYourIceCream
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── MultipleSourcesTask8Tests.java
│ ├── FindUsers
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── FindElementsInRepositoryTask.java
│ │ │ ├── User.java
│ │ │ ├── UserNotFoundException.java
│ │ │ └── UsersRepository.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── FindElementsInRepositoryTests.java
│ ├── FizzBuzz
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── CommonOperatorsTask11Tests.java
│ ├── FlattenWords
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── FlattenWordsTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── FlattenWordsTests.java
│ ├── LettersCounter
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── LetterCountersTask.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ ├── task.ru.html
│ │ └── test
│ │ │ └── LetterCountersTests.java
│ ├── MongoDocsConverter
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── MongoCollectionUserQueryTask.java
│ │ │ └── User.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── MongoCollectionUserQueryTaskTests.java
│ ├── ProductCatalog
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── Order.java
│ │ │ ├── Product.java
│ │ │ ├── ProductsCatalog.java
│ │ │ └── UserActivityUtils.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CPTask1Tests.java
│ ├── SequenceOfNetworkCalls
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── BroadCastControllerTask.java
│ │ │ ├── DiscoveryService.java
│ │ │ └── HttpClient.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── BroadCastControllerTaskTests.java
│ ├── ValidQueryExecution
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── R2dbcTemplate.java
│ │ │ ├── User.java
│ │ │ ├── ValidQueryExecutionTask.java
│ │ │ └── Validator.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── ValidQueryExecutionTests.java
│ ├── VisitorsByCountryCounter
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── User.java
│ │ │ ├── UserNotFoundException.java
│ │ │ ├── VisitorsByCountryTask.java
│ │ │ └── VisitorsRepository.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── VisitorsByCountryTests.java
│ ├── VisitorsByPeriodCounter
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── User.java
│ │ │ ├── UserNotFoundException.java
│ │ │ ├── VisitorsByPeriodTask.java
│ │ │ └── VisitorsService.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── VisitorsByPeriodTests.java
│ └── lesson-info.yaml
├── Streaming App
│ ├── application
│ │ ├── build.gradle
│ │ ├── resources
│ │ │ ├── logback.xml
│ │ │ └── ui
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── index.html
│ │ │ │ └── main.js
│ │ ├── src
│ │ │ ├── ApplicationRunner.java
│ │ │ ├── controller
│ │ │ │ └── WSHandler.java
│ │ │ └── utils
│ │ │ │ ├── HttpResourceResolver.java
│ │ │ │ ├── JsonUtils.java
│ │ │ │ └── NettyUtils.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CryptoApplicationTests.java
│ ├── build.gradle
│ ├── common
│ │ ├── build.gradle
│ │ └── src
│ │ │ ├── dto
│ │ │ └── MessageDTO.java
│ │ │ └── service
│ │ │ └── utils
│ │ │ ├── MessageMapper.java
│ │ │ └── Sum.java
│ ├── crypto-service-idl
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── service
│ │ │ └── CryptoService.java
│ ├── crypto-service
│ │ ├── build.gradle
│ │ ├── resources
│ │ │ └── mockito-extensions
│ │ │ │ └── org.mockito.plugins.MockMaker
│ │ ├── src
│ │ │ └── service
│ │ │ │ └── external
│ │ │ │ ├── CryptoCompareClient.java
│ │ │ │ ├── CryptoCompareService.java
│ │ │ │ └── utils
│ │ │ │ ├── MessageUnpacker.java
│ │ │ │ ├── PriceMessageUnpacker.java
│ │ │ │ └── TradeMessageUnpacker.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── service
│ │ │ └── external
│ │ │ └── CryptoServiceTests.java
│ ├── lesson-info.yaml
│ ├── price-service-idl
│ │ ├── build.gradle
│ │ └── src
│ │ │ └── service
│ │ │ └── PriceService.java
│ └── price-service
│ │ ├── build.gradle
│ │ ├── src
│ │ └── service
│ │ │ └── impl
│ │ │ └── DefaultPriceService.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ └── service
│ │ └── impl
│ │ └── PriceServiceTests.java
├── Sync Publishers
│ ├── CreateSequence
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── CreateSequenceTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CreateSequenceTests.java
│ ├── CreateTempFile
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── CreateTempFileTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── CreateTempFileTests.java
│ ├── FibonacciSequence
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ ├── task.ru.md
│ │ └── test
│ │ │ └── CommonPublishersTask10Tests.java
│ ├── GenerateUUID
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── GenerateUUIDTask.java
│ │ │ └── UUIDGenerator.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── GenerateUUIDTests.java
│ ├── HandleGetRequest
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── HandleGetRequestTask.java
│ │ │ ├── HttpMethod.java
│ │ │ ├── ReactiveRandom.java
│ │ │ └── RequestEntity.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── HandleGetRequestTaskTests.java
│ ├── PropertiesSource
│ │ ├── build.gradle
│ │ ├── src
│ │ │ ├── Properties.java
│ │ │ ├── PropertiesSourceTask.java
│ │ │ └── Property.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── PropertiesSourceTests.java
│ ├── TextFileStream
│ │ ├── build.gradle
│ │ ├── resources
│ │ │ └── testfile.txt
│ │ ├── src
│ │ │ └── TextFileStreamTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── TextFileStreamTests.java
│ ├── ValidateDuration
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── ValidationTask.java
│ │ ├── task-info.yaml
│ │ ├── task.md
│ │ └── test
│ │ │ └── ValidationTests.java
│ └── lesson-info.yaml
├── Testing
│ ├── Check Flux
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── CheckFluxTask.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── TestingTask1Tests.java
│ ├── Test Publisher
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── TestingTask3Tests.java
│ ├── Test Timed Flux
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── TestTimedFluxTask.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── TestingTask2Tests.java
│ └── lesson-info.yaml
└── section-info.yaml
├── Reactive Expert
├── Context
│ ├── lesson-info.yaml
│ ├── task1
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ContextTask1Tests.java
│ ├── task2
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── ContextTask2Tests.java
│ └── task3
│ │ ├── build.gradle
│ │ ├── src
│ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ └── ContextTask3Tests.java
├── Debugging
│ ├── lesson-info.yaml
│ ├── task1
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── DLMTask1Tests.java
│ ├── task2
│ │ ├── build.gradle
│ │ ├── src
│ │ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ │ └── DLMTask2Tests.java
│ └── task3
│ │ ├── build.gradle
│ │ ├── src
│ │ └── Task.java
│ │ ├── task-info.yaml
│ │ ├── task.html
│ │ └── test
│ │ └── DLMTask3Tests.java
└── section-info.yaml
├── build.gradle
├── course-info.yaml
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle
└── util
└── src
└── main
└── java
└── ToDoException.java
/.gitignore:
--------------------------------------------------------------------------------
1 | **/**/**/build
2 | **/**/build
3 | **/build
4 | build
5 | **/**/**/out
6 | **/**/out
7 | **/out
8 | out
9 | **/**/reports
10 | **/reports
11 | reports
12 | .idea
13 | .gradle
14 | *.iml
15 | *.class
16 | *-remote-info.yaml
17 | /.coursecreator/
18 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/checkstyle-idea.xml:
--------------------------------------------------------------------------------
1 |
2 | Flux
по первой букве
3 |
Flux#groupBy
5 | Flux#onBackpressureDrop(onDropHook)
6 | Flux#buffer(Duration)
.
8 | String
that fall in the same
3 | window
4 |
5 |
6 |
7 | Flux#window(Duration)
.
9 | Flux#onBackpressureLatest()
.
8 |