def startSubmit():
    print '---------------startSubmit-----------------'
    wait("1430320099906.png", 60*15)
    click("1430320099906.png")
    wait(Pattern("1420681947377.png").similar(0.66).targetOffset(133,45), 60*5)
    click(Pattern("1420681947377.png").similar(0.66).targetOffset(133,45))
    wait("ScreenShot12-1.png", 60*5)
    click(Pattern("1446168625535.png").targetOffset(163,22))


wait(Pattern("ScreenShot23.png").similar(0.50), 60*2)
click(Pattern("ScreenShot23-1.png").similar(0.51).targetOffset(-20,6))

try:
    click(Pattern("ScreenShot24.png").similar(0.50).targetOffset(-19,7))
except:
    pass #ignore

#"Distribution" already set from the Java code, before this is run.

try: 
    click(Pattern("ScreenShot2-2.png").targetOffset(-23,-4))#misses sometimes
except:
    click(Pattern("ScreenShot2-3.png").targetOffset(-24,-2))
wait("ScreenShot21.png", 50)
type(Key.RIGHT)
for i in range(40): #press many times, may not catch all.
    type(Key.UP)
type(Key.DOWN)
sleep(1.0) #or it clicks lower than updated screen?
try:
    wait("1446252248235.png",10)
    type('\n')
except:
    click(Pattern("ScreenShot2-2.png").targetOffset(-23,-4))
    wait("ScreenShot21.png", 50)
    type(Key.RIGHT)
    for i in range(40): #press many times, may not catch all.
        type(Key.UP)
    type(Key.DOWN)
    sleep(1.0)
    type('\n')
hover("1422062173974.png")

sleep(2.0) #or it fails: sometimes? Or is it caused by mouse being at top of screen?
try:
    click(Pattern("1421966195204.png").similar(0.54))
except: #If Sikuli menu shows up: switch:
    sleep(2.0)
    type(Key.TAB, KeyModifier.CMD)
    click("Screen Shot 2015-09-16 at 13.05.21.png")
    sleep(2.0)
    click(Pattern("1421966195204.png").similar(0.54)) #why does it still fail here often?
    sleep(2.0)
    
try:
    wait("1420666593541.png", 10)
    click(Pattern("1420666593541.png").targetOffset(-46,-4))
except:
    type(Key.TAB, KeyModifier.CMD)
    click(Pattern("1421966195204.png").similar(0.54)) #why does it still fail here often?
    click(Pattern("1420666593541.png").targetOffset(-63,-5))
wait("1446227799929.png", 60*20)
    
success = False
while not success:
    startSubmit()
    try:
        wait("1420673011996.png", 60*30)
        success = True
    
    except:
        print "-------------------timeout? do-over-------------------------"
        try:
            click(Pattern("1430754344325.png").targetOffset(-245,141))#cancel, errored
            startSubmit()
            wait("1420673011996.png", 60*30)
            success = True
        except:#not error, timeout?:
            click(Pattern("1430765583324.png").targetOffset(-239,142)) #cancel neverending submit
            print "----------------------Clicked neverending submit----------------------------------"
            startSubmit() #do-over
            try:
                wait("1420673011996.png", 60*30)
                success = True
            except:
                pass #Try below:

    try:
        click(Pattern("1430754344325.png").targetOffset(-234,141))#cancel, errored, retry:
        print "------------------------------Error-again? Retry...--------------------------------"
        #Back to start of loop
    except:#not error
        pass
#(here success=True, finally uploaded?)
click("1420673011996.png")
wait(Pattern("1420673038034.png").similar(0.82), 50) #in case unfocused?
click(Pattern("1420673038034.png").similar(0.82))
sleep(1.0)
wait(Pattern("1430247478502.png").similar(0.83), 60)
click(Pattern("1430247478502.png").similar(0.83))
wait("1420682203770.png", 10)
click(Pattern("1420682203770.png").targetOffset(-226,-5))
click("1420682274643.png")
wait(Pattern("1420681947377.png").similar(0.66).targetOffset(133,45), 60)
click(Pattern("1420681947377.png").similar(0.66).targetOffset(133,45))
try:
    wait("1436380962476.png", 20)
    click(Pattern("1436381024674.png").similar(0.58).targetOffset(210,30))
except:
    pass #ok
wait("ScreenShot13.png", 30)
click(Pattern("ScreenShot13-1.png").targetOffset(242,151))

wait("ScreenShot14.png", 30) #How does it not find this?
click(Pattern("ScreenShot14-1.png").targetOffset(190,119))#in case out of focus window
#This is really specific to os and finder setup, moved to Java:
#wait(Pattern("ScreenShot17.png").similar(0.58), 30)
#click(Pattern("ScreenShot17-1.png").similar(0.58).targetOffset(6,-8))
#drag(Pattern("ScreenShot20.png").targetOffset(-66,0))
#dropAt(Pattern("ScreenShot19.png").targetOffset(0,30))
#click(Pattern("ScreenShot17-1.png").similar(0.58).targetOffset(6,-8))
type('w', KeyModifier.CMD)
#ipa in desktop, should be moved. 
# Dsym file (folder actually) is ls ~/Library/Developer/Xcode/Archives/2015-01-14/Sharefaith\ ChurchApp\ 1-14-15\,\ 8.24\ AM.xcarchive/dSYMs/Sharefaith\ ChurchApp.app.dSYM/
# or similar.

wait("ScreenShot15.png", 10)
click(Pattern("ScreenShot15-1.png").targetOffset(-80,0))
#In focus, close:
type('w', KeyModifier.CMD)
wait("Screen Shot 2015-09-16 at 13.15.28.png", 10)
click(Pattern("Screen Shot 2015-09-16 at 13.15.28.png").targetOffset(-66,0))
#wait("ScreenShot22.png",10)
#click(Pattern("ScreenShot22-1.png").targetOffset(-38,13))