Exemple #1
0
    def __init__(self, canvas, nrOfDiscs, speed, moveCntDisplay=None):
        """Sets Canvas to play on as well as default values for
        number of discs and animation-speed.
        moveCntDisplay is a function with 1 parameter, which communicates
        the count of the actual move to the GUI containing the
        Hanoi-engine-canvas."""
        self.ts = canvas
        self.ts.tracer(False)
        # setup scene
        self.designer = RawTurtle(canvas, shape="square")
        self.designer.penup()
        self.designer.shapesize(0.5, 21)
        self.designer.goto(0, -80)
        self.designer.stamp()
        self.designer.shapesize(7, 0.5)
        self.designer.fillcolor('darkgreen')
        for x in -140, 0, 140:
            self.designer.goto(x, -5)
            self.designer.stamp()

        self.nrOfDiscs = nrOfDiscs
        self.speed = speed
        self.moveDisplay = moveCntDisplay
        self.running = False
        self.moveCnt = 0
        self.discs = [Disc(canvas) for i in range(10)]
        self.towerA = Tower(-140)
        self.towerB = Tower(0)
        self.towerC = Tower(140)
        self.ts.tracer(True)
Exemple #2
0
    def __init__(self, parent, levels):
        """ Parent should be a tk frame - see fractal_drawing calls.
        We will use this init function for all children..."""

        # levels of recursion when calling recursive draws.
        self.levels = levels

        # Toggles screen update rate
        self.slow_drawing = False

        # Draw button
        button = Button(parent, text='Draw Fractal', command=self._draw_click)
        button.pack()
        width, height = (600, 600)
        self.canvas = Canvas(parent, width=600, height=600)

        # Constrain resizing to a 1:1 aspect ratio
        self.canvas.winfo_toplevel().aspect(1, 1, 1, 1)
        self.canvas.pack(fill=BOTH, expand=YES)

        # Setup a turtle
        self.turtleScreen = TurtleScreen(self.canvas)

        # 5px of padding
        self.turtleScreen.setworldcoordinates(-5, -height - 5, width + 5, 5)
        self.turtle = RawTurtle(self.turtleScreen)
        self.turtleScreen.colormode(255)

        # Listen to resize events
        self.canvas.bind('<Configure>', self._resize_and_draw)

        # Do an initial draw
        self.slow_drawing = True
        self._resize_and_draw()
        self.slow_drawing = False
    def __init__(self, scene, robot_id):
    #sets variables                     
        self.robot_id = robot_id
        self.turtle = RawTurtle(scene.canvas)
        self.scene = scene
        self.scr = self.turtle.getscreen()
        self.scr.setworldcoordinates(0, scene.height, scene.width, 0)
        self.turtle.penup()
        if robot_id == 1:
            self.turtle.color("blue")
        else:
            self.turtle.color("red")
    #create turtles sprite
##        self.turtle.register_shape("ship",((-7,-2),(-6,-1),(-3,0),(-3,1),(-2,5),
##                                           (0,7),(2,5),(3,1),(3,0),(6,-1),(7,-2),
##                                           (3,-1),(3,-2),(2,-7),(-2,-7),(-3,-2),
##                                           (-3,-1),(-2,-1),(-2,-2),(-1,-6),(1,-6),
##                                           (2,-2),(2,-1),(-2,-1),(-2,0),(2,0),
##                                           (2,1),(1,4),(0,5),(-1,4),(-2,1),
##                                           (-2,-1),(-3,-1))
##                         )
##        self.turtle.shape("ship")
##        self.turtle.shapesize(2,2)
    #place robot using reset
        self.reset()
Exemple #4
0
def Rank():
    root = TK.Tk()
    cv1 = TK.Canvas(root, width=400, height=200)
    cv1.pack()
    s1 = TurtleScreen(cv1)
    s1.bgcolor("#42f4ad")
    t = RawTurtle(s1)
    t.hideturtle()
    t.penup()
    t.goto(-50,70)
    t.write("내가 예측한 1등: "+ guess)
    t.goto(-50,50)
    if PlayerNumber>=1:
        t.write("1등 : "+PlayerRank[0])
        t.goto(-50,40)
    if PlayerNumber>=2:
        t.write("2등 : "+PlayerRank[1])
        t.goto(-50,30)
    if PlayerNumber>=3:
        t.write("3등 : "+PlayerRank[2])
        t.goto(-50,20)
    if PlayerNumber>=4:
        t.write("4등 : "+PlayerRank[3])
        t.goto(-50,10)
    if PlayerNumber>=5:
        t.write("5등 : "+PlayerRank[4])
    t.goto(-100,-20)
    if(guess==PlayerRank[0]):
        t.write("축하드립니다. 1등을 맞추셨습니다.")
    else:
        t.write("1등을 맞추지 못했습니다.")
