```plantuml
@startuml
autonumber
title Fluxo de Stickyness para mobile

participant Developer
participant SuperApp
participant AmeAppTools
participant ALB
participant AmeCliReloader1
participant AmeCliReloader2
participant AmeCliReloader3
participant ShareApi

Developer->AmeAppTools: start()
AmeAppTools->AmeAppTools: cookie = loadCookie('~/.ame.cookie.json')
AmeAppTools->AmeAppTools: bootstrapUrl = bootstrapUrl.append(cookie)
AmeAppTools->AmeAppTools: data = buildQrCodeData(bootstrapUrl)
AmeAppTools->ALB: saveQrCodeData(data, cookie)
ALB->ALB: chooseWorkspaceInstance(cookie)
note over ALB
    Se o Cookie veio vazio o ALB seleciona o AmeCliReloader1
    Se o Cookie veio preenchido o ALB seleciona a instancia definida no cookie
end note
ALB->AmeCliReloader1: saveQrCodeData(data)
AmeCliReloader1->ShareApi: saveQrCodeData(data)
ShareApi-->AmeCliReloader1:
AmeCliReloader1-->ALB:
ALB-->AmeAppTools: cookie
AmeAppTools->ALB: uploadSourceCode(cookie, 'foo.js')
ALB->ALB: chooseWorkspaceInstance(cookie)
ALB->AmeCliReloader1: uploadSourceCode()
ALB<--AmeCliReloader1
ALB->ALB: Se o cookie expirou um novo será gerado
ALB-->AmeAppTools: cookie
AmeAppTools->AmeAppTools: save(cookie, '~/.ame.cookie.json')
AmeAppTools->AmeAppTools: showQrCode()
Developer->SuperApp: scanQrCode()
SuperApp->ShareApi: data = getQrCodeData()
SuperApp->ALB: getMiniApp(data.bootstrapUrl)
ALB->ALB: chooseWorkpaceInstance(bootstrapUrl.query('cid'))
ALB->AmeCliReloader1: getMiniApp(data.bootstrapUrl)
AmeCliReloader1-->ALB: html do miniapp
ALB-->SuperApp: html do miniapp
SuperApp->SuperApp: Exibe miniapp
@enduml
```