diff --git a/README.md b/README.md
index 447838a..4d9fd1f 100644
--- a/README.md
+++ b/README.md
@@ -75,7 +75,7 @@ Check `fastlane/Appfile` and `fastlane/Fastfile` for more information.
## CI/CD configuration with Bitrise (updated on Dec 12th 2021)
-We are going to start using a tool called Bitrise to configure de CI/CD pipelines for mobiles apps.
+We are going to start using a tool called Bitrise to configure the CI/CD pipelines for mobiles apps.
--> For Android apps you can find how to do it in this link: https://www.notion.so/rootstrap/Android-CI-CD-26d4abd4f2454224be8f617110147366
@@ -115,6 +115,20 @@ in order to track the login event.
- For MixPanel, you have to replace the API key:
`mixpanel_api_key`
+
+## Utility extensions
+We have a bunch of pre-made extensions usually used on every project to accelerate feature development.
+you can access them in the util.extensions package. They include but are not limited to :
+
+- `Fragment.collectOnLifeCycle(...)` extension to reduce the boiler plate code and indentation when
+ collecting flows from a fragment.
+- `ProgressBar.progressTo(...)` extension to animate progress updates in one line with ease
+ and with good support for older android versions.
+- `TextView.setClickableKeyword(...)` extension to add clickable functions to words or prhases inside a
+ Textview, allowing to also change their color, font (for example, to bold the keyword), and underline
+- `TextView.setColoredKeyword(...) ` extension to change the color of a word or prhase in a Textview.
+
+
## Code Quality Standards
In order to meet the required code quality standards, this project uses [Ktlint](https://github.com/pinterest/ktlint) and [Detekt](https://github.com/arturbosch/detekt)
diff --git a/app/src/main/java/com/rootstrap/android/ui/custom/CustomTypefaceSpan.kt b/app/src/main/java/com/rootstrap/android/ui/custom/CustomTypefaceSpan.kt
new file mode 100644
index 0000000..fdda9c5
--- /dev/null
+++ b/app/src/main/java/com/rootstrap/android/ui/custom/CustomTypefaceSpan.kt
@@ -0,0 +1,42 @@
+package com.rootstrap.android.ui.custom
+
+import android.graphics.Paint
+import android.graphics.Typeface
+import android.text.TextPaint
+import android.text.style.TypefaceSpan
+
+/**
+ * Allows to apply a custom font in an spannableString
+ *
+ * Taken from https://stackoverflow.com/questions/10675070/multiple-typeface-in-single-textview
+ * with slightly modifications
+ */
+class CustomTypefaceSpan(private val newType: Typeface) : TypefaceSpan("") {
+
+ override fun updateDrawState(ds: TextPaint) {
+ applyCustomTypeFace(ds, newType)
+ }
+
+ override fun updateMeasureState(paint: TextPaint) {
+ applyCustomTypeFace(paint, newType)
+ }
+
+ companion object {
+
+ private const val ITALIC_SKEW_FACTOR = -0.25F
+
+ private fun applyCustomTypeFace(paint: Paint, tf: Typeface) {
+ val oldStyle: Int
+ val old = paint.typeface
+ oldStyle = old?.style ?: 0
+ val fake = oldStyle and tf.style.inv()
+ if (fake and Typeface.BOLD != 0) {
+ paint.isFakeBoldText = true
+ }
+ if (fake and Typeface.ITALIC != 0) {
+ paint.textSkewX = ITALIC_SKEW_FACTOR
+ }
+ paint.typeface = tf
+ }
+ }
+}
diff --git a/app/src/main/java/com/rootstrap/android/util/extensions/Fragment.kt b/app/src/main/java/com/rootstrap/android/util/extensions/Fragment.kt
new file mode 100644
index 0000000..d6ad8f7
--- /dev/null
+++ b/app/src/main/java/com/rootstrap/android/util/extensions/Fragment.kt
@@ -0,0 +1,43 @@
+package com.rootstrap.android.util.extensions
+
+import androidx.fragment.app.Fragment
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.lifecycleScope
+import androidx.lifecycle.repeatOnLifecycle
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.launch
+
+/**
+ * Allows the collection of an unlimited amount of flows in an inline style without needing to
+ * add boilerplate indentations.
+ *
+ * The flows are all collected inside the same lifecycleState but it can be customized. By default
+ * it is Lifecycle.State.STARTED.
+ *
+ * This extension can be called as many times as needed without problems,
+ * but generally you will only require to call it once thanks to the vararg operator.
+ *
+ * If called with a single Flow Pair the type of the flow is inferred automatically, otherwise
+ * you will need to cast the flow values when needed.
+ *
+ * Example of use :
+ * - Single flow collection :
+ * > `collectOnLifeCycle(Pair(viewModel.eventsFlow) { it.collect { event -> onEvents(event) } })`
+ * - Multi flow collection :
+ * > Just appending a trailing "," and adding a new Pair allows you to collect an additional
+ * flow per pair
+ */
+fun Fragment.collectOnLifeCycle(
+ vararg flowPairs: Pair, suspend (Flow) -> Unit>,
+ lifecycleState: Lifecycle.State = Lifecycle.State.STARTED
+) {
+ lifecycleScope.launch {
+ repeatOnLifecycle(lifecycleState) {
+ flowPairs.forEach {
+ launch {
+ it.second(it.first)
+ }
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/rootstrap/android/util/extensions/ProgressBar.kt b/app/src/main/java/com/rootstrap/android/util/extensions/ProgressBar.kt
new file mode 100644
index 0000000..f43b4ad
--- /dev/null
+++ b/app/src/main/java/com/rootstrap/android/util/extensions/ProgressBar.kt
@@ -0,0 +1,27 @@
+package com.rootstrap.android.util.extensions
+
+import android.animation.Animator
+import android.animation.ObjectAnimator
+import android.view.animation.DecelerateInterpolator
+import android.widget.ProgressBar
+import androidx.core.animation.addListener
+
+private const val DEFAULT_ANIMATION_TIME = 500L
+
+/**
+ * Smoothly animates the progress of the progress bar to the specified value
+ */
+fun ProgressBar.progressTo(
+ newlyProgress: Int,
+ timeInMillis: Long = DEFAULT_ANIMATION_TIME,
+ onEndListener: ((Animator) -> Unit)? = null
+) {
+ ObjectAnimator.ofInt(this, "progress", progress, newlyProgress).apply {
+ duration = timeInMillis
+ interpolator = DecelerateInterpolator()
+ setAutoCancel(true)
+ onEndListener?.let {
+ addListener(onEnd = it)
+ }
+ }.start()
+}
diff --git a/app/src/main/java/com/rootstrap/android/util/extensions/Textview.kt b/app/src/main/java/com/rootstrap/android/util/extensions/Textview.kt
new file mode 100644
index 0000000..7a5a206
--- /dev/null
+++ b/app/src/main/java/com/rootstrap/android/util/extensions/Textview.kt
@@ -0,0 +1,92 @@
+package com.rootstrap.android.util.extensions
+
+import android.graphics.Typeface
+import android.text.SpannableStringBuilder
+import android.text.Spanned
+import android.text.TextPaint
+import android.text.method.LinkMovementMethod
+import android.text.style.CharacterStyle
+import android.text.style.ClickableSpan
+import android.view.View
+import android.widget.TextView
+import androidx.annotation.ColorRes
+import androidx.core.content.ContextCompat
+import com.rootstrap.android.R
+import com.rootstrap.android.ui.custom.CustomTypefaceSpan
+
+/**
+ * Sets the first occurrence of the keyword string in this TextView's text as clickable and attach the
+ * given OnClickListener function to it.
+ *
+ * Additionally, it tints the keyword using the app's colorPrimary color and adds an underline to it
+ * so it looks and behaves like an Hyperlink.
+ *
+ * This behavior can be customized with the keywordColor and underline params and you can also change
+ * the keyword's typeFace with the typeFace param, allowing you to make it bold or apply
+ * other kinds of effects.
+ *
+ * You can add multiple clickable keywords by just calling this method as many times as you need in
+ * the same textview.
+ *
+ * The next example illustrates how to add a link to open a web browser:
+ *```
+ * mySuggestionText.text = "For more information go to the admin web"
+ * mySuggestionText.setClickableKeyword("admin web") {
+ * // Get admin url and open the admin web via an intent
+ * }
+ *```
+ */
+fun TextView.setClickableKeyword(
+ keyword: String,
+ onClickListener: () -> Unit,
+ @ColorRes keywordColor: Int = R.color.colorPrimary,
+ underline: Boolean = true,
+ typeFace: Typeface? = null
+) {
+ val span: SpannableStringBuilder = getTextAsSpannable()
+
+ val start = text.indexOf(keyword, 0)
+
+ val clickableSpan = object : ClickableSpan() {
+ override fun onClick(widget: View) = onClickListener()
+ override fun updateDrawState(ds: TextPaint) {
+ ds.color = ContextCompat.getColor(context, keywordColor)
+ ds.isUnderlineText = underline
+ }
+ }
+
+ typeFace?.let {
+ span.setSpan(CustomTypefaceSpan(typeFace), start, start + keyword.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
+ }
+ span.setSpan(clickableSpan, start, start + keyword.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
+
+ if (movementMethod !is LinkMovementMethod) {
+ movementMethod = LinkMovementMethod.getInstance()
+ }
+
+ text = span
+}
+
+/**
+ * changes the color of the first occurrence of the keyword string in this TextView's text.
+ *
+ * It accept a color resource as a second parameter and by default it uses the app's colorPrimary color.
+ */
+fun TextView.setColoredKeyword(
+ keyword: String,
+ @ColorRes keywordColor: Int = R.color.colorPrimary
+) {
+ val span: SpannableStringBuilder = getTextAsSpannable()
+ val start = text.indexOf(keyword, 0)
+ val coloredSpan = object : CharacterStyle() {
+ override fun updateDrawState(ds: TextPaint) {
+ ds.color = ContextCompat.getColor(context, keywordColor)
+ }
+ }
+ span.setSpan(coloredSpan, start, start + keyword.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
+ text = span
+}
+
+private fun TextView.getTextAsSpannable() =
+ if (text is SpannableStringBuilder) text as SpannableStringBuilder
+ else SpannableStringBuilder(text)
diff --git a/buildSrc/build/classes/kotlin/main/Libs.class b/buildSrc/build/classes/kotlin/main/Libs.class
new file mode 100644
index 0000000..fa9a3c5
Binary files /dev/null and b/buildSrc/build/classes/kotlin/main/Libs.class differ
diff --git a/buildSrc/build/classes/kotlin/main/META-INF/buildSrc.kotlin_module b/buildSrc/build/classes/kotlin/main/META-INF/buildSrc.kotlin_module
new file mode 100644
index 0000000..c42baff
Binary files /dev/null and b/buildSrc/build/classes/kotlin/main/META-INF/buildSrc.kotlin_module differ
diff --git a/buildSrc/build/classes/kotlin/main/Versions.class b/buildSrc/build/classes/kotlin/main/Versions.class
new file mode 100644
index 0000000..48e5335
Binary files /dev/null and b/buildSrc/build/classes/kotlin/main/Versions.class differ
diff --git a/buildSrc/build/kotlin/buildSrcjar-classes.txt b/buildSrc/build/kotlin/buildSrcjar-classes.txt
new file mode 100644
index 0000000..2c691ab
--- /dev/null
+++ b/buildSrc/build/kotlin/buildSrcjar-classes.txt
@@ -0,0 +1 @@
+/Users/rodrigosoria/Documents/Rootstrap/projects/Android-base/repos/android-base/buildSrc/build/classes/kotlin/main/Libs.class:/Users/rodrigosoria/Documents/Rootstrap/projects/Android-base/repos/android-base/buildSrc/build/classes/kotlin/main/Versions.class
\ No newline at end of file
diff --git a/buildSrc/build/kotlin/compileKotlin/build-history.bin b/buildSrc/build/kotlin/compileKotlin/build-history.bin
new file mode 100644
index 0000000..69260e2
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/build-history.bin differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream
new file mode 100644
index 0000000..5055fcf
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len
new file mode 100644
index 0000000..e5009a4
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at
new file mode 100644
index 0000000..2579da1
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i
new file mode 100644
index 0000000..2aa8c96
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab
new file mode 100644
index 0000000..310a67f
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
new file mode 100644
index 0000000..a49790f
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
new file mode 100644
index 0000000..46715fa
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
new file mode 100644
index 0000000..fc0e221
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i
new file mode 100644
index 0000000..61f2028
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
new file mode 100644
index 0000000..b3cd270
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
new file mode 100644
index 0000000..a49790f
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
new file mode 100644
index 0000000..46715fa
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
new file mode 100644
index 0000000..8cdc05e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
new file mode 100644
index 0000000..61f2028
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab
new file mode 100644
index 0000000..cc5fab2
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream
new file mode 100644
index 0000000..a49790f
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len
new file mode 100644
index 0000000..46715fa
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at
new file mode 100644
index 0000000..e276085
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i
new file mode 100644
index 0000000..61f2028
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab
new file mode 100644
index 0000000..b3cd270
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
new file mode 100644
index 0000000..a49790f
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len
new file mode 100644
index 0000000..46715fa
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at
new file mode 100644
index 0000000..8cdc05e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i
new file mode 100644
index 0000000..61f2028
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab
new file mode 100644
index 0000000..fdc24c9
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream
new file mode 100644
index 0000000..5647f68
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len
new file mode 100644
index 0000000..a930d6b
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len
new file mode 100644
index 0000000..a9f80ae
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at
new file mode 100644
index 0000000..fee7fa0
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i
new file mode 100644
index 0000000..41263e6
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream
new file mode 100644
index 0000000..ee294e7
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len
new file mode 100644
index 0000000..79ad34c
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
new file mode 100644
index 0000000..a9c3345
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i
new file mode 100644
index 0000000..ba22fb9
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab
new file mode 100644
index 0000000..166c057
--- /dev/null
+++ b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab
@@ -0,0 +1,2 @@
+1
+0
\ No newline at end of file
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab
new file mode 100644
index 0000000..bdf584a
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream
new file mode 100644
index 0000000..ee294e7
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len
new file mode 100644
index 0000000..79ad34c
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at
new file mode 100644
index 0000000..5875372
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i
new file mode 100644
index 0000000..3c9dca6
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab
new file mode 100644
index 0000000..8aad32b
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream
new file mode 100644
index 0000000..08e7df1
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len
new file mode 100644
index 0000000..b7da01d
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at
new file mode 100644
index 0000000..bb3ce0d
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab
new file mode 100644
index 0000000..27f4b2e
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream
new file mode 100644
index 0000000..eb6b8e7
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len
new file mode 100644
index 0000000..b8872cd
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len
new file mode 100644
index 0000000..62cf1e5
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at
new file mode 100644
index 0000000..6062bbf
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i
new file mode 100644
index 0000000..ef6cc32
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i differ
diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i.len differ
diff --git a/buildSrc/build/kotlin/compileKotlin/last-build.bin b/buildSrc/build/kotlin/compileKotlin/last-build.bin
new file mode 100644
index 0000000..83cec77
Binary files /dev/null and b/buildSrc/build/kotlin/compileKotlin/last-build.bin differ
diff --git a/buildSrc/build/libs/buildSrc.jar b/buildSrc/build/libs/buildSrc.jar
new file mode 100644
index 0000000..a5b2b82
Binary files /dev/null and b/buildSrc/build/libs/buildSrc.jar differ
diff --git a/buildSrc/build/pluginUnderTestMetadata/plugin-under-test-metadata.properties b/buildSrc/build/pluginUnderTestMetadata/plugin-under-test-metadata.properties
new file mode 100644
index 0000000..a62bd1c
--- /dev/null
+++ b/buildSrc/build/pluginUnderTestMetadata/plugin-under-test-metadata.properties
@@ -0,0 +1 @@
+implementation-classpath=/Users/rodrigosoria/Documents/Rootstrap/projects/Android-base/repos/android-base/buildSrc/build/classes/java/main\:/Users/rodrigosoria/Documents/Rootstrap/projects/Android-base/repos/android-base/buildSrc/build/classes/groovy/main\:/Users/rodrigosoria/Documents/Rootstrap/projects/Android-base/repos/android-base/buildSrc/build/classes/kotlin/main\:/Users/rodrigosoria/Documents/Rootstrap/projects/Android-base/repos/android-base/buildSrc/build/resources/main
diff --git a/buildSrc/build/reports/plugin-development/validation-report.txt b/buildSrc/build/reports/plugin-development/validation-report.txt
new file mode 100644
index 0000000..e69de29
diff --git a/buildSrc/build/source-roots/buildSrc/source-roots.txt b/buildSrc/build/source-roots/buildSrc/source-roots.txt
new file mode 100644
index 0000000..2d932de
--- /dev/null
+++ b/buildSrc/build/source-roots/buildSrc/source-roots.txt
@@ -0,0 +1,8 @@
+src/main/resources
+src/main/java
+src/main/groovy
+src/main/kotlin
+src/test/resources
+src/test/java
+src/test/groovy
+src/test/kotlin
diff --git a/buildSrc/build/tmp/jar/MANIFEST.MF b/buildSrc/build/tmp/jar/MANIFEST.MF
new file mode 100644
index 0000000..58630c0
--- /dev/null
+++ b/buildSrc/build/tmp/jar/MANIFEST.MF
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+