Exemple #5
0
def test_board_full_4(board4):
    """Testing the board fulness"""
    root = tkinter.Tk()
    canvas = tkinter.Canvas(root)
    t = RawTurtle(canvas)
    screen = t.getscreen()
    board = Board(None, screen)
    root.destroy()
Exemple #6
0
 def pen(self):
     turt = RawTurtle(self.screen)
     turt.ht()
     turt.speed(0)
     turt.up()
     turt.goto(-self.width, self.height)
     turt.down()
     return turt
Exemple #7
0
def board0():
    root = tkinter.Tk()
    canvas = tkinter.Canvas(root)
    t = RawTurtle(canvas)
    screen = t.getscreen()
    board = Board(None, screen)
    board.reset()
    # root.destroy()
    return board
Exemple #8
0
 def get_pen(self):
     self.pen = RawTurtle(self.screen)
     self.pen.color("#f0d1bf")
     xpos = 0
     ypos = self.screen.height - 30
     self.pen.up()
     self.pen.ht()
     self.pen.goto(xpos, ypos)
     self.pen.down()
Exemple #9
0
    def start_message(self):
        """ Creates Pen for drawing game update messages above the board. """

        self.pen = RawTurtle(self)
        self.pen.ht()
        self.pen.up()
        self.pen.color(self.font[1])
        self.pen.goto(0, self.y)
        self.pen.write("New Game", align="center", font=self.font[0])
        return
Exemple #10
0
    def __init__(self):
        self.win = tk.Tk()
        self.win.geometry("640x400")
        self.canvas = Canvas()
        self.canvas.pack()
        self.scr = TurtleScreen(self.canvas)

        self.t = RawTurtle(self.scr)
        self.btn = Button(self.win, text="Press me!", command=self.do_action())
        self.btn.pack()
Exemple #11
0
def main(pattern: str) -> None:
    master = Tk()
    canvas = ScrolledCanvas(master)
    canvas.pack()
    screen = TurtleScreen(canvas)
    screen.colormode(255)
    turt = RawTurtle(screen)
    draw_dots(turt)
    turt.pencolor((178, 34, 34))
    draw_pattern(turt, pattern)
    screen.mainloop()
Exemple #12
0
 def __init__(self, window, content, x, y):
     self.headline = RawTurtle(window)
     self.headline.speed(0)
     self.headline.shape("square")
     self.headline.color("white")
     self.headline.penup()
     self.headline.hideturtle()
     self.headline.goto(x, y)
     self.headline.write(content,
                         align="center",
                         font=("Courier", 18, "normal"))
Exemple #13
0
def main():
    root = TK.Tk()
    cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff")
    cv2 = TK.Canvas(root, width=300, height=200, bg="#ffeeee")
    cv1.pack()
    cv2.pack()

    s1 = TurtleScreen(cv1)
    s1.bgcolor(0.85, 0.85, 1)
    s2 = TurtleScreen(cv2)
    s2.bgcolor(1, 0.85, 0.85)

    p = RawTurtle(s1)  #上面的乌龟
    q = RawTurtle(s2)  #下面的乌龟

    p.color("red", (1, 0.85, 0.85))
    p.width(3)
    q.color("blue", (0.85, 0.85, 1))
    q.width(3)

    for t in p, q:
        t.shape("turtle")
        t.left(36)

    q.left(180)

    for t in p, q:
        t.begin_fill()

    for i in range(5):  #画五边形
        for t in p, q:
            t.forward(50)
            t.left(72)

    for t in p, q:
        t.end_fill()
        t.left(54)
        t.penup()
        t.back(50)

    return "EVENTLOOP"
