diff --git a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
index 0b99e9c..aad2223 100644
--- a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
+++ b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
@@ -32,6 +32,7 @@
     @Test
     fun testCanSetAnAnimationAndChangeItBack() {
         class TestFragment : Fragment(R.layout.lottie_activity_main)
+
         val scenario = launchFragmentInContainer<TestFragment>()
         scenario.moveToState(Lifecycle.State.RESUMED)
         scenario.onFragment { fragment ->
@@ -49,6 +50,7 @@
     @Test
     fun testStopsPlayingWhenDrawableSwitched() {
         class TestFragment : Fragment(R.layout.lottie_activity_main)
+
         val scenario = launchFragmentInContainer<TestFragment>()
         scenario.moveToState(Lifecycle.State.RESUMED)
         scenario.onFragment { fragment ->
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
index 17aa604..658df8f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
@@ -3,11 +3,11 @@
 import android.animation.Animator
 
 internal open class AnimatorListenerAdapter(
-        val onStart: ((Animator) -> Unit)? = null,
-        val onRepeat: ((Animator) -> Unit)? = null,
-        val onEnd: ((Animator) -> Unit)? = null,
-        val onCancel: ((Animator) -> Unit)? = null
-): Animator.AnimatorListener {
+    val onStart: ((Animator) -> Unit)? = null,
+    val onRepeat: ((Animator) -> Unit)? = null,
+    val onEnd: ((Animator) -> Unit)? = null,
+    val onCancel: ((Animator) -> Unit)? = null
+) : Animator.AnimatorListener {
 
     override fun onAnimationStart(animation: Animator) = onStart?.invoke(animation) ?: Unit
     override fun onAnimationRepeat(animation: Animator) = onRepeat?.invoke(animation) ?: Unit
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
index 704e666..c0ce94e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
@@ -70,8 +70,10 @@
         binding.animationView.addValueCallback(leftArm, LottieProperty.COLOR) { COLORS[colorIndex] }
         binding.animationView.addValueCallback(rightArm, LottieProperty.COLOR) { COLORS[colorIndex] }
         val point = PointF()
-        binding.animationView.addValueCallback(KeyPath("Body"),
-            LottieProperty.TRANSFORM_POSITION) { frameInfo ->
+        binding.animationView.addValueCallback(
+            KeyPath("Body"),
+            LottieProperty.TRANSFORM_POSITION
+        ) { frameInfo ->
             val startX = frameInfo.startValue.x
             var startY = frameInfo.startValue.y
             var endY = frameInfo.endValue.y
@@ -92,7 +94,7 @@
         binding.jumpHeight.text = "Extra jump height ${EXTRA_JUMP[extraJumpIndex]}"
     }
 
-    fun lerp(a: Float, b: Float, @FloatRange(from = 0.0, to = 1.0) percentage: Float) =  a + percentage * (b - a)
+    fun lerp(a: Float, b: Float, @FloatRange(from = 0.0, to = 1.0) percentage: Float) = a + percentage * (b - a)
 
     companion object {
         val TAG = DynamicActivity::class.simpleName
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
index ae0ad19..43a6aed 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
@@ -15,7 +15,7 @@
         super.onCreate(savedInstanceState)
 
         val textDelegate = TextDelegate(binding.dynamicTextView)
-        binding.nameEditText.addTextChangedListener(object: TextWatcher {
+        binding.nameEditText.addTextChangedListener(object : TextWatcher {
             override fun afterTextChanged(s: Editable?) {
                 textDelegate.setText("NAME", s.toString())
             }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
index 0cc1cf1..269ae98 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
@@ -15,21 +15,22 @@
     private val okHttpClient by lazy {
         OkHttpClient.Builder()
             .connectTimeout(30, TimeUnit.SECONDS)
-            .build() }
+            .build()
+    }
 
     private val gson by lazy {
         GsonBuilder()
-                .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
-                .create()
+            .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
+            .create()
     }
 
     private val retrofit by lazy {
         Retrofit.Builder()
-                .client(okHttpClient)
-                .baseUrl("https://api.lottiefiles.com/")
-                .addConverterFactory(GsonConverterFactory.create(gson))
-                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-                .build()
+            .client(okHttpClient)
+            .baseUrl("https://api.lottiefiles.com/")
+            .addConverterFactory(GsonConverterFactory.create(gson))
+            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+            .build()
     }
 
     val lottiefilesService: LottiefilesApi by lazy { retrofit.create(LottiefilesApi::class.java) }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
index 3802308..3f3d394 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
@@ -14,10 +14,9 @@
 import com.airbnb.lottie.LottieComposition
 import com.airbnb.lottie.LottieCompositionFactory
 import com.airbnb.lottie.LottieDrawable
-import java.util.*
 
 class LottieFontViewGroup @JvmOverloads constructor(
-        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val views = ArrayList<View>()
 
@@ -26,16 +25,16 @@
     init {
         isFocusableInTouchMode = true
         LottieCompositionFactory.fromAsset(context, "Mobilo/BlinkingCursor.json")
-                .addListener {
-                    cursorView.layoutParams = LayoutParams(
-                            ViewGroup.LayoutParams.WRAP_CONTENT,
-                            ViewGroup.LayoutParams.WRAP_CONTENT
-                    )
-                    cursorView.setComposition(it)
-                    cursorView.repeatCount = LottieDrawable.INFINITE
-                    cursorView.playAnimation()
-                    addView(cursorView)
-                }
+            .addListener {
+                cursorView.layoutParams = LayoutParams(
+                    ViewGroup.LayoutParams.WRAP_CONTENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT
+                )
+                cursorView.setComposition(it)
+                cursorView.repeatCount = LottieDrawable.INFINITE
+                cursorView.playAnimation()
+                addView(cursorView)
+            }
     }
 
     private fun addSpace() {
@@ -100,8 +99,10 @@
                 currentX = paddingLeft
                 currentY += view.measuredHeight
             }
-            view.layout(currentX, currentY, currentX + view.measuredWidth,
-                    currentY + view.measuredHeight)
+            view.layout(
+                currentX, currentY, currentX + view.measuredWidth,
+                currentY + view.measuredHeight
+            )
             currentX += view.width
         }
     }
@@ -149,7 +150,7 @@
         // }
         val fileName = "Mobilo/$letter.json"
         LottieCompositionFactory.fromAsset(context, fileName)
-                .addListener { addComposition(it) }
+            .addListener { addComposition(it) }
 
         return true
     }
@@ -174,8 +175,8 @@
     private fun addComposition(composition: LottieComposition) {
         val lottieAnimationView = LottieAnimationView(context)
         lottieAnimationView.layoutParams = LayoutParams(
-                ViewGroup.LayoutParams.WRAP_CONTENT,
-                ViewGroup.LayoutParams.WRAP_CONTENT
+            ViewGroup.LayoutParams.WRAP_CONTENT,
+            ViewGroup.LayoutParams.WRAP_CONTENT
         )
         lottieAnimationView.setComposition(composition)
         lottieAnimationView.playAnimation()
@@ -190,8 +191,8 @@
     private fun createSpaceView(): View {
         val spaceView = View(context)
         spaceView.layoutParams = LayoutParams(
-                resources.getDimensionPixelSize(R.dimen.font_space_width),
-                ViewGroup.LayoutParams.WRAP_CONTENT
+            resources.getDimensionPixelSize(R.dimen.font_space_width),
+            ViewGroup.LayoutParams.WRAP_CONTENT
         )
         spaceView.tag = "Space"
         return spaceView
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
index 69013a5..9d747df 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
@@ -7,7 +7,12 @@
 import androidx.core.view.isVisible
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.viewModelScope
-import androidx.paging.*
+import androidx.paging.Pager
+import androidx.paging.PagingConfig
+import androidx.paging.PagingDataAdapter
+import androidx.paging.PagingSource
+import androidx.paging.PagingState
+import androidx.paging.cachedIn
 import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.RecyclerView
 import com.airbnb.lottie.samples.api.LottiefilesApi
@@ -19,15 +24,20 @@
 import com.airbnb.lottie.samples.utils.hideKeyboard
 import com.airbnb.lottie.samples.utils.viewBinding
 import com.airbnb.lottie.samples.views.AnimationItemView
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.BaseMvRxFragment
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.ViewModelContext
+import com.airbnb.mvrx.fragmentViewModel
+import com.airbnb.mvrx.withState
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.launch
 
 data class LottiefilesState(
-        val mode: LottiefilesMode = LottiefilesMode.Recent,
-        val query: String = ""
+    val mode: LottiefilesMode = LottiefilesMode.Recent,
+    val query: String = ""
 ) : MvRxState
 
 class LottiefilesViewModel(initialState: LottiefilesState, private val api: LottiefilesApi) : MvRxViewModel<LottiefilesState>(initialState) {
@@ -61,9 +71,9 @@
 }
 
 class LottiefilesDataSource(
-        private val api: LottiefilesApi,
-        val mode: LottiefilesMode,
-        private val query: String
+    private val api: LottiefilesApi,
+    val mode: LottiefilesMode,
+    private val query: String
 ) : PagingSource<Int, AnimationData>() {
 
     override suspend fun load(params: LoadParams<Int>): LoadResult<Int, AnimationData> {
@@ -82,9 +92,9 @@
             }
 
             LoadResult.Page(
-                    response.data,
-                    if (page == 1) null else page + 1,
-                    (page + 1).takeIf { page < response.lastPage }
+                response.data,
+                if (page == 1) null else page + 1,
+                (page + 1).takeIf { page < response.lastPage }
             )
         } catch (e: Exception) {
             LoadResult.Error(e)
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
index 10dfe39..80a6a7f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
@@ -3,16 +3,16 @@
 import androidx.viewpager.widget.ViewPager
 
 internal open class OnPageChangeListenerAdapter(
-        private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
-        private val onPageScrolled:
-                ((position: Int, positionOffset: Float, positionOffsetPixels: Int) -> Unit)? = null,
-        private val onPageSelected: ((position: Int) -> Unit)? = null
-): ViewPager.OnPageChangeListener {
+    private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
+    private val onPageScrolled:
+    ((position: Int, positionOffset: Float, positionOffsetPixels: Int) -> Unit)? = null,
+    private val onPageSelected: ((position: Int) -> Unit)? = null
+) : ViewPager.OnPageChangeListener {
     override fun onPageScrollStateChanged(state: Int) =
-            onPageScrollStateChanged?.invoke(state) ?: Unit
+        onPageScrollStateChanged?.invoke(state) ?: Unit
 
     override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) =
-            onPageScrolled?.invoke(position, positionOffset, positionOffsetPixels) ?: Unit
+        onPageScrolled?.invoke(position, positionOffset, positionOffsetPixels) ?: Unit
 
     override fun onPageSelected(position: Int) = onPageSelected?.invoke(position) ?: Unit
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
index 523461a..24b16c1 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
@@ -3,16 +3,16 @@
 import android.widget.SeekBar
 
 internal class OnSeekBarChangeListenerAdapter(
-        private val onProgressChanged: ((seekBar: SeekBar, progress: Int, fromUser: Boolean) -> Unit)? = null,
-        private val onStartTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null,
-        private val onStopTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null
+    private val onProgressChanged: ((seekBar: SeekBar, progress: Int, fromUser: Boolean) -> Unit)? = null,
+    private val onStartTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null,
+    private val onStopTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null
 ) : SeekBar.OnSeekBarChangeListener {
     override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) =
-            onProgressChanged?.invoke(seekBar, progress, fromUser) ?: Unit
+        onProgressChanged?.invoke(seekBar, progress, fromUser) ?: Unit
 
     override fun onStartTrackingTouch(seekBar: SeekBar) =
-            onStartTrackingTouch?.invoke(seekBar) ?: Unit
+        onStartTrackingTouch?.invoke(seekBar) ?: Unit
 
     override fun onStopTrackingTouch(seekBar: SeekBar) =
-            onStopTrackingTouch?.invoke(seekBar) ?: Unit
+        onStopTrackingTouch?.invoke(seekBar) ?: Unit
 }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
index 99be680..3059b4c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
@@ -12,11 +12,10 @@
         super.onCreate(savedInstanceState)
 
         if (savedInstanceState == null) {
-            val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?:
-                    CompositionArgs(fileUri = intent.data)
+            val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?: CompositionArgs(fileUri = intent.data)
             supportFragmentManager.beginTransaction()
-                    .add(R.id.content, PlayerFragment.forAsset(args))
-                    .commit()
+                .add(R.id.content, PlayerFragment.forAsset(args))
+                .commit()
         }
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index 78ca26a..35cbe31 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -22,7 +22,11 @@
 import androidx.transition.TransitionManager
 import com.airbnb.epoxy.EpoxyController
 import com.airbnb.epoxy.EpoxyRecyclerView
-import com.airbnb.lottie.*
+import com.airbnb.lottie.FontAssetDelegate
+import com.airbnb.lottie.L
+import com.airbnb.lottie.LottieAnimationView
+import com.airbnb.lottie.LottieComposition
+import com.airbnb.lottie.RenderMode
 import com.airbnb.lottie.model.KeyPath
 import com.airbnb.lottie.samples.databinding.PlayerFragmentBinding
 import com.airbnb.lottie.samples.model.CompositionArgs
@@ -77,19 +81,19 @@
     }
 
     private val animatorListener = AnimatorListenerAdapter(
-            onStart = { binding.controlBarPlayerControls.playButton.isActivated = true },
-            onEnd = {
-                binding.controlBarPlayerControls.playButton.isActivated = false
-                binding.animationView.performanceTracker?.logRenderTimes()
-                updateRenderTimesPerLayer()
-            },
-            onCancel = {
-                binding.controlBarPlayerControls.playButton.isActivated = false
-            },
-            onRepeat = {
-                binding.animationView.performanceTracker?.logRenderTimes()
-                updateRenderTimesPerLayer()
-            }
+        onStart = { binding.controlBarPlayerControls.playButton.isActivated = true },
+        onEnd = {
+            binding.controlBarPlayerControls.playButton.isActivated = false
+            binding.animationView.performanceTracker?.logRenderTimes()
+            updateRenderTimesPerLayer()
+        },
+        onCancel = {
+            binding.controlBarPlayerControls.playButton.isActivated = false
+        },
+        onRepeat = {
+            binding.animationView.performanceTracker?.logRenderTimes()
+            updateRenderTimesPerLayer()
+        }
     )
 
     @SuppressLint("SetTextI18n")
@@ -108,7 +112,7 @@
         })
 
         val args = arguments?.getParcelable<CompositionArgs>(EXTRA_ANIMATION_ARGS)
-                ?: throw IllegalArgumentException("No composition args specified")
+            ?: throw IllegalArgumentException("No composition args specified")
         args.animationData?.bgColorInt?.let {
             binding.controlBarBackgroundColor.backgroundButton1.setBackgroundColor(it)
             binding.animationContainer.setBackgroundColor(it)
@@ -145,8 +149,8 @@
         viewModel.selectSubscribe(PlayerState::borderVisible) {
             binding.controlBar.borderToggle.isActivated = it
             binding.controlBar.borderToggle.setImageResource(
-                    if (it) R.drawable.ic_border_on
-                    else R.drawable.ic_border_off
+                if (it) R.drawable.ic_border_on
+                else R.drawable.ic_border_off
             )
             binding.animationView.setBackgroundResource(if (it) R.drawable.outline else 0)
         }
@@ -221,24 +225,24 @@
         viewModel.selectSubscribe(PlayerState::speed) {
             binding.animationView.speed = it
             binding.controlBarSpeed.speedButtonsContainer
-                    .children
-                    .filterIsInstance<ControlBarItemToggleView>()
-                    .forEach { toggleView ->
-                        toggleView.isActivated = toggleView.getText().replace("x", "").toFloat() == binding.animationView.speed
-                    }
+                .children
+                .filterIsInstance<ControlBarItemToggleView>()
+                .forEach { toggleView ->
+                    toggleView.isActivated = toggleView.getText().replace("x", "").toFloat() == binding.animationView.speed
+                }
         }
         binding.controlBarSpeed.speedButtonsContainer
-                .children
-                .filterIsInstance(ControlBarItemToggleView::class.java)
-                .forEach { child ->
-                    child.setOnClickListener {
-                        val speed = (it as ControlBarItemToggleView)
-                                .getText()
-                                .replace("x", "")
-                                .toFloat()
-                        viewModel.setSpeed(speed)
-                    }
+            .children
+            .filterIsInstance(ControlBarItemToggleView::class.java)
+            .forEach { child ->
+                child.setOnClickListener {
+                    val speed = (it as ControlBarItemToggleView)
+                        .getText()
+                        .replace("x", "")
+                        .toFloat()
+                    viewModel.setSpeed(speed)
                 }
+            }
 
 
         binding.controlBarPlayerControls.loopButton.setOnClickListener { viewModel.toggleLoop() }
@@ -250,21 +254,22 @@
         binding.controlBarPlayerControls.playButton.isActivated = binding.animationView.isAnimating
 
         binding.controlBarPlayerControls.seekBar.setOnSeekBarChangeListener(OnSeekBarChangeListenerAdapter(
-                onProgressChanged = { _, progress, _ ->
-                    if (binding.controlBarPlayerControls.seekBar.isPressed && progress in 1..4) {
-                        binding.controlBarPlayerControls.seekBar.progress = 0
-                        return@OnSeekBarChangeListenerAdapter
-                    }
-                    if (binding.animationView.isAnimating) return@OnSeekBarChangeListenerAdapter
-                    binding.animationView.progress = progress / binding.controlBarPlayerControls.seekBar.max.toFloat()
+            onProgressChanged = { _, progress, _ ->
+                if (binding.controlBarPlayerControls.seekBar.isPressed && progress in 1..4) {
+                    binding.controlBarPlayerControls.seekBar.progress = 0
+                    return@OnSeekBarChangeListenerAdapter
                 }
+                if (binding.animationView.isAnimating) return@OnSeekBarChangeListenerAdapter
+                binding.animationView.progress = progress / binding.controlBarPlayerControls.seekBar.max.toFloat()
+            }
         ))
 
         binding.animationView.addAnimatorUpdateListener {
             binding.controlBarPlayerControls.currentFrameView.text = updateFramesAndDurationLabel(binding.animationView)
 
             if (binding.controlBarPlayerControls.seekBar.isPressed) return@addAnimatorUpdateListener
-            binding.controlBarPlayerControls.seekBar.progress = ((it.animatedValue as Float) * binding.controlBarPlayerControls.seekBar.max).roundToInt()
+            binding.controlBarPlayerControls.seekBar.progress =
+                ((it.animatedValue as Float) * binding.controlBarPlayerControls.seekBar.max).roundToInt()
         }
         binding.animationView.addAnimatorListener(animatorListener)
         binding.controlBarPlayerControls.playButton.setOnClickListener {
@@ -279,22 +284,22 @@
         }
 
         binding.controlBarScale.scaleSeekBar.setOnSeekBarChangeListener(OnSeekBarChangeListenerAdapter(
-                onProgressChanged = { _, progress, _ ->
-                    val minScale = minScale()
-                    val maxScale = maxScale()
-                    val scale = minScale + progress / 100f * (maxScale - minScale)
-                    binding.animationView.scale = scale
-                    binding.controlBarScale.scaleText.text = "%.0f%%".format(scale * 100)
-                }
+            onProgressChanged = { _, progress, _ ->
+                val minScale = minScale()
+                val maxScale = maxScale()
+                val scale = minScale + progress / 100f * (maxScale - minScale)
+                binding.animationView.scale = scale
+                binding.controlBarScale.scaleText.text = "%.0f%%".format(scale * 100)
+            }
         ))
 
         arrayOf(
-                binding.controlBarBackgroundColor.backgroundButton1,
-                binding.controlBarBackgroundColor.backgroundButton2,
-                binding.controlBarBackgroundColor.backgroundButton3,
-                binding.controlBarBackgroundColor.backgroundButton4,
-                binding.controlBarBackgroundColor.backgroundButton5,
-                binding.controlBarBackgroundColor.backgroundButton6
+            binding.controlBarBackgroundColor.backgroundButton1,
+            binding.controlBarBackgroundColor.backgroundButton2,
+            binding.controlBarBackgroundColor.backgroundButton3,
+            binding.controlBarBackgroundColor.backgroundButton4,
+            binding.controlBarBackgroundColor.backgroundButton5,
+            binding.controlBarBackgroundColor.backgroundButton6
         ).forEach { bb ->
             bb.setOnClickListener {
                 binding.animationContainer.setBackgroundColor(bb.getColor())
@@ -364,26 +369,26 @@
         val minFrameView = EditText(context)
         minFrameView.setText(binding.animationView.minFrame.toInt().toString())
         AlertDialog.Builder(context)
-                .setTitle(R.string.min_frame_dialog)
-                .setView(minFrameView)
-                .setPositiveButton("Load") { _, _ ->
-                    viewModel.setMinFrame(minFrameView.text.toString().toIntOrNull() ?: 0)
-                }
-                .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
-                .show()
+            .setTitle(R.string.min_frame_dialog)
+            .setView(minFrameView)
+            .setPositiveButton("Load") { _, _ ->
+                viewModel.setMinFrame(minFrameView.text.toString().toIntOrNull() ?: 0)
+            }
+            .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
+            .show()
     }
 
     private fun showMaxFrameDialog() {
         val maxFrameView = EditText(context)
         maxFrameView.setText(binding.animationView.maxFrame.toInt().toString())
         AlertDialog.Builder(context)
-                .setTitle(R.string.max_frame_dialog)
-                .setView(maxFrameView)
-                .setPositiveButton("Load") { _, _ ->
-                    viewModel.setMaxFrame(maxFrameView.text.toString().toIntOrNull() ?: 0)
-                }
-                .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
-                .show()
+            .setTitle(R.string.max_frame_dialog)
+            .setView(maxFrameView)
+            .setPositiveButton("Load") { _, _ ->
+                viewModel.setMaxFrame(maxFrameView.text.toString().toIntOrNull() ?: 0)
+            }
+            .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
+            .show()
     }
 
     private fun View.animateVisible(visible: Boolean) {
@@ -453,9 +458,9 @@
             override fun buildModels(controller: EpoxyController) {
                 binding.animationView.resolveKeyPath(KeyPath("**")).forEachIndexed { index, keyPath ->
                     BottomSheetItemViewModel_()
-                            .id(index)
-                            .text(keyPath.keysToString())
-                            .addTo(controller)
+                        .id(index)
+                        .text(keyPath.keysToString())
+                        .addTo(controller)
                 }
             }
         })
@@ -471,8 +476,8 @@
         binding.animationView.performanceTracker?.sortedRenderTimes?.forEach {
             val view = BottomSheetItemView(requireContext()).apply {
                 set(
-                        it.first!!.replace("__container", "Total"),
-                        "%.2f ms".format(it.second!!)
+                    it.first!!.replace("__container", "Total"),
+                    "%.2f ms".format(it.second!!)
                 )
             }
             binding.bottomSheetRenderTimes.renderTimesContainer.addView(view)
@@ -498,8 +503,8 @@
         val size = warnings.size
         binding.controlBar.warningsButton.setText(resources.getQuantityString(R.plurals.warnings, size, size))
         binding.controlBar.warningsButton.setImageResource(
-                if (warnings.isEmpty()) R.drawable.ic_sentiment_satisfied
-                else R.drawable.ic_sentiment_dissatisfied
+            if (warnings.isEmpty()) R.drawable.ic_sentiment_satisfied
+            else R.drawable.ic_sentiment_dissatisfied
         )
     }
 
@@ -510,8 +515,8 @@
         val screenHeight = resources.displayMetrics.heightPixels.toFloat()
         val bounds = state.composition()?.bounds
         return@withState min(
-                screenWidth / (bounds?.width()?.toFloat() ?: screenWidth),
-                screenHeight / (bounds?.height()?.toFloat() ?: screenHeight)
+            screenWidth / (bounds?.width()?.toFloat() ?: screenWidth),
+            screenHeight / (bounds?.height()?.toFloat() ?: screenHeight)
         ) * 2f
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
index d404228..ec6e0e1 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
@@ -8,32 +8,38 @@
 import com.airbnb.lottie.LottieTask
 import com.airbnb.lottie.samples.model.CompositionArgs
 import com.airbnb.lottie.samples.utils.MvRxViewModel
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.Async
+import com.airbnb.mvrx.Fail
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.Success
+import com.airbnb.mvrx.Uninitialized
+import com.airbnb.mvrx.ViewModelContext
 import java.io.FileInputStream
 import kotlin.math.max
 import kotlin.math.min
 
 data class PlayerState(
-        val composition: Async<LottieComposition> = Uninitialized,
-        val controlsVisible: Boolean = true,
-        val controlBarVisible: Boolean = true,
-        val renderGraphVisible: Boolean = false,
-        val outlineMasksAndMattes: Boolean = false,
-        val borderVisible: Boolean = false,
-        val backgroundColorVisible: Boolean = false,
-        val scaleVisible: Boolean = false,
-        val speedVisible: Boolean = false,
-        val trimVisible: Boolean = false,
-        val useMergePaths: Boolean = false,
-        val minFrame: Int = 0,
-        val maxFrame: Int = 0,
-        val speed: Float = 1f,
-        val repeatCount: Int = ValueAnimator.INFINITE
+    val composition: Async<LottieComposition> = Uninitialized,
+    val controlsVisible: Boolean = true,
+    val controlBarVisible: Boolean = true,
+    val renderGraphVisible: Boolean = false,
+    val outlineMasksAndMattes: Boolean = false,
+    val borderVisible: Boolean = false,
+    val backgroundColorVisible: Boolean = false,
+    val scaleVisible: Boolean = false,
+    val speedVisible: Boolean = false,
+    val trimVisible: Boolean = false,
+    val useMergePaths: Boolean = false,
+    val minFrame: Int = 0,
+    val maxFrame: Int = 0,
+    val speed: Float = 1f,
+    val repeatCount: Int = ValueAnimator.INFINITE
 ) : MvRxState
 
 class PlayerViewModel(
-        initialState: PlayerState,
-        private val application: Application
+    initialState: PlayerState,
+    private val application: Application
 ) : MvRxViewModel<PlayerState>(initialState) {
 
     fun fetchAnimation(args: CompositionArgs) {
@@ -45,12 +51,12 @@
             args.asset != null -> LottieCompositionFactory.fromAsset(application, args.asset, null)
             else -> error("Don't know how to fetch animation for $args")
         }
-                .addListener {
-                    setState {
-                        copy(composition = Success(it), minFrame = it.startFrame.toInt(), maxFrame = it.endFrame.toInt())
-                    }
+            .addListener {
+                setState {
+                    copy(composition = Success(it), minFrame = it.startFrame.toInt(), maxFrame = it.endFrame.toInt())
                 }
-                .addFailureListener { setState { copy(composition = Fail(it)) } }
+            }
+            .addFailureListener { setState { copy(composition = Fail(it)) } }
     }
 
     private fun taskForUri(uri: Uri): LottieTask<LottieComposition> {
@@ -101,14 +107,14 @@
 
     fun setDistractionFree(distractionFree: Boolean) = setState {
         copy(
-                controlsVisible = !distractionFree,
-                controlBarVisible = !distractionFree,
-                renderGraphVisible = false,
-                borderVisible = false,
-                backgroundColorVisible = false,
-                scaleVisible = false,
-                speedVisible = false,
-                trimVisible = false
+            controlsVisible = !distractionFree,
+            controlBarVisible = !distractionFree,
+            renderGraphVisible = false,
+            borderVisible = false,
+            backgroundColorVisible = false,
+            scaleVisible = false,
+            speedVisible = false,
+            trimVisible = false
         )
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
index d6ad662..96b4f09 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
@@ -6,7 +6,6 @@
 import android.content.ActivityNotFoundException
 import android.content.Intent
 import android.content.pm.PackageManager
-import com.google.android.material.snackbar.Snackbar
 import android.widget.ArrayAdapter
 import android.widget.EditText
 import android.widget.Toast
@@ -15,9 +14,11 @@
 import com.airbnb.lottie.samples.utils.BaseEpoxyFragment
 import com.airbnb.lottie.samples.utils.hasPermission
 import com.airbnb.lottie.samples.views.marquee
+import com.google.android.material.snackbar.Snackbar
 
 private const val RC_FILE = 1000
 private const val RC_CAMERA_PERMISSION = 1001
+
 class PreviewFragment : BaseEpoxyFragment() {
 
     override fun EpoxyController.buildModels() {
@@ -66,14 +67,14 @@
             clickListener { _ ->
                 val urlOrJsonView = EditText(context)
                 AlertDialog.Builder(context)
-                        .setTitle(R.string.preview_url)
-                        .setView(urlOrJsonView)
-                        .setPositiveButton(R.string.preview_load) { _, _ ->
-                            val args = CompositionArgs(url = urlOrJsonView.text.toString())
-                            startActivity(PlayerActivity.intent(requireContext(), args))
-                        }
-                        .setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
-                        .show()
+                    .setTitle(R.string.preview_url)
+                    .setView(urlOrJsonView)
+                    .setPositiveButton(R.string.preview_load) { _, _ ->
+                        val args = CompositionArgs(url = urlOrJsonView.text.toString())
+                        startActivity(PlayerActivity.intent(requireContext(), args))
+                    }
+                    .setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
+                    .show()
             }
         }
 
@@ -84,14 +85,14 @@
             clickListener { _ ->
                 val adapter = ArrayAdapter<String>(requireContext(), android.R.layout.select_dialog_item)
                 requireContext().assets.list("")?.asSequence()
-                        ?.filter { it.endsWith(".json") || it.endsWith(".zip") }
-                        ?.forEach { adapter.add(it) }
+                    ?.filter { it.endsWith(".json") || it.endsWith(".zip") }
+                    ?.forEach { adapter.add(it) }
                 AlertDialog.Builder(context)
-                        .setAdapter(adapter) { _, which ->
-                            val args = CompositionArgs(asset = adapter.getItem(which))
-                            startActivity(PlayerActivity.intent(requireContext(), args))
-                        }
-                        .show()
+                    .setAdapter(adapter) { _, which ->
+                        val args = CompositionArgs(asset = adapter.getItem(which))
+                        startActivity(PlayerActivity.intent(requireContext(), args))
+                    }
+                    .show()
             }
         }
     }
@@ -99,7 +100,7 @@
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         if (resultCode != Activity.RESULT_OK) return
         when (requestCode) {
-            RC_FILE-> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(fileUri = data?.data)))
+            RC_FILE -> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(fileUri = data?.data)))
         }
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
index 42e068f..154c1e4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
@@ -13,9 +13,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class PreviewItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: ListItemPreviewBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
index 3379dd2..8b0a095 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
@@ -12,7 +12,13 @@
 import com.airbnb.lottie.samples.views.loadingView
 import com.airbnb.lottie.samples.views.marquee
 import com.airbnb.lottie.samples.views.showcaseCarousel
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.Async
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.Uninitialized
+import com.airbnb.mvrx.ViewModelContext
+import com.airbnb.mvrx.fragmentViewModel
+import com.airbnb.mvrx.withState
 
 data class ShowcaseState(val response: Async<AnimationResponseV2> = Uninitialized) : MvRxState
 
@@ -34,21 +40,21 @@
 class ShowcaseFragment : BaseEpoxyFragment() {
 
     private val showcaseItems = listOf(
-            ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
-                startActivity(Intent(requireContext(), DynamicActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
-                startActivity(Intent(requireContext(), TypographyDemoActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
-                startActivity(Intent(requireContext(), DynamicTextActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
-                startActivity(Intent(requireContext(), BullseyeActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
-                startActivity(Intent(requireContext(), WishListActivity::class.java))
-            }
+        ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
+            startActivity(Intent(requireContext(), DynamicActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
+            startActivity(Intent(requireContext(), TypographyDemoActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
+            startActivity(Intent(requireContext(), DynamicTextActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
+            startActivity(Intent(requireContext(), BullseyeActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
+            startActivity(Intent(requireContext(), WishListActivity::class.java))
+        }
     )
     private val viewModel: ShowcaseViewModel by fragmentViewModel()
 
@@ -73,7 +79,7 @@
                 animationItemView {
                     id(it.id)
                     title(it.title)
-                    previewUrl("https://assets9.lottiefiles.com/${it.preview}")
+                    if (it.preview != null) previewUrl("https://assets9.lottiefiles.com/${it.preview}")
                     previewBackgroundColor(it.bgColorInt)
                     onClickListener { _ -> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(animationDataV2 = it))) }
                 }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
index 4cd5fab..b2352d6 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
@@ -23,7 +23,7 @@
             val assetName = intent.extras?.getString("animation") ?: ""
             val start = System.currentTimeMillis()
             composition = LottieCompositionFactory.fromAssetSync(this, assetName, null).value
-                    ?: throw IllegalArgumentException("Invalid composition $assetName")
+                ?: throw IllegalArgumentException("Invalid composition $assetName")
             Toast.makeText(this@SimpleAnimationActivity, "Done ${System.currentTimeMillis() - start}", Toast.LENGTH_SHORT).show()
         }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
index 9e7ce50..2275295 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
@@ -2,16 +2,16 @@
 
 import android.annotation.SuppressLint
 import android.content.Context
-import androidx.customview.widget.ViewDragHelper
 import android.util.AttributeSet
 import android.view.Gravity
 import android.view.MotionEvent
 import android.view.View
 import android.widget.FrameLayout
 import android.widget.ImageView
+import androidx.customview.widget.ViewDragHelper
 
 class TrimView @JvmOverloads constructor(
-        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
 
     private val leftAnchor by lazy {
@@ -26,7 +26,7 @@
     }
     private lateinit var callback: (Float, Float) -> Unit
 
-    private val dragHelper = ViewDragHelper.create(this, object: ViewDragHelper.Callback() {
+    private val dragHelper = ViewDragHelper.create(this, object : ViewDragHelper.Callback() {
         override fun tryCaptureView(child: View, pointerId: Int) = true
 
         override fun getViewHorizontalDragRange(child: View) = width
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
index 6234362..07194de 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
@@ -6,13 +6,13 @@
 
 @Parcelize
 data class AnimationData(
-        val id: Long,
-        val title: String,
-        val description: String?,
-        private val bgColor: String?,
-        val preview: String?,
-        val lottieLink: String,
-        val userInfo: UserInfo?
+    val id: Long,
+    val title: String,
+    val description: String?,
+    private val bgColor: String?,
+    val preview: String?,
+    val lottieLink: String,
+    val userInfo: UserInfo?
 ) : Parcelable {
     val bgColorInt get() = bgColor.toColorIntSafe()
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
index 4f45257..fa81035 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
@@ -7,11 +7,11 @@
 
 @Parcelize
 data class AnimationDataV2(
-        @SerializedName("bg_color") val bgColor: String,
-        @SerializedName("file") val file: String,
-        @SerializedName("id") val id: Int,
-        @SerializedName("preview") val preview: String,
-        @SerializedName("title") val title: String,
+    @SerializedName("bg_color") val bgColor: String = "",
+    @SerializedName("file") val file: String = "",
+    @SerializedName("id") val id: Int,
+    @SerializedName("preview") val preview: String? = "",
+    @SerializedName("title") val title: String = "",
 ) : Parcelable {
     val bgColorInt get() = bgColor.toColorIntSafe()
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
index c5d3897..d23991e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
@@ -7,14 +7,14 @@
 @SuppressWarnings("ParcelCreator")
 @Parcelize
 data class AnimationResponse(
-        val currentPage: Int,
-        val data: List<AnimationData>,
-        val from: String,
-        val lastPage: Int,
-        val nextPageUrl: String?,
-        val path: String,
-        val perPage: Int,
-        val prevPageUrl: String,
-        val to: Int,
-        val total: Int
+    val currentPage: Int,
+    val data: List<AnimationData>,
+    val from: String,
+    val lastPage: Int,
+    val nextPageUrl: String?,
+    val path: String,
+    val perPage: Int,
+    val prevPageUrl: String,
+    val to: Int,
+    val total: Int
 ) : Parcelable
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
index ed31989..3a8381d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
@@ -1,5 +1,5 @@
 package com.airbnb.lottie.samples.model
 
 data class AnimationResponseV2(
-        val data: List<AnimationDataV2> = emptyList(),
+    val data: List<AnimationDataV2> = emptyList(),
 )
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
index 1544a35..61d461e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
@@ -9,13 +9,13 @@
 @SuppressLint("ParcelCreator")
 @Parcelize
 data class CompositionArgs(
-        val assetName: String? = null,
-        val url: String? = null,
-        val fileUri: Uri? = null,
-        val asset: String? = null,
-        val animationData: AnimationData? = null,
-        val animationDataV2: AnimationDataV2? = null
+    val assetName: String? = null,
+    val url: String? = null,
+    val fileUri: Uri? = null,
+    val asset: String? = null,
+    val animationData: AnimationData? = null,
+    val animationDataV2: AnimationDataV2? = null
 ) : Parcelable {
-        @IgnoredOnParcel
-        val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
+    @IgnoredOnParcel
+    val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
index 38c5d10..161211f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
@@ -4,7 +4,7 @@
 import androidx.annotation.StringRes
 
 data class ShowcaseItem(
-        @DrawableRes val drawableRes: Int,
-        @StringRes val titleRes: Int,
-        val clickListener: () -> Unit
+    @DrawableRes val drawableRes: Int,
+    @StringRes val titleRes: Int,
+    val clickListener: () -> Unit
 )
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
index 66c6a7d..c6ef912 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
@@ -7,13 +7,13 @@
 @SuppressWarnings("ParcelCreator")
 @Parcelize
 data class UserInfo(
-        val id: Long,
-        val name: String,
-        val bio: String?,
-        val location: String?,
-        val city: String?,
-        val social_twitter: String?,
-        val social_dribbble: String?,
-        val social_behance: String?,
-        val url: String?
+    val id: Long,
+    val name: String,
+    val bio: String?,
+    val location: String?,
+    val city: String?,
+    val social_twitter: String?,
+    val social_dribbble: String?,
+    val social_behance: String?,
+    val url: String?
 ) : Parcelable
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
index 3393702..e6248c2 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
@@ -16,8 +16,8 @@
 inline fun <reified T : ViewBinding> Activity.viewBinding() = ActivityViewBindingDelegate(T::class.java, this)
 
 class ActivityViewBindingDelegate<T : ViewBinding>(
-        private val bindingClass: Class<T>,
-        val activity: Activity
+    private val bindingClass: Class<T>,
+    val activity: Activity
 ) : ReadOnlyProperty<Activity, T> {
     private var binding: T? = null
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
index 04889ad..805cf4c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
@@ -10,7 +10,7 @@
 
 
 private class BaseEpoxyController(
-        private val buildModelsCallback: EpoxyController.() -> Unit
+    private val buildModelsCallback: EpoxyController.() -> Unit
 ) : AsyncEpoxyController() {
     override fun buildModels() {
         buildModelsCallback()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
index bcc1883..bcda8a8 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
@@ -10,8 +10,8 @@
      * This uses [Dispatchers.Main.immediate] by default to mimic [viewModelScope].
      */
     fun <T : Any?> (suspend () -> T).execute(
-            dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
-            reducer: S.(Async<T>) -> S
+        dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
+        reducer: S.(Async<T>) -> S
     ): Job {
         setState { reducer(Loading()) }
         return viewModelScope.launch(dispatcher) {
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
index cc5ec21..4c7a660 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
@@ -10,13 +10,6 @@
 import android.os.VibrationEffect
 import android.os.Vibrator
 import android.util.Log
-import androidx.annotation.DrawableRes
-import androidx.annotation.LayoutRes
-import androidx.annotation.StringRes
-import com.google.android.material.snackbar.Snackbar
-import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
-import androidx.fragment.app.Fragment
-import androidx.core.content.ContextCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -24,23 +17,30 @@
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.annotation.ColorInt
+import androidx.annotation.DrawableRes
+import androidx.annotation.LayoutRes
+import androidx.annotation.StringRes
+import androidx.core.content.ContextCompat
 import androidx.core.content.getSystemService
 import androidx.core.graphics.toColorInt
+import androidx.fragment.app.Fragment
+import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
 import com.airbnb.lottie.L
 import com.bumptech.glide.Glide
+import com.google.android.material.snackbar.Snackbar
 
 fun Fragment.startActivity(cls: Class<*>) {
     startActivity(Intent(context, cls))
 }
 
 fun String.urlIntent(): Intent =
-        Intent(Intent.ACTION_VIEW).setData(Uri.parse(this))
+    Intent(Intent.ACTION_VIEW).setData(Uri.parse(this))
 
 fun ViewGroup.inflate(@LayoutRes layout: Int, attachToRoot: Boolean = true): View =
-        LayoutInflater.from(context).inflate(layout, this, attachToRoot)
+    LayoutInflater.from(context).inflate(layout, this, attachToRoot)
 
 fun String.hasPermission(context: Context): Boolean =
-        ContextCompat.checkSelfPermission(context, this) == PackageManager.PERMISSION_GRANTED
+    ContextCompat.checkSelfPermission(context, this) == PackageManager.PERMISSION_GRANTED
 
 fun TextView.setDrawableLeft(@DrawableRes drawableRes: Int, activity: Activity) {
     val drawable = VectorDrawableCompat.create(resources, drawableRes, activity.theme)
@@ -48,7 +48,7 @@
 }
 
 fun View.showSnackbarLong(@StringRes message: Int) =
-        showSnackbarLong(resources.getString(message))
+    showSnackbarLong(resources.getString(message))
 
 fun View.showSnackbarLong(message: String) =
     Snackbar.make(this, message, Snackbar.LENGTH_LONG).show()
@@ -90,15 +90,15 @@
         when (bgColor.length) {
             0 -> "#ffffff"
             4 -> "#%c%c%c%c%c%c".format(
-                    bgColor[1], bgColor[1],
-                    bgColor[2], bgColor[2],
-                    bgColor[3], bgColor[3]
+                bgColor[1], bgColor[1],
+                bgColor[2], bgColor[2],
+                bgColor[3], bgColor[3]
             )
             5 -> "#%c%c%c%c%c%c%c%c".format(
-                    bgColor[1], bgColor[1],
-                    bgColor[2], bgColor[2],
-                    bgColor[3], bgColor[3],
-                    bgColor[4], bgColor[4]
+                bgColor[1], bgColor[1],
+                bgColor[2], bgColor[2],
+                bgColor[3], bgColor[3],
+                bgColor[4], bgColor[4]
             )
             else -> bgColor
         }.toColorInt()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
index 49123a2..48a58c4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
@@ -16,8 +16,8 @@
 inline fun <reified T : ViewBinding> ViewGroup.viewBinding() = ViewBindingDelegate(T::class.java, this)
 
 class ViewBindingDelegate<T : ViewBinding>(
-        private val bindingClass: Class<T>,
-        val view: ViewGroup
+    private val bindingClass: Class<T>,
+    val view: ViewGroup
 ) : ReadOnlyProperty<ViewGroup, T> {
     private var binding: T? = null
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
index c372e09..9df8142 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
@@ -14,9 +14,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class AnimationItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewShowcaseAnimationBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
index 3e0f11a..b95485d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
@@ -6,16 +6,16 @@
 import android.graphics.Color
 import android.graphics.Paint
 import android.graphics.drawable.ColorDrawable
-import androidx.annotation.ColorInt
-import androidx.core.content.ContextCompat
 import android.util.AttributeSet
 import android.view.View
+import androidx.annotation.ColorInt
+import androidx.core.content.ContextCompat
 import com.airbnb.lottie.samples.R
 
 class BackgroundColorView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleInt: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleInt: Int = 0
 ) : View(context, attrs, defStyleInt) {
 
     private val paint = Paint().apply {
@@ -32,7 +32,7 @@
         val r = cx.coerceAtMost(cy)
         if (getColor() == Color.WHITE) {
             paint.strokeWidth =
-                    resources.getDimensionPixelSize(R.dimen.background_color_view_stroke_width).toFloat()
+                resources.getDimensionPixelSize(R.dimen.background_color_view_stroke_width).toFloat()
             paint.style = Paint.Style.STROKE
             paint.color = ContextCompat.getColor(context, R.color.background_color1_stroke)
         } else {
@@ -42,5 +42,6 @@
         canvas.drawCircle(cx, cy, r - paint.strokeWidth, paint)
     }
 
-    @ColorInt fun getColor() = (background as ColorDrawable).color
+    @ColorInt
+    fun getColor() = (background as ColorDrawable).color
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
index 4986ea1..0168ff9 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
@@ -13,9 +13,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class BottomSheetItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewBottomSheetBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
index 0b2d990..ee5be86 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
@@ -17,9 +17,9 @@
 import com.airbnb.lottie.samples.utils.viewBinding
 
 class ControlBarItemToggleView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewControlBarBinding by viewBinding()
 
@@ -50,8 +50,8 @@
         super.childDrawableStateChanged(child)
         if (child is ImageView && child.drawable != null) {
             val color =
-                    if (child.isActivated) Color.WHITE
-                    else ContextCompat.getColor(context, R.color.control_bar_content_unactivated)
+                if (child.isActivated) Color.WHITE
+                else ContextCompat.getColor(context, R.color.control_bar_content_unactivated)
             DrawableCompat.setTint(child.drawable.mutate(), color)
         }
     }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
index edce66f..d078e4e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
@@ -1,15 +1,15 @@
 package com.airbnb.lottie.samples.views
 
 import android.content.Context
-import androidx.customview.widget.ViewDragHelper
 import android.util.AttributeSet
 import android.view.MotionEvent
 import android.widget.FrameLayout
+import androidx.customview.widget.ViewDragHelper
 
 class InterceptingFrameLayout @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
 
     var viewDragHelper: ViewDragHelper? = null
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
index 01fc7a8..8da9f1a 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
@@ -12,9 +12,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class ListingCard @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ListingCardBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
index 37ee501..cf80401 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
@@ -9,9 +9,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class LoadingView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
 
     init {
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
index 4fa8cd3..9daef53 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
@@ -11,9 +11,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class LottiefilesTabBar @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: LottiefilesTabBarBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
index 350c504..5d9da44 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
@@ -13,9 +13,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class Marquee @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: MarqueeBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
index d384a60..b79971c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
@@ -10,9 +10,9 @@
 import kotlinx.coroutines.flow.StateFlow
 
 class SearchInputItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewSearchInputBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
index a9dc8fe..985e631 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
@@ -11,9 +11,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class SectionHeaderView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: SectionHeaderViewBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
index b8097dc..5680dae 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
@@ -12,9 +12,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class ShowcaseCarousel @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : EpoxyRecyclerView(context, attrs, defStyleAttr), EpoxyRecyclerView.ModelBuilderCallback {
 
     private var items: List<ShowcaseItem>? = null
@@ -35,9 +35,9 @@
     override fun buildModels(controller: EpoxyController) {
         items?.forEach {
             ShowcaseDemoItemViewModel_()
-                    .id(it.titleRes)
-                    .showcaseItem(it)
-                    .addTo(controller)
+                .id(it.titleRes)
+                .showcaseItem(it)
+                .addTo(controller)
         }
     }
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
index 7f2b743..2ba801e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
@@ -11,9 +11,9 @@
 
 @ModelView(autoLayout = ModelView.Size.WRAP_WIDTH_WRAP_HEIGHT)
 class ShowcaseDemoItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewShowcaseDemoBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
index 9151da6..766b947 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
@@ -9,9 +9,9 @@
 import com.airbnb.lottie.samples.utils.viewBinding
 
 class TabBarItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: TabItemBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
index 1a78533..df7899d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
@@ -5,7 +5,7 @@
 import com.airbnb.lottie.LottieAnimationView
 
 class WishListIconView @JvmOverloads constructor(
-        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : LottieAnimationView(context, attrs, defStyleAttr) {
 
     fun toggleWishlisted() {
