@startuml
!include <material/function>
!include <material/autorenew>
!include <material/shield_half_full>

left to right direction
skinparam defaultTextAlignment center

rectangle "<$ma_function>\nFunction\nGenerator" as gen #LightGreen
rectangle "<$ma_autorenew>\nTransformer 1" as trans1 #Salmon
rectangle "<$ma_autorenew>\nTransformer 2" as trans2 #Salmon
rectangle "<$ma_shield_half_full>\nGuard" as guard #LightPink

interface " " as q1
interface " " as q2
interface " " as q3
interface " " as q4
interface " " as q5
interface " " as q6
interface " " as q7
interface " " as q8
interface " " as q9
interface " " as qA

q1 --> gen: dt
gen --> q2: output
q2 --> guard: input
guard --> q3: guarded
guard -u-> q4: blocked
q4 -u-> trans1: input
trans1 -u-> q5: transformed
trans1 .u.> q6: original
q5 -> q1
q7 -> guard: leave
guard -> q8: unguarded
q8 -u-> trans2: input
trans2 .u.> q9: original
trans2 -u-> qA: transformed
qA -l-> q1
@enduml