Exemple #14
0
 def __init__(self,screen,corners,width,height,x,y):
     self.corners = corners
     self.screen = screen
     self.pen = RawTurtle(screen)
     self.pen.speed(8)
     self.width = width
     self.height = height
     self.x = x
     self.y = y
     self.spaces = []
     self.draw()
     self.draw_spaces()
Exemple #15
0
    def initialize(self, hOptions):
        self.screen = TurtleScreen(self.tkWidget)
        self.tkTurtle = RawTurtle(self.screen)
        self.screen.mode('world')

        self.tkTurtle.setheading(90)

        if 'speed' in hOptions:
            self.curSpeed = int(hOptions['speed'])
        else:
            self.curSpeed = 1
        self.lSaveStack = []  # stack to save/restore state on
Exemple #16
0
def getReady():
    for i in [ 5, 4, 3, 2, 1 ,0]:
        time.sleep(1)
        line = RawTurtle(myGameField.getRootWindow())
        line.speed(0)
        line.shape("square")
        line.color("white")
        line.penup()
        line.hideturtle() # Versteckte Überschrift
        line.goto(0,0)
        line.write("Get ready %s" % i , align= "center", font=("Courier", 18 ,"normal"))
        line.clear()
Exemple #17
0
    def __init__(self, turtle_window, id_number):
        self.turtle_window = turtle_window
        self.id_number = id_number
        self.heat_source = RawTurtle(self.turtle_window.wn)
        self.heat_source.hideturtle()
        self.heat_source.shape('circle')
        self.heat_source.penup()
        self.heat_source.color("orange")
        self.place()
        self.heat_source.showturtle()

        self.heat_source.ondrag(self.drag_heat_source)
    def __init__(self, title="Hangman"):
        super().__init__()
        self.title(title)
        self.geometry("720x600")
        self.configurationFile = "level.conf"
        self.dataFile = "hangman.dat"
        self.dataPath = "data/"
        self.__hp = HP.THangman(self)
        if os.path.exists(self.dataPath + self.dataFile):
            self.deserialize()
        self.output = tk.StringVar()
        self.output.set(self.__hp.getLetters)
        self.info = tk.StringVar()
        alphabets = 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', \
                    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'Å', 'Ä', 'Ö', '-'
        self.Buttons = ButtonsBlock(self, alphabets, 15)
        self.Buttons.grid(row=0, column=0, columnspan=3, padx=10, pady=5)

        self.frame2 = tk.Frame(self).grid(row=2)
        tk.Label(self.frame2, textvariable=self.output).grid(pady=10,
                                                             columnspan=5)

        self.frame3 = tk.Frame(self).grid(row=3)
        tk.Label(self.frame3, textvariable=self.info).grid(padx=10,
                                                           pady=10,
                                                           columnspan=5,
                                                           sticky=tk.W + tk.E)

        tk.Button(self, text="Guess a new word",
                  command=self.new).grid(row=5,
                                         padx=30,
                                         pady=5,
                                         sticky=tk.E + tk.W,
                                         columnspan=5)
        self.canvas = Canvas(self, width=500, height=350)
        self.canvas.grid(row=8,
                         column=0,
                         columnspan=5,
                         padx=10,
                         sticky=tk.W + tk.E + tk.S + tk.N)
        self.turtle_screen = TurtleScreen(self.canvas)
        self.raw_turtle = RawTurtle(self.canvas)
        self.raw_turtle.hideturtle()
        self.raw_turtle.speed(0)

        self.restoreGUI()

        message = "You are currently playing in " + levels[
            self.__hp.level] + " level"
        messagebox.showinfo("Level of difficulty", message)

        self.protocol("WM_DELETE_WINDOW", self.close)
Exemple #19
0
def draw(ans):
    """Вывод топологической схемы"""
    global xax, moves, oboz, window

    turx, tury = xax - int(xax*0.3), int(yax*0.25)
    bg_def = window.cget('bg')
    canvas = Canvas(window, relief='sunken', borderwidth=5, width=turx, height=tury, background=bg_def)
    canvas.place(relx=0.5, rely=0.1, y=int(yax*0.19), anchor=CENTER)
    screen = TurtleScreen(canvas)
    global turtle
    turtle = RawTurtle(canvas)

    turtle.speed(5)
    turtle.hideturtle()

    allen = (turx - int(xax*0.2))
    global let
    if len(ans) > 7:
        if ans[5] == 1 and ans[8] == 1:
            let = allen // 3
        else:
            if ans[5] == 1:
                let = allen // 4
            elif ans[8] == 1:
                let = allen // 4
            else:
                let = allen // 5
        if ans[5] == 2:
            allen -= let//2
        if ans[8] == 2:
            allen -= let//2

    else:
        if ans[5] == 1:
            let = allen // 2
        else:
            let = allen // 3
        if ans[5] == 2:
            allen -= let//2

    turtle.color('white')
    turtle.up()
    turtle.goto(x=-allen // 2, y=-int(yax*0.09))
    turtle.down()
    turtle.color('black')
    turtle.dot(5, 'black')
    turtle.write('A')

    for i in [moves[k + 1][x] for k, x in enumerate(ans) if k + 1 in moves]:
        print(i)
        eval(i)
Exemple #20
0
    def create_widgets(self):
        tk.Label(self.parent, text="Robot Driver Inc.",
                 font=('Arial', 25)).grid(row=0, column=0, columnspan=6)
        self.forward_btn = tk.Button(self.parent, text="Jazda do przodu")
        self.rotate_btn = tk.Button(self.parent, text="Obrót")
        self.wait_btn = tk.Button(self.parent, text="Czekaj")
        self.undo_btn = tk.Button(self.parent, text="Cofnij")
        self.generate_btn = tk.Button(self.parent, text="Generuj kod")
        self.canvas = tk.Canvas(self.parent, width=640, height=480)
        self.draw = RawTurtle(self.canvas)

        self.forward_btn.grid(row=1, column=0, sticky=tk.E + tk.W)
        self.rotate_btn.grid(row=2, column=0, sticky=tk.E + tk.W)
        self.wait_btn.grid(row=3, column=0, sticky=tk.E + tk.W)
        self.undo_btn.grid(row=4, column=0, sticky=tk.E + tk.W)
        self.generate_btn.grid(row=5, column=0, sticky=tk.E + tk.W)
        self.canvas.grid(row=6, column=0, columnspan=6)

        tk.Label(self.parent, text="Moc:").grid(row=1, column=1)
        self.power_input = tk.Entry(self.parent, textvariable=self.power_var)

        tk.Label(self.parent, text="Czas:").grid(row=1, column=3)
        self.forward_wait_input = tk.Entry(self.parent,
                                           textvariable=self.forward_wait_var)

        tk.Label(self.parent, text="Stopnie:").grid(row=2, column=1)
        self.rotate_input = tk.Entry(self.parent,
                                     textvariable=self.degrees_var)

        tk.Label(self.parent, text="Czas:").grid(row=3, column=1)
        self.wait_wait_input = tk.Entry(self.parent,
                                        textvariable=self.wait_wait_var)

        tk.Label(self.parent, text="Ścieżka:").grid(row=4, column=1, rowspan=2)
        self.filepath_label = tk.Label(self.parent,
                                       text=self.filepath,
                                       wraplength=150,
                                       justify='center')

        self.filepath_btn = tk.Button(self.parent, text="Wybierz")

        self.power_input.grid(row=1, column=2)
        self.forward_wait_input.grid(row=1, column=4)
        self.rotate_input.grid(row=2, column=2)
        self.wait_wait_input.grid(row=3, column=2)
        self.filepath_label.grid(row=4, column=2, rowspan=2)
        self.filepath_btn.grid(row=5,
                               column=3,
                               columnspan=2,
                               sticky=tk.E + tk.W)
Exemple #21
0
def main():
    global obstacles
    global obastacleUtil
    global newMap
    global newAstar
    global drawUtil

    width = Configurations.width
    height = Configurations.height

    initCanvasHere(width, height)

    # root = TK.Tk()
    # root1 = TK.Tk()
    # cv1 = TK.Canvas(root, width=300, height=200, bg="#ddffff")
    # cv2 = TK.Canvas(root1, width=300, height=200, bg="#ffeeee")
    # cv1.pack()
    # cv2.pack()
    #
    # s1 = TurtleScreen(cv1)
    # s1.bgcolor(0.85, 0.85, 1)
    # s2 = TurtleScreen(cv2)
    # s2.bgcolor(1, 0.85, 0.85)

    p = RawTurtle(s1)
    q = RawTurtle(s2)

    obstacles = []
    obastacleUtil = DrawObstacleUtils.DrawObstacleUtils((width, height),
                                                        obstacles)
    turtle.onscreenclick(addObstacle)
    initDrawUtil(width, height, Point(50, 50))

    newMap = Array2D.Array2D(width, height)

    turtle.mainloop()
    turtle.done()
Exemple #22
0
class TurtleCanvas:
    window = tk.Tk()
    canvas = ScrolledCanvas(master=window, width=800, height=600)
    canvas.pack(fill=tk.BOTH, expand=tk.YES)
    screen = TurtleScreen(canvas)
    turtle = RawTurtle(screen)

    def __init__(self, x, y):
        cWidth = 800
        cHeight = 600
        self.x = x
        self.y = y
        self.turtle.speed("fastest")
        self.window.geometry('%dx%d+%d+%d' % (cWidth, cHeight, x, y))
        self.canvas.bind('<MouseWheel>', self.zoom)

    def zoom(self, event):
        amount = 0.9 if event.delta < 0 else 1.1
        self.canvas.scale(tk.ALL, 0, 0, amount, amount)

    def square(self, sidelength=50):
        for i in range(4):
            self.turtle.forward(sidelength)
            self.turtle.right(90)

    def triangle(self, sidelength=50):
        point = self.turtle
        point.color("black")
        point.speed("fastest")
        for i in range(3):
            point.forward(sidelength)
            point.right(120)
        self.window.mainloop()

    def star(self, sidelength=50):
        point = self.turtle
        point.color("black")
        point.speed("fastest")
        for i in range(5):
            point.forward(sidelength)
            point.right(145)
        self.window.mainloop()

    def squareDriver(self, steps):
        i = 0
        for j in range(steps):
            self.square(20 + i)
            self.turtle.right(2)
            i += 1
    def __init__(self):
        self.win = Tk()
        self.btn = Button(self.win, text="확인", command=self.press)
        self.btn.pack()

        self.canvas = Canvas(self.win)
        self.canvas.config(width=600, height=300)
        self.canvas.pack()
        self.src = TurtleScreen(self.canvas)
        self.t = RawTurtle(self.src)
        self.t.pensize(5)

        # 서버와 소켓 연결
        self.client = socket(AF_INET, SOCK_STREAM)
        self.client.connect(('127.0.0.1',9999))
Exemple #24
0
    def __init__(self, window, shape):
        self.speed = 0.1
        self.score = 0
        self.highScore = 0

        self.mouth = RawTurtle(window)
        self.mouth.speed(0)
        self.mouth.shape(shape)
        self.mouth.home()
        self.mouth.direction = "stop"
        self.mouth.penup()

        self.deadFromPoison = False
        self.tempScore = 1
        self.body = []
Exemple #25
0
 def __init__(self,canvas):
     #self.window = master
     #self.canvas = ScrolledCanvas(master=self.window, width=800, height=600)
     #self.canvas.pack(fill=tk.BOTH, expand=tk.YES)
     self.canvas = canvas
     self.screen = TurtleScreen(canvas)
     self.turtle = RawTurtle(self.screen)
     self.turtle.speed("fastest")
     #self.window.geometry('%dx%d+%d+%d' % (cWidth, cHeight, x, y))
     self.canvas.bind('<MouseWheel>', self.zoom)
     self.canvas.bind("<ButtonPress-1>", self.scroll_start)
     self.canvas.bind("<B1-Motion>", self.scroll_move)
     self.canvas.bind("<ButtonPress-3>", self.changeDirection)
     #self.canvas.bind("<c>", self.changeColor)
     self.rightDirection = True
Exemple #26
0
def crea_tablero(titulo, alto, ancho):
    """ Crea una pizarra electronica

        Entradas:
            titulo : titulo de la ventana que contendra la pizarra electronica
            alto   : alto de la ventana en pixeles
            ancho  : ancho de la ventna en pixeles
            
        Salidas: Ninguna
        
        Restricciones: titulo es una tira, alto y ancho son enteros positivos
    """

    ## Restricciones
    assert isinstance(titulo, str)
    assert isinstance(alto, int) and alto > 0
    assert isinstance(ancho, int) and ancho > 0

    ## Crea la ventana y un canvas para dibujar
    root = TK.Tk()
    root.title(titulo)
    canvas = TK.Canvas(root, width=ancho, height=alto)
    canvas.pack()

    ## Crea un TurtleScreen y la tortuga para dibujar
    fondo_tablero = TurtleScreen(canvas)

    ## Establece el fondo de la pizarra electronica
    canvas["bg"] = "black"
    canvas.pack()
    pizarra = RawTurtle(fondo_tablero)
    dibuja_leds(pizarra)

    ## Establece las funciones para capturar las teclas
    fondo_tablero.onkeypress(lambda: envie_0(pizarra), "0")
    fondo_tablero.onkeypress(lambda: envie_1(pizarra), "1")
    fondo_tablero.onkeypress(lambda: envie_2(pizarra), "2")
    fondo_tablero.onkeypress(lambda: envie_3(pizarra), "3")
    fondo_tablero.onkeypress(lambda: envie_4(pizarra), "4")
    fondo_tablero.onkeypress(lambda: envie_5(pizarra), "5")
    fondo_tablero.onkeypress(lambda: envie_6(pizarra), "6")
    fondo_tablero.onkeypress(lambda: envie_7(pizarra), "7")
    fondo_tablero.onkeypress(lambda: envie_8(pizarra), "8")
    fondo_tablero.onkeypress(lambda: envie_9(pizarra), "9")
    fondo_tablero.onkeypress(lambda: dibuja_leds(pizarra), "Escape")
    fondo_tablero.listen()

    root.mainloop()
Exemple #27
0
def test_minimax_param(board, evaluation):
    """Testing the minimax"""
    root = tkinter.Tk()
    canvas = tkinter.Canvas(root)
    t = RawTurtle(canvas)
    screen = t.getscreen()
    tkboard = Board(None, screen)
    tkboard.reset()
    for i in range(3):
        for j in range(3):
            if board[i][j] == "O":
                tkboard[i][j] = O(canvas)
            elif board[i][j] == "X":
                tkboard[i][j] = X(canvas)
    # root.destroy()
    assert minimax(1, tkboard, 4) == evaluation
Exemple #28
0
    def __init__(self, turtle_window, id_number):

        # comment here
        self.turtle_window = turtle_window
        self.id_number = id_number
        self.name = 'Sugar'

        # comment here
        self.turtle_object = RawTurtle(self.turtle_window.wn)
        self.turtle_object.hideturtle()
        self.turtle_object.shape('square')
        self.turtle_object.penup()
        self.turtle_object.color("black", "white")
        self.place()
        self.turtle_object.showturtle()

        # comment here
        self.turtle_object.ondrag(self.drag)
Exemple #29
0
    def __init__(self, turtle_window, id_number):
        self.speed_params = [20, 0.2, 6]
        self.turn_parameters = [20]
        self.turtle_window = turtle_window
        self.max_location = self.turtle_window.screen_size / 2 - 10
        self.vehicle = RawTurtle(self.turtle_window.wn)
        self.vehicle.hideturtle()
        self.id_number = id_number
        self.type = random.choice(["crossed", "direct"])
        self.vehicle.shape('turtle')
        self.vehicle.turtlesize(1)
        self.vehicle.penup()
        if self.type == 'crossed':
            self.vehicle.color("red", (1, 0.85, 0.85))
        else:
            self.vehicle.color("blue", (0.85, 0.85, 1))

        self.place()
        self.vehicle.showturtle()
    def __init__(self, titulo, alto, ancho):

        assert isinstance(titulo, str)
        assert isinstance(alto, int) and alto > 0
        assert isinstance(ancho, int) and ancho > 0

        self.root = TK.Tk()
        self.root.title(titulo)
        self.canvas = TK.Canvas(self.root, width=ancho, height=alto)
        self.canvas.pack()

        self.fondo_ventana = TurtleScreen(self.canvas)
        self.fondo_ventana.setworldcoordinates(0, alto, ancho, 0)

        self.canvas["bg"] = "gold"
        self.canvas.pack()

        self.pencil = RawTurtle(self.fondo_ventana)
        self.pencil.pencolor("white")