Commit b58b7920 authored by Paul Fiterau Brostean's avatar Paul Fiterau Brostean
Browse files

Simulation for Mealy Machine, importer for .dot Mealy Machine, basic tests

parent 23a50ad7
...@@ -6,9 +6,11 @@ from learn.algorithm import learn ...@@ -6,9 +6,11 @@ from learn.algorithm import learn
from learn.algorithm import learn_mbt from learn.algorithm import learn_mbt
from learn.fa import FALearner from learn.fa import FALearner
from learn.ra import RALearner from learn.ra import RALearner
from parse.importer import build_automaton_from_dot
from sut import SUTType from sut import SUTType
from sut.fifoset import FIFOSetClass from sut.fifoset import FIFOSetClass
from sut.login import new_login_sut, LoginClass from sut.login import new_login_sut, LoginClass
from sut.simulation import MealyMachineSimulation
from test import IORATest from test import IORATest
from test.rwalk import IORARWalkFromState, MealyRWalkFromState, DFARWalkFromState, RARWalkFromState from test.rwalk import IORARWalkFromState, MealyRWalkFromState, DFARWalkFromState, RARWalkFromState
from tests.iora_testscenario import * from tests.iora_testscenario import *
...@@ -16,7 +18,7 @@ from encode.iora import IORAEncoder ...@@ -16,7 +18,7 @@ from encode.iora import IORAEncoder
# some example runs # some example runs
def scrap_learn_iora(): def scalable_learn_iora():
learner = RALearner(IORAEncoder()) learner = RALearner(IORAEncoder())
test_type = IORATest test_type = IORATest
exp = sut_m5 exp = sut_m5
...@@ -24,7 +26,7 @@ def scrap_learn_iora(): ...@@ -24,7 +26,7 @@ def scrap_learn_iora():
print(model) print(model)
print(statistics) print(statistics)
def scrap_learn_mbt_iora(): def scalable_learn_mbt_iora():
learner = RALearner(IORAEncoder()) learner = RALearner(IORAEncoder())
learner.set_timeout(10000) learner.set_timeout(10000)
sut = new_login_sut(1) sut = new_login_sut(1)
...@@ -33,7 +35,7 @@ def scrap_learn_mbt_iora(): ...@@ -33,7 +35,7 @@ def scrap_learn_mbt_iora():
print(model) print(model)
print(statistics) print(statistics)
def scrap_learn_mbt_mealy(): def scalable_learn_mbt_mealy():
learner = FALearner(MealyEncoder()) learner = FALearner(MealyEncoder())
learner.set_timeout(1000) learner.set_timeout(1000)
login = LoginClass() login = LoginClass()
...@@ -43,7 +45,7 @@ def scrap_learn_mbt_mealy(): ...@@ -43,7 +45,7 @@ def scrap_learn_mbt_mealy():
print(model) print(model)
print(statistics) print(statistics)
def scrap_learn_mbt_dfa(): def scalable_learn_mbt_dfa():
learner = FALearner(DFAEncoder()) learner = FALearner(DFAEncoder())
learner.set_timeout(100000) learner.set_timeout(100000)
login = LoginClass() login = LoginClass()
...@@ -53,7 +55,7 @@ def scrap_learn_mbt_dfa(): ...@@ -53,7 +55,7 @@ def scrap_learn_mbt_dfa():
print(model) print(model)
print(statistics) print(statistics)
def scrap_learn_mbt_ra(): def scalable_learn_mbt_ra():
learner = RALearner(RAEncoder()) learner = RALearner(RAEncoder())
learner.set_timeout(600000) learner.set_timeout(600000)
login = FIFOSetClass() login = FIFOSetClass()
...@@ -63,5 +65,20 @@ def scrap_learn_mbt_ra(): ...@@ -63,5 +65,20 @@ def scrap_learn_mbt_ra():
print(model) print(model)
print(statistics) print(statistics)
scrap_learn_mbt_mealy() def sim_learn_mbt_ra():
#scrap_learn_mbt_iora() learner = FALearner(MealyEncoder())
learner.set_timeout(10000)
import os.path
maestro_aut = build_automaton_from_dot("MealyMachine", os.path.join("resources", "bankcards", "MAESTRO.dot"))
print(maestro_aut)
#exit(2)
maestro_sut = MealyMachineSimulation(maestro_aut)
mbt = MealyRWalkFromState(maestro_sut, 3, 0.2)
(model, statistics) = learn_mbt(learner, mbt, 10000)
print(model)
print(statistics)
sim_learn_mbt_ra()
#scalable_learn_mbt_mealy()
#scalable_learn_mbt_iora()
digraph G {
label=""
s0 [color="red"]
s1
s2
s3
s4
s5
s0 [label="s0"];
s0 -> s0[label="generateACSecondARQC/6D00"]
s0 -> s0[label="generateACSecondTC/6D00"]
s0 -> s0[label="generateACFirstAAC/6D00"]
s0 -> s0[label="getValidData/6A88"]
s0 -> s0[label="getProcessingOptionsInvalid/6D00"]
s0 -> s0[label="generateACSecondAAC/6D00"]
s0 -> s0[label="generateACFirstTC/6D00"]
s0 -> s0[label="getInvalidData/6A88"]
s0 -> s1[label="selectApplication/9000"]
s0 -> s0[label="generateACFirstARQC/6D00"]
s0 -> s0[label="readValidRecord/6E00"]
s0 -> s0[label="getProcessingOptions/6D00"]
s0 -> s0[label="readInvalidRecord/6E00"]
s0 -> s0[label="internalAuthenticate/6E00"]
s1 [label="s1"];
s1 -> s1[label="generateACSecondARQC/6985"]
s1 -> s1[label="generateACSecondTC/6985"]
s1 -> s1[label="generateACFirstAAC/6985"]
s1 -> s1[label="getValidData/9000"]
s1 -> s1[label="getProcessingOptionsInvalid/6985"]
s1 -> s1[label="generateACSecondAAC/6985"]
s1 -> s1[label="generateACFirstTC/6985"]
s1 -> s1[label="getInvalidData/6A88"]
s1 -> s1[label="selectApplication/9000"]
s1 -> s1[label="generateACFirstARQC/6985"]
s1 -> s1[label="readValidRecord/9000"]
s1 -> s2[label="getProcessingOptions/9000"]
s1 -> s1[label="readInvalidRecord/6A82"]
s1 -> s1[label="internalAuthenticate/6985"]
s2 [label="s2"];
s2 -> s1[label="generateACSecondARQC/6700"]
s2 -> s1[label="generateACSecondTC/6700"]
s2 -> s3[label="generateACFirstAAC/900000"]
s2 -> s2[label="getValidData/9000"]
s2 -> s1[label="getProcessingOptionsInvalid/6985"]
s2 -> s1[label="generateACSecondAAC/6700"]
s2 -> s4[label="generateACFirstTC/900080"]
s2 -> s1[label="getInvalidData/6A88"]
s2 -> s1[label="selectApplication/9000"]
s2 -> s4[label="generateACFirstARQC/900080"]
s2 -> s2[label="readValidRecord/9000"]
s2 -> s1[label="getProcessingOptions/6985"]
s2 -> s1[label="readInvalidRecord/6A82"]
s2 -> s5[label="internalAuthenticate/9000"]
s3 [label="s3"];
s3 -> s1[label="generateACSecondARQC/6985"]
s3 -> s1[label="generateACSecondTC/6985"]
s3 -> s1[label="generateACFirstAAC/6985"]
s3 -> s1[label="getValidData/6985"]
s3 -> s1[label="getProcessingOptionsInvalid/6985"]
s3 -> s1[label="generateACSecondAAC/6985"]
s3 -> s1[label="generateACFirstTC/6985"]
s3 -> s1[label="getInvalidData/6985"]
s3 -> s1[label="selectApplication/9000"]
s3 -> s1[label="generateACFirstARQC/6985"]
s3 -> s1[label="readValidRecord/6985"]
s3 -> s1[label="getProcessingOptions/6985"]
s3 -> s1[label="readInvalidRecord/6985"]
s3 -> s1[label="internalAuthenticate/6985"]
s4 [label="s4"];
s4 -> s1[label="generateACSecondARQC/6A86"]
s4 -> s3[label="generateACSecondTC/900000"]
s4 -> s1[label="generateACFirstAAC/6700"]
s4 -> s1[label="getValidData/6985"]
s4 -> s1[label="getProcessingOptionsInvalid/6985"]
s4 -> s3[label="generateACSecondAAC/900000"]
s4 -> s1[label="generateACFirstTC/6700"]
s4 -> s1[label="getInvalidData/6985"]
s4 -> s1[label="selectApplication/9000"]
s4 -> s1[label="generateACFirstARQC/6A86"]
s4 -> s1[label="readValidRecord/6985"]
s4 -> s1[label="getProcessingOptions/6985"]
s4 -> s1[label="readInvalidRecord/6985"]
s4 -> s1[label="internalAuthenticate/6985"]
s5 [label="s5"];
s5 -> s1[label="generateACSecondARQC/6700"]
s5 -> s1[label="generateACSecondTC/6700"]
s5 -> s3[label="generateACFirstAAC/900000"]
s5 -> s5[label="getValidData/9000"]
s5 -> s1[label="getProcessingOptionsInvalid/6985"]
s5 -> s1[label="generateACSecondAAC/6700"]
s5 -> s4[label="generateACFirstTC/900080"]
s5 -> s1[label="getInvalidData/6A88"]
s5 -> s1[label="selectApplication/9000"]
s5 -> s4[label="generateACFirstARQC/900080"]
s5 -> s5[label="readValidRecord/9000"]
s5 -> s1[label="getProcessingOptions/6985"]
s5 -> s1[label="readInvalidRecord/6A82"]
s5 -> s1[label="internalAuthenticate/6985"]
}
digraph G {
label=""
s0 [color="red"]
s1
s2
s3
s4
s5
s0 [label="s0"];
s0 -> s0[label="generateACSecondARQC/6D00"]
s0 -> s0[label="generateACSecondTC/6D00"]
s0 -> s0[label="generateACFirstAAC/6D00"]
s0 -> s0[label="getValidData/9000"]
s0 -> s0[label="getProcessingOptionsInvalid/6D00"]
s0 -> s0[label="generateACSecondAAC/6D00"]
s0 -> s0[label="generateACFirstTC/6D00"]
s0 -> s0[label="getInvalidData/6A86"]
s0 -> s1[label="selectApplication/9000"]
s0 -> s0[label="generateACFirstARQC/6D00"]
s0 -> s0[label="readValidRecord/9000"]
s0 -> s0[label="getProcessingOptions/6D00"]
s0 -> s0[label="readInvalidRecord/6A82"]
s0 -> s0[label="internalAuthenticate/6D00"]
s1 [label="s1"];
s1 -> s1[label="generateACSecondARQC/6985"]
s1 -> s1[label="generateACSecondTC/6985"]
s1 -> s1[label="generateACFirstAAC/6985"]
s1 -> s1[label="getValidData/9000"]
s1 -> s1[label="getProcessingOptionsInvalid/6985"]
s1 -> s1[label="generateACSecondAAC/6985"]
s1 -> s1[label="generateACFirstTC/6985"]
s1 -> s1[label="getInvalidData/6A88"]
s1 -> s1[label="selectApplication/9000"]
s1 -> s1[label="generateACFirstARQC/6985"]
s1 -> s1[label="readValidRecord/9000"]
s1 -> s2[label="getProcessingOptions/9000"]
s1 -> s1[label="readInvalidRecord/6A82"]
s1 -> s1[label="internalAuthenticate/6985"]
s2 [label="s2"];
s2 -> s1[label="generateACSecondARQC/6700"]
s2 -> s1[label="generateACSecondTC/6700"]
s2 -> s3[label="generateACFirstAAC/900000"]
s2 -> s2[label="getValidData/9000"]
s2 -> s1[label="getProcessingOptionsInvalid/6985"]
s2 -> s1[label="generateACSecondAAC/6700"]
s2 -> s4[label="generateACFirstTC/900080"]
s2 -> s1[label="getInvalidData/6A88"]
s2 -> s1[label="selectApplication/9000"]
s2 -> s4[label="generateACFirstARQC/900080"]
s2 -> s2[label="readValidRecord/9000"]
s2 -> s1[label="getProcessingOptions/6985"]
s2 -> s1[label="readInvalidRecord/6A82"]
s2 -> s5[label="internalAuthenticate/9000"]
s3 [label="s3"];
s3 -> s1[label="generateACSecondARQC/6985"]
s3 -> s1[label="generateACSecondTC/6985"]
s3 -> s1[label="generateACFirstAAC/6985"]
s3 -> s1[label="getValidData/6985"]
s3 -> s1[label="getProcessingOptionsInvalid/6985"]
s3 -> s1[label="generateACSecondAAC/6985"]
s3 -> s1[label="generateACFirstTC/6985"]
s3 -> s1[label="getInvalidData/6A88"]
s3 -> s1[label="selectApplication/9000"]
s3 -> s1[label="generateACFirstARQC/6985"]
s3 -> s1[label="readValidRecord/6985"]
s3 -> s1[label="getProcessingOptions/6985"]
s3 -> s1[label="readInvalidRecord/6985"]
s3 -> s1[label="internalAuthenticate/6985"]
s4 [label="s4"];
s4 -> s1[label="generateACSecondARQC/6A86"]
s4 -> s3[label="generateACSecondTC/900000"]
s4 -> s1[label="generateACFirstAAC/6700"]
s4 -> s1[label="getValidData/6985"]
s4 -> s1[label="getProcessingOptionsInvalid/6985"]
s4 -> s3[label="generateACSecondAAC/900000"]
s4 -> s1[label="generateACFirstTC/6700"]
s4 -> s1[label="getInvalidData/6A88"]
s4 -> s1[label="selectApplication/9000"]
s4 -> s1[label="generateACFirstARQC/6A86"]
s4 -> s1[label="readValidRecord/6985"]
s4 -> s1[label="getProcessingOptions/6985"]
s4 -> s1[label="readInvalidRecord/6985"]
s4 -> s1[label="internalAuthenticate/6985"]
s5 [label="s5"];
s5 -> s1[label="generateACSecondARQC/6700"]
s5 -> s1[label="generateACSecondTC/6700"]
s5 -> s3[label="generateACFirstAAC/900000"]
s5 -> s5[label="getValidData/9000"]
s5 -> s1[label="getProcessingOptionsInvalid/6985"]
s5 -> s1[label="generateACSecondAAC/6700"]
s5 -> s4[label="generateACFirstTC/900080"]
s5 -> s1[label="getInvalidData/6A88"]
s5 -> s1[label="selectApplication/9000"]
s5 -> s4[label="generateACFirstARQC/900080"]
s5 -> s5[label="readValidRecord/9000"]
s5 -> s1[label="getProcessingOptions/6985"]
s5 -> s1[label="readInvalidRecord/6A82"]
s5 -> s1[label="internalAuthenticate/6985"]
}
digraph G {
label=""
s0 [color="red"]
s1
s2
s3
s4
s5
s0 [label="s0"];
s0 -> s0[label="generateACSecondARQC/6D00"]
s0 -> s0[label="generateACSecondTC/6D00"]
s0 -> s0[label="generateACFirstAAC/6D00"]
s0 -> s0[label="getValidData/6A88"]
s0 -> s0[label="getProcessingOptionsInvalid/6D00"]
s0 -> s0[label="generateACSecondAAC/6D00"]
s0 -> s0[label="generateACFirstTC/6D00"]
s0 -> s0[label="getInvalidData/6A88"]
s0 -> s1[label="selectApplication/9000"]
s0 -> s0[label="generateACFirstARQC/6D00"]
s0 -> s0[label="readValidRecord/6E00"]
s0 -> s0[label="getProcessingOptions/6D00"]
s0 -> s0[label="readInvalidRecord/6E00"]
s0 -> s0[label="internalAuthenticate/6E00"]
s1 [label="s1"];
s1 -> s1[label="generateACSecondARQC/6985"]
s1 -> s1[label="generateACSecondTC/6985"]
s1 -> s1[label="generateACFirstAAC/6985"]
s1 -> s1[label="getValidData/9000"]
s1 -> s1[label="getProcessingOptionsInvalid/6985"]
s1 -> s1[label="generateACSecondAAC/6985"]
s1 -> s1[label="generateACFirstTC/6985"]
s1 -> s1[label="getInvalidData/6A88"]
s1 -> s1[label="selectApplication/9000"]
s1 -> s1[label="generateACFirstARQC/6985"]
s1 -> s1[label="readValidRecord/9000"]
s1 -> s2[label="getProcessingOptions/9000"]
s1 -> s1[label="readInvalidRecord/6A82"]
s1 -> s1[label="internalAuthenticate/6985"]
s2 [label="s2"];
s2 -> s1[label="generateACSecondARQC/6700"]
s2 -> s1[label="generateACSecondTC/6700"]
s2 -> s3[label="generateACFirstAAC/900000"]
s2 -> s2[label="getValidData/9000"]
s2 -> s1[label="getProcessingOptionsInvalid/6985"]
s2 -> s1[label="generateACSecondAAC/6700"]
s2 -> s4[label="generateACFirstTC/900080"]
s2 -> s1[label="getInvalidData/6A88"]
s2 -> s1[label="selectApplication/9000"]
s2 -> s4[label="generateACFirstARQC/900080"]
s2 -> s2[label="readValidRecord/9000"]
s2 -> s1[label="getProcessingOptions/6985"]
s2 -> s1[label="readInvalidRecord/6A82"]
s2 -> s5[label="internalAuthenticate/9000"]
s3 [label="s3"];
s3 -> s1[label="generateACSecondARQC/6985"]
s3 -> s1[label="generateACSecondTC/6985"]
s3 -> s1[label="generateACFirstAAC/6985"]
s3 -> s1[label="getValidData/6985"]
s3 -> s1[label="getProcessingOptionsInvalid/6985"]
s3 -> s1[label="generateACSecondAAC/6985"]
s3 -> s1[label="generateACFirstTC/6985"]
s3 -> s1[label="getInvalidData/6985"]
s3 -> s1[label="selectApplication/9000"]
s3 -> s1[label="generateACFirstARQC/6985"]
s3 -> s1[label="readValidRecord/6985"]
s3 -> s1[label="getProcessingOptions/6985"]
s3 -> s1[label="readInvalidRecord/6985"]
s3 -> s1[label="internalAuthenticate/6985"]
s4 [label="s4"];
s4 -> s1[label="generateACSecondARQC/6A86"]
s4 -> s3[label="generateACSecondTC/900000"]
s4 -> s1[label="generateACFirstAAC/6700"]
s4 -> s1[label="getValidData/6985"]
s4 -> s1[label="getProcessingOptionsInvalid/6985"]
s4 -> s3[label="generateACSecondAAC/900000"]
s4 -> s1[label="generateACFirstTC/6700"]
s4 -> s1[label="getInvalidData/6985"]
s4 -> s1[label="selectApplication/9000"]
s4 -> s1[label="generateACFirstARQC/6A86"]
s4 -> s1[label="readValidRecord/6985"]
s4 -> s1[label="getProcessingOptions/6985"]
s4 -> s1[label="readInvalidRecord/6985"]
s4 -> s1[label="internalAuthenticate/6985"]
s5 [label="s5"];
s5 -> s1[label="generateACSecondARQC/6700"]
s5 -> s1[label="generateACSecondTC/6700"]
s5 -> s3[label="generateACFirstAAC/900000"]
s5 -> s5[label="getValidData/9000"]
s5 -> s1[label="getProcessingOptionsInvalid/6985"]
s5 -> s1[label="generateACSecondAAC/6700"]
s5 -> s4[label="generateACFirstTC/900080"]
s5 -> s1[label="getInvalidData/6A88"]
s5 -> s1[label="selectApplication/9000"]
s5 -> s4[label="generateACFirstARQC/900080"]
s5 -> s5[label="readValidRecord/9000"]
s5 -> s1[label="getProcessingOptions/6985"]
s5 -> s1[label="readInvalidRecord/6A82"]
s5 -> s1[label="internalAuthenticate/6985"]
}
digraph G {
label=""
s0 [color="red"]
s1
s2
s3
s0 [label="s0"];
s0 -> s0[label="generateACSecondARQC/6D00"]
s0 -> s0[label="generateACSecondTC/6D00"]
s0 -> s0[label="generateACFirstAAC/6D00"]
s0 -> s0[label="getValidData/6A88"]
s0 -> s0[label="getProcessingOptionsInvalid/6D00"]
s0 -> s0[label="generateACSecondAAC/6D00"]
s0 -> s0[label="generateACFirstTC/6D00"]
s0 -> s0[label="getInvalidData/6A88"]
s0 -> s1[label="selectApplication/9000"]
s0 -> s0[label="generateACFirstARQC/6D00"]
s0 -> s0[label="readValidRecord/6E00"]
s0 -> s0[label="getProcessingOptions/6D00"]
s0 -> s0[label="readInvalidRecord/6E00"]
s0 -> s0[label="internalAuthenticate/6E00"]
s1 [label="s1"];
s1 -> s1[label="generateACSecondARQC/6985"]
s1 -> s1[label="generateACSecondTC/6985"]
s1 -> s1[label="generateACFirstAAC/6985"]
s1 -> s1[label="getValidData/9000"]
s1 -> s1[label="getProcessingOptionsInvalid/6985"]
s1 -> s1[label="generateACSecondAAC/6985"]
s1 -> s1[label="generateACFirstTC/6985"]
s1 -> s1[label="getInvalidData/6A88"]
s1 -> s1[label="selectApplication/9000"]
s1 -> s1[label="generateACFirstARQC/6985"]
s1 -> s1[label="readValidRecord/9000"]
s1 -> s2[label="getProcessingOptions/9000"]
s1 -> s1[label="readInvalidRecord/6A82"]
s1 -> s1[label="internalAuthenticate/6985"]
s2 [label="s2"];
s2 -> s1[label="generateACSecondARQC/6700"]
s2 -> s1[label="generateACSecondTC/6700"]
s2 -> s3[label="generateACFirstAAC/900000"]
s2 -> s2[label="getValidData/9000"]
s2 -> s1[label="getProcessingOptionsInvalid/6985"]
s2 -> s1[label="generateACSecondAAC/6700"]
s2 -> s3[label="generateACFirstTC/900000"]
s2 -> s1[label="getInvalidData/6A88"]
s2 -> s1[label="selectApplication/9000"]
s2 -> s3[label="generateACFirstARQC/900000"]
s2 -> s2[label="readValidRecord/9000"]
s2 -> s1[label="getProcessingOptions/6985"]
s2 -> s1[label="readInvalidRecord/6A82"]
s2 -> s1[label="internalAuthenticate/6987"]
s3 [label="s3"];
s3 -> s1[label="generateACSecondARQC/6985"]
s3 -> s1[label="generateACSecondTC/6985"]
s3 -> s1[label="generateACFirstAAC/6985"]
s3 -> s1[label="getValidData/6985"]
s3 -> s1[label="getProcessingOptionsInvalid/6985"]
s3 -> s1[label="generateACSecondAAC/6985"]
s3 -> s1[label="generateACFirstTC/6985"]
s3 -> s1[label="getInvalidData/6985"]
s3 -> s1[label="selectApplication/9000"]
s3 -> s1[label="generateACFirstARQC/6985"]
s3 -> s1[label="readValidRecord/6985"]
s3 -> s1[label="getProcessingOptions/6985"]
s3 -> s1[label="readInvalidRecord/6985"]
s3 -> s1[label="internalAuthenticate/6985"]
}
digraph G {
label=""
s0 [color="red"]
s1
s2
s3
s4
s5
s6
s7
s8
s0 [label="s0"];
s0 -> s0[label="generateACSecondTC/6D00"]
s0 -> s0[label="generateACSecondARQC/6D00"]
s0 -> s0[label="generateACFirstAAC/6D00"]
s0 -> s0[label="getValidData/6A88"]
s0 -> s0[label="getProcessingOptionsInvalid/6D00"]
s0 -> s0[label="generateACSecondAAC/6D00"]
s0 -> s0[label="generateACFirstTC/6D00"]
s0 -> s0[label="getInvalidData/6A88"]
s0 -> s1[label="selectApplication/9000"]
s0 -> s0[label="generateACFirstARQC/6D00"]
s0 -> s0[label="readValidRecord/6D00"]
s0 -> s0[label="getProcessingOptions/6D00"]
s0 -> s0[label="readInvalidRecord/6D00"]
s0 -> s0[label="verifyPINPlaintextCorrect/6D00"]
s0 -> s0[label="internalAuthenticate/6D00"]
s1 [label="s1"];
s1 -> s1[label="generateACSecondTC/6985"]
s1 -> s1[label="generateACSecondARQC/6985"]
s1 -> s1[label="generateACFirstAAC/6985"]
s1 -> s1[label="getValidData/9000"]
s1 -> s1[label="getProcessingOptionsInvalid/6A80"]
s1 -> s1[label="generateACSecondAAC/6985"]
s1 -> s1[label="generateACFirstTC/6985"]
s1 -> s1[label="getInvalidData/6A81"]
s1 -> s1[label="selectApplication/9000"]
s1 -> s1[label="generateACFirstARQC/6985"]
s1 -> s1[label="readValidRecord/9000"]
s1 -> s2[label="getProcessingOptions/9000"]
s1 -> s1[label="readInvalidRecord/6A83"]
s1 -> s1[label="verifyPINPlaintextCorrect/9000"]
s1 -> s3[label="internalAuthenticate/9000"]
s2 [label="s2"];
s2 -> s6[label="generateACSecondTC/90008001"]
s2 -> s6[label="generateACSecondARQC/90008001"]
s2 -> s5[label="generateACFirstAAC/90000001"]
s2 -> s2[label="getValidData/9000"]
s2 -> s2[label="getProcessingOptionsInvalid/6985"]
s2 -> s5[label="generateACSecondAAC/9000001"]
s2 -> s6[label="generateACFirstTC/90008001"]
s2 -> s2[label="getInvalidData/6A81"]
s2 -> s1[label="selectApplication/9000"]
s2 -> s6[label="generateACFirstARQC/90008001"]
s2 -> s2[label="readValidRecord/9000"]
s2 -> s2[label="getProcessingOptions/6985"]
s2 -> s2[label="readInvalidRecord/6A83"]
s2 -> s2[label="verifyPINPlaintextCorrect/9000"]
s2 -> s4[label="internalAuthenticate/9000"]
s3 [label="s3"];
s3 -> s3[label="generateACSecondTC/6985"]
s3 -> s3[label="generateACSecondARQC/6985"]
s3 -> s3[label="generateACFirstAAC/6985"]
s3 -> s3[label="getValidData/9000"]
s3 -> s3[label="getProcessingOptionsInvalid/6A80"]
s3 -> s3[label="generateACSecondAAC/6985"]
s3 -> s3[label="generateACFirstTC/6985"]
s3 -> s3[label="getInvalidData/6A81"]
s3 -> s1[label="selectApplication/9000"]
s3 -> s3[label="generateACFirstARQC/6985"]
s3 -> s3[label="readValidRecord/9000"]
s3 -> s4[label="getProcessingOptions/9000"]
s3 -> s3[label="readInvalidRecord/6A83"]
s3 -> s3[label="verifyPINPlaintextCorrect/9000"]
s3 -> s3[label="internalAuthenticate/6985"]
s4 [label="s4"];
s4 -> s8[label="generateACSecondTC/90008001"]
s4 -> s8[label="generateACSecondARQC/90008001"]
s4 -> s7[label="generateACFirstAAC/90000001"]
s4 -> s4[label="getValidData/9000"]
s4 -> s4[label="getProcessingOptionsInvalid/6985"]
s4 -> s7[label="generateACSecondAAC/9000001"]
s4 -> s8[label="generateACFirstTC/90008001"]
s4 -> s4[label="getInvalidData/6A81"]
s4 -> s1[label="selectApplication/9000"]
s4 -> s8[label="generateACFirstARQC/90008001"]
s4 -> s4[label="readValidRecord/9000"]
s4 -> s4[label="getProcessingOptions/6985"]
s4 -> s4[label="readInvalidRecord/6A83"]
s4 -> s4[label="verifyPINPlaintextCorrect/9000"]
s4 -> s4[label="internalAuthenticate/6985"]
s5 [label="s5"];
s5 -> s5[label="generateACSecondTC/6985"]
s5 -> s5[label="generateACSecondARQC/6985"]
s5 -> s5[label="generateACFirstAAC/6985"]
s5 -> s5[label="getValidData/9000"]
s5 -> s5[label="getProcessingOptionsInvalid/6985"]
s5 -> s5[label="generateACSecondAAC/6985"]
s5 -> s5[label="generateACFirstTC/6985"]
s5 -> s5[label="getInvalidData/6A81"]
s5 -> s1[label="selectApplication/9000"]
s5 -> s5[label="generateACFirstARQC/6985"]
s5 -> s5[label="readValidRecord/9000"]
s5 -> s5[label="getProcessingOptions/6985"]
s5 -> s5[label="readInvalidRecord/6A83"]
s5 -> s5[label="verifyPINPlaintextCorrect/9000"]
s5 -> s7[label="internalAuthenticate/9000"]
s6 [label="s6"];
s6 -> s5[label="generateACSecondTC/90000001"]
s6 -> s6[label="generateACSecondARQC/6A86"]
s6 -> s5[label="generateACFirstAAC/90000001"]
s6 -> s6[label="getValidData/9000"]
s6 -> s6[label="getProcessingOptionsInvalid/6985"]
s6 -> s5[label="generateACSecondAAC/9000001"]
s6 -> s5[label="generateACFirstTC/90000001"]
s6 -> s6[label="getInvalidData/6A81"]
s6 -> s1[label="selectApplication/9000"]
s6 -> s6[label="generateACFirstARQC/6A86"]