import sqlite3

database = 'instance/users.db' # this is location of database

    
    # Connect to the database file
conn = sqlite3.connect(database)

    # Create a cursor object to execute SQL queries
cursor = conn.cursor()
    
    # Fetch results of Schema
results = cursor.execute("PRAGMA table_info('users')").fetchall()

    # Print the results
for row in results:
    print(row)

    # Close the database connection
    

def create_table(conn, create_table_sql):
    """ create a table from the create_table_sql statement
    :param conn: Connection object
    :param create_table_sql: a CREATE TABLE statement
    :return:
    """
    c = conn.cursor()
    c.execute(create_table_sql)
 

sql_create_comments_table = """ CREATE TABLE IF NOT EXISTS comments (
                                        _uid integer PRIMARY KEY,
                                        _name text NOT NULL,
                                        _text NOT NULL,
                                        _image BLOB NOT NULL
                                    ); """


create_table(conn, sql_create_comments_table)

#read()
def convertToBinaryData(filename): 
    # Convert digital data to binary format (needed for storing images)
    with open(filename, 'rb') as file:
        blobData = file.read()
    return blobData

def writeTofile(data, filename):
    # Convert binary data to proper format and write it on Hard Disk
    with open(filename, 'wb') as file:
        file.write(data)
    print("Stored blob data into: ", filename, "\n")


def create():
    name = input("Enter your name:")
    uid = input("Enter your user id: (must be a number!)")
    text = input("Enter your comment")
    image = convertToBinaryData('images/smileyforpts.png') # add img
    
    # Connect to the database file
    conn = sqlite3.connect(database)

    # Create a cursor object to execute SQL commands
    cursor = conn.cursor()

    try:
        # Execute an SQL command to insert data into a table
        cursor.execute("INSERT INTO comments (_name, _uid, _text, _image) VALUES (?, ?, ?, ?)", (name, uid, text, image))
        
        # Commit the changes to the database
        conn.commit()
        print(f"A new user record {uid} has been created")
                
    except sqlite3.Error as error:
        print("Error while executing the INSERT:", "uid likely not a number")


    # Close the cursor and connection objects
    cursor.close()
    conn.close()
    
#create()



def read():
    # Connect to the database file
    conn = sqlite3.connect(database)

    # Create a cursor object to execute SQL queries
    cursor = conn.cursor()
    
    # Execute a SELECT statement to retrieve data from a table
    results = cursor.execute('SELECT * FROM comments').fetchall()
    for row in results:
            photo = row[3]
    print("Storing img in downloads")
    photoPath = "/home/dragoon/vscode/test-fastpages/_notebooks/files" + ".png"
    writeTofile(photo, photoPath) # download img

    # Print the results
    if len(results) == 0:
        print("Table is empty")
    else:
        for row in results:
            print(row)

    # Close the cursor and connection objects
    cursor.close()
    conn.close()


#read()


def update():
    message = "updated"
    uid = input("Enter user id to update")
    text = input("Enter updated comment")

    # Connect to the database file
    conn = sqlite3.connect(database)

    # Create a cursor object to execute SQL commands
    cursor = conn.cursor()

    try:
        # Execute an SQL command to update data in a table
        cursor.execute("UPDATE comments SET _text = ? WHERE _uid = ?", (text, uid))
        if cursor.rowcount == 0:
            # The uid was not found in the table
            print(f"No uid {uid} was not found in the table")
        else:
            print(f"The row with user id {uid} the text has been {message}")
            conn.commit()
    except sqlite3.Error as error:
        print("Error while executing the UPDATE:", error)
        
    
    # Close the cursor and connection objects
    cursor.close()
    conn.close()
    
#update()

def delete():
    uid = input("Enter user id to delete")

    # Connect to the database file
    conn = sqlite3.connect(database)

    # Create a cursor object to execute SQL commands
    cursor = conn.cursor()
    
    try:
        cursor.execute("DELETE FROM comments WHERE _uid = ?", (uid,))
        if cursor.rowcount == 0:
            # The uid was not found in the table
            print(f"No uid {uid} was not found in the table")
        else:
            # The uid was found in the table and the row was deleted
            print(f"The row with uid {uid} was successfully deleted")
        conn.commit()
    except sqlite3.Error as error:
        print("Error while executing the DELETE:", error)
        
    # Close the cursor and connection objects
    cursor.close()
    conn.close()
    
#delete()



def menu():
    operation = input("Enter: (C)reate (R)ead (U)pdate or (D)elete")
    if operation.lower() == 'c':
        create()
    elif operation.lower() == 'r':
        read()
    elif operation.lower() == 'u':
        update()
    elif operation.lower() == 'd':
        delete()
    elif len(operation)==0: # Escape Key
        return
    else:
        print("Please enter c, r, u, or d") 
    menu() # recursion, repeat menu
        
try:
    menu() # start menu
except:
    print("Perform Jupyter 'Run All' prior to starting menu")
A new user record 1 has been created
Storing img in downloads
Stored blob data into:  /home/dragoon/vscode/test-fastpages/_notebooks/files.png 

(1, 'derpy', 'test', b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01h\x00\x00\x01h\x04\x03\x00\x00\x00\x88\xcb|\xe6\x00\x00\x00!PLTE\xee\xee\xee\x00\x00\x00\xff\xff\xff\xf6\xf6\xf6JJJ&&&\x92\x92\x92\xdb\xdb\xdbnnn\xac\xac\xac\xc6\xc6\xc6\x1f\xc7M\x81\x00\x00\x14~IDATx\xda\xec\x9d\xcdw\xe3\xb6\x11\xc0e\xaa\xbb\xaf/\'\xd3\x96\xfcu\xa2II\x94t\x92\xe9\xa6_\xa7\xa5\xd3$\xcd\xad\xdal\xb3}\xb9II\xb3mN\x95\x9at\xdb\x9c*w\xd3&=\xd5zm^7\xa7\xca\xafI\x9a\xfd+k[\x020\x03\x02\x04H\x82$\xb6\x15\x0f\xfb\x96\x06?~\x02\x07\xc0`03h\xf8\xeb\xc3k\xac\x8f\x97\xe2\xb4\xb1\x85\xdeBo\xa1\xb7\xd0[\xe8-\xf4\x16z\x0b\xbd\x85\xfe_\x84\xde\x1c\xce\xe6\xef/\xd3\xe9\x16z\x0b\xbd\x85\xdeB\xdb\x03}w\x04\xe7\xf6C7\xa3;\xd2\xa7\xdf>\xff\xe0\xe6\xf8\xf5\xf3o~\x13\xf9vC\xdf\x12\xff\xe0\xdbg\xaf\x8f]p\xb4\x1f\xfd\xf9K\xc7bh\xff\x95_\xbd\xee\n\x8fG\x9f\xcfo\xea\xdfB\xe8\xe0k\t1\xe1v\xee\xb0m\x82\x0e\xdf\x1f\xbb\x8a\xa3\xfd\xc6\xfc\x06\xdb\x1e\xe8\xf0}W\xeb\xb8\xc1\xf6\xad\x80n\xfa\xfe?\xc7\xae\xe6\xd1~\xcbHM\x17Ws\xef\xc7n\x86\xa3\xf5d\xdd"k\x9d\x04x\xbft3\x1e\xef\xcc\xfd\x9a\xa1\xbf?v3\x1f\xed\'\xfe\xa8N\xe8\xbf\xbb\xb9\x8e\xb7\xa2\xa0.\xe8(\\\xb89\x8f\xa3yM\xd0\xfe vs\x1f\xade-\xd0\xfe}\xb7\xd0\xf1^\xf5\xd0M\xff\xf7r\x9e\x9f\xff\xe4\xb3\x1b\x1d\xef\xf9\x17\x1f|\xf6,eh\xffc\xd5\xd0M\xff\xdf\x92\x9e\xe1\xa7\x1f>E\n\xb5\xff\xca\x17\xcf$=\xcc\x9b\xd5BK\x98\xdbo\xfc\xeb\xb6\xf8\xbc\t/\xbe\xd5\xa5\xfe \xd6L\xde\xac\x14Z\xc8\xfc\xe8\x89\xec\xde\xf3\x9b\x7f\xbf\xfeTH]\x1d\xb4\xffQ\xf2\xfd\xbf\xf8\x9b\x9fv\xef\x8d\xc8\xfc\xf8S\x11ue\xd0\xdfI\xf6\xbb7\xc8#\xe5\xbd?Jb\xff\xc5\xaf\x08\xba\x9f\x90\xe5\x0f\xfd`\xa4u\xef\xef\x12\xb2\xfd\xa7\xa0\x12\xe8\x81@K\x1e\xe9>*\xa9_M\xb3+}\x99\xf5ig8N\xa8?\x19t\xe2\xc8\xbf\xcf\xdf?/}\x12\xd0\xf4\x16\t-"\xeb4\x87\x7fB\xe9\xd0\xfe\x15\xa7\xaf\xe5\x99\xf6q\x1d\xe6q\xc9\xd0\xd1G|\xe3\x1f\xe5\x992}\x17?\xe5A\xa9\xd0N\x0f\x8b\xe3{~\xcey\xde\x00\x0b\xf6\xb2L\xe80\xc6\xeae~\xfb\x0bn\xce\xadhT\x1e4\x12\xe8\xd6uP`F=\x8c\xb1X\x97\x06\xddA\xcc\xf3Bf\x80\x08S\xbf\x16\x94\x04\x8d>i\xeb\xba\xa0\xed\x02S\xb7\xafG\xe5@O\xd0K\n[\x89"\xd4\x1a\x0f\xfcR\xa0;\xb8\xbd\x177mE\xa8/z\xe0\x95\x00\x1d\xc2z\xb94b\x8f\x8b~\xc8\x0b\x88i\xe8+<\x1a\x181""\xc5\xfcV@\x0cC\xf7\xb9q\xd7\x8c\xe5\x13U\xc5\xa5g\x1a\x1a4\xf5\xa3\xc8\x18t\xd3\x07\xdaS\xcb1k5\x8d>\x86\xc2g\xd0\xb1\x00\xf5\xa3?3:\t\x08\x86\xa8\x11\x9a\xf4\x86\x88\xa0\xdc]\x9b\x84\x86\xa2\xf7\xaea\x17\x0e\xff+\xd0X\x02\x83\xd0=\xac\xb2\x9b\xf5;\t\x80XOG\xe6\xa0\x17xT1\x0b\xed\x0c`\x95\x18\x83\xee\xc3\xb6b\xde\xc3\x07\xb6\xf2K\xcf\x14t\x8c\xe7s\xc6\xdd\x92\xc0\x97l\xf9\x86\xa0;\x9c\xcaa\x1c\x1a\n\xc8\x85g\x06\x9aU\xf4\xe3\x92\x1c\xc0\xa2\xaf\xb8\xaa.\x0c\xdd\x01\x0f,\t\xba\xe9\xc5\xb8\xaa\x0bC\xc7\x9cnW\x86\xab\x9d\xd3\xc7U]\x14\xba\x03\xd4\xb0\x12\xdd\x05\'\xa8\xaa\x8bB\xb3\x8a^\x8eJ\x84\x1e\xa0\xaa.\x08\xcd\xbe\xdbIP\xaac\xe6\x8cI\xe1\xa8(\xf4\x82\x19\nG\xa5B{T\xdd;\n\x8aYM\x9bL\xebx\xbbd\x070\x87\x8d\x8b\xd3b\x93\x80\x88\xaaw\xed\xd2\xbd\xd6XU\x1f\x17\x83fz\xf4E\xe9\xd0\xce\xabL\xaf.\x04=\xc3\xe3J\xb9\xfe\x81\x01\xed\xa8v\xbd"\xd0cT\xd1%C;\xdf\xa3\xb2\xe8\x14\x80\xee \x89.\xdd\x133\x18c\xb5)\x1f4\xed\xef\x1eV\x02\xcd\xa4\xfa(\xc8\r=\xe0*\xbat\x9fW\xd6\x81LsC\xcf`\x1f]\x054\xeb\xabO\xbc\xbc\xd0\xf4w\xcf+\x82nz\xb8)\xe6\x80\xa6\xcd\xf0\xc4\xaf\x08\xba\xe1\xd0\x8f{1\xca\x07M\xb5\xc5eT\x194mF\x07A.\xe8\x90\xdd\xefT\x06\xcdj\xea:\x17t\x97\xa9\x8a\x15BSU\xf8m/\x0ft\xcc\x94\xf2\n\xa1\xd9k\x83\x1cV\xd3\x01\x18XJQ\xa0\xc5\xa7\xce=`\xae\xc8:\t`\xedx^)t\x83*\x96\xfb\xd9\xa1\xa3\x18\x98\xfd\xab\x84\xa6*|+;t\x0f\xda\r\xaa\x84n\xf6\x99|d\x84\xa6\xd2\xd1\xf6+\x86n\xd0\x81x7+4\x95\x8e\xdd\xca\xa1i}\xb5\xb2B\x0f\x90\xc9\xb1Rh\xd6o-\xb3A\xfb;\xa5\xdav\xd3O#\xa2\xc6\xefe\x84^ \xed\xbfZh:\x178\n2A\xd3\xce\xf2\xba\x06h\xd6U\xcf3Aw\x91tT\r\xed\xd0\xef<\xca\x02}\x85\xe7\x86UC\x93:;\xf0\xb2@c\xe9\xa8\x1a\x9a\xc9G\x94\x01\xba\x8f\xa5\xa3rh*\x1f\x97\x19\xa0w\x98\xceR\x0f\xf4\xe9\x06\xe0\xd0\xd3\xb6\x9a\xd2\xe1pY\x85\x02-:\x1d\xe0O\xad3\t\x08\xf1\xa2^\r\xd0\xb4\xda\xe6\xba\xd0\xcd\x0e\xd5;\xea\x82\xa6\xfa\xc7\x85.\xb4\xb3\xa2Zi]\xd0\r\xd2\x15\x1c\xeaB\xd3oScdx\xa0abF\xe7C6g\xa9\r\xda\x99@\xa1VCS\x91~X#t\xb3\xab^\x81@\xcb\x08+6\x1c\xd6\x06M\x95\xeaCM\xe8\x98\x89S}\xd0\x11\xa0\xd0\x80\x0e\x81\xd9\xb1>h\xfa\xbd\x1d-\xe8>\x90\xa6\xfa\xa0i\xcb\xba\xd4\x81vv@\xbb\xad\x0f\x9a\xf6a\xfbZ\xd0\x13\xa50UrJ\x84\xfa@\x07:\x82\x96\xf4\x1a\xa1\xa9P\xeb@\x0f*[\xa2M?\xa5=\xf5R\xc3j\xda\x81jiM\xfat\x03N\xae/F\xeaI\xc0F\xbfj\xeb\xc7\x81\x05Y\xb0\x02_;\xad\xc0\x98N\x04\x94\xd0\x0b8\xa7T?\xda\xfb\xe4\xa9\xbf\x0e\x92\xd3\xac\xcbO^\xfc\xd6\xf7\xb4.\xde\xcc\xae\x8f4\xa0IO3\xd2\xf2,\xb9\xcd\x91\xd1\xfe\xab~h\xdf\x7f\xc6w\xd9\x10<\x9d\x8b\xc9\x9c\xeb\\\t=@SJ\xc5\xa3I\x84\xd1;\xbe&\xf4?H\x8c\x8c\xa7qq\x9f\xb6.\x15t\x07\x19w\x14\x8f\xa6k\xe7\xef\x06Z\xd0\x1f\xbb\xdc4?\x15\x9a\xac\x84^(\xa1\xcf6u\xa1\xe1\xa8\xca\x96G\xd6>\xc4J\x0e\xe0\xd1\xfcXG\x96b\xd2\x12U\xd0\x9b\xf1\xf0X\x03:\x84\x91\x90\x81\x064\x8c\xee\x99k@\xafH\x9f\xa0\x82\xde\xf43{\xea\x0e\x81-%m\xaaZ\x05\x8dbq\xf65\xa0OI\xef\xab\x80\xf6RM;\xd8\xab\x15E\xe7\x1d\xab;\x84\x15\x8ae\xd4\x80\xees\xfe\x042\xe8\x1e6\xb2\xa6qp\x91\xd8\x8e\x12\x9a\x8bbVC\x87\xe8R)4\x19\xf0\xdb\x81\xda\xf4=\xc3\x10\x97*h\xeeG\xeej\x8cDcd\xbb\x95A\x13eZbcE\xd0\\J\x92CU\xd7{&\x08bV@O\xa0\xf1C\x0e=A\x86\xbf4\xe8\x11\x9fY@\x05=\xe1n\x88\xd4\xd0;\xd8\x9dX\x06\x1d\x93\xfe\\\t\xdd\xe3s\x0b\xa8r\xe7\xf0\x19\x054\xd6\xcd\xba\xd8\x85Jf5\xe5D_\xc7\xef\x86\xb5\xc4T\x159\xe4\xaf\xbfP\xab\xd7=\xfch\xc9$`\xa0\xef\xb4t\xcaC,\xf5\xac\xb7\xf4\xd8S;\xfcx\xf8\xd1\x12\xe8>\xfe\x1ei\xd0g<\xc4e:t"W\xc5\xae\x1a\x9a\x0c\x05\x17\xa9\xd0\xa7\x9c#}\n\xc7,#tB\x9c\xee\xbc\xd8\x14\xb3\xaf\tZ\xe5\x92@\xcf\xf4\xdd\xc3fB\x195\x0c=C\x9d\x99\x04z\xf3\xcb\xf6"K\xa0\xbbh\xd8\x90@oz\xbcK\xc7\x12\xe8>R\x94%\xd0\xa4\xb5\xda\x02M\xba\x9c \x05\x9a\xf4\xa5\x8e-\xd0\x01\xd2\xdf\xc4\xd0=2\xb8\xd9\x02M\x86\xd1i\nt\x87\xa8\x11\xd6@/\xe0\xb3\xc5\xd0]\xa2\xd0[\x03\xbd\x82\x1d\xb5\x18\xfa\x8c\xc4\x11X\x03}\x06;j14\xfd]\xd6@w\xe1<[\x0c=!\xaf\xb7\x06\xba\x0fG\x17\xa1\xd5\x94h\xd3S\x1dG\xb4U\x02:]\x9fN@\x1f\xea\x18Q{p\rT8\t J\xd5\xdc\x1e\xe8!T;\x85\xd0#j{\xb7\x06\x9a!\xc9\xa0\xd9\xcf\xb2\x06\x9a}|\x19tO\xe5N[=4ifK)t\x9fN\x01\xec\x81\x9e\x80\x98d!t\x87N\x01\xec\x81\xbe\x02\x0f\x17A\x13\xf3\xd2\xaeM\xd03`d\x12Bo\xc6\xcc=\x8b\xa0\x01\x93\x18\x1a\xfc*{\xa0\xbb\x027n\x11\xc7\x85E\xd0\xa0\x9dI\xa0\xafhK\xb5\x07\xba\x0f\xb2(\t\xa1\x17\xd4&f\x0ft\x0fXb\x84\xd01u\x03\xb2\x07z\x00\x0c\xc3i\xd0s\x9b\xa0\x87@\xcd\x13ZM\xc7t\xeak\x8d>M\x16\x13\xdb\x9el\x12\xb0\x81n\xda\x04\xed\x83\xf5\x14!4\xb3\x8cX\x07\xed\x9e\xa7C\xdf~\t\x8b\xa0\xd9\xe7\x17B\x07VB\xc7\xcc\xc6$\x82\x0e\x99\xb5\xef\xff\x06:\xabQ\xfdP\x0fz!\r\xb9\xbd;\x1fRO\x16\x1d\xe8\xc2\xcb\x17\x87\xa3,\xd0K\t\xf4 \x13t\x15\x0bE\xfa\xd0\x07z\xd0U,\xc99\xcc\x80d\x06:\xb1\xf8\xa9\x8aM\xe0\x17?\xa7\x99\xa0\xa7\x12\xe8^&\xe8\x80c8P\xc5&,D_\xa6bh\x7f\xc1{\x15h\x06T\xb8p\x1dE\xfd\xa2+\xa3\xd0\xbc\xeb\x84n@\x85\x9bb\xbd\xcd\r}\xac\t\xcdA(\xddG=Q\x0f\x99\x0f\x1a(\xb2\xbdl\x81\xe2~\xe9\xee@\xb7\xa7\xc4Z3\x95L\x022B\x17s\xbc\xda\xad\x07:\xbb\x8b\xdb"\xa3\x8b[\x06\xe8\x03]\xe8\xd2\x9d\t\xcb\x80.\xe2\xb6\x19e\x85^J\xa0\x07\x99\xa1s;\xc8^{\x86\xa1\xb3$\xb6]\xbb"\x7f^\x8e+\xf2\x1aza\x1c\xfa\xe6\xff/\xbe\x8929}\xbf\xf8R\xd7\xe9\x1bA_K\xa0\x879S\x08\x97\xe5^\xbf\x86\x8e\xd3\xa1Cf\x17\xa9%r!\x15z\xfeRA\x8f\x99\xeb\xa1\x08z\xc4\x06X{\xa0\x89\x1a.\xb3\xe5\x9d\xb35;\x8b\xa0\xddth\xf0\xa3\xec\x81\x1e\t\xb2\xd0 C\xe8\x98F\x00\xda\x03\x1d\x8a\xa0\xa1"\x1bS\x13\x83\x8e>]\xcd)0\xc6\x88myl\xb6n\x0f\xf4P\x05\xcd\xe6\x90\xf6@\x839\xa0\x18\xfa\x8aN\x84\xec\x81\xee\xab\xa0W\xd4\x8ab\x0ftGn\xad\\\x9f\xefP\xd7,{\xa0\xbbrk%2\xcf\xed\xdb\x04}\n\x82\xf6\x84\xd0\xecW\xd9\x03\xbd\x03\x1c\xf3\x84\xd0\x1dj\r\xb0\x07z%\xb7V\xae\xcfYK\xb5\x07z\x02L;B\xe8\x01\xed\xc8\xed\x81\x8e\xe5&\xd6\xf5yHW\x8a\xec\x81\x1e\x834\xdab\x0fH\x97,\x7f\xd9\x03\xed\xb2\x159\t4\xfdY\xd6@\x870\x00N\x0cM\x05\xc8\x1a\xe8\x9e\xd0\x98\x8d|M\x17el\x9dT\xe8\xb4\x03\x03o\x84.n\xc4\xb5\xe6\xa15\xd0\xc4\x85\xe9$\x05z\x87\xc4\xbf&\x9f\xd5\xf4\xcfk\x80fDRh\xf6\xbb\x92>\x9f\xde\x0b\xa7\xdc\xbd/\x82\xa7"\xe8+QVG|3\tdH\xde\xdc\x1b\xbb\xed\xa9W"\xf4\xed\x0b\x96\xc9\xf7.\xa0\xd7\x8e\x18\x9a\x84\x8c$n\xbe\xdbg\xb0=/\r\xba\xb9~\x81\xc3\x97\x12\x03\xc14\x05\x9a\xd8\xf6#\xee\xe6\xcdJ\xd6ai\xd0\x9b\xa5\x90]\xbe\xd4C\xeb\x06b\xe8H\x92\x05u3\xea\xb4K\x83\xde\xd4h\x9b\xb7e\x0e\xa0\xcf\xb7\x04\x9aX\xfb.\xb9G\xf7p\x14\xaby\xe8\x1e\xe7\x14@J\xfbhG\'\t4\tZ\xe4\x1eM\xd2\xc7\xec\x95\x04M\xd3(=\xe4\xec\xc28\xa8S\x02\x8d\x83\x16i\xe9i\xc9iN\xe9\xba\xf9\xfe\x08\x8b\xe5\n\x05\x8e\x8b\xa1\x9b\xa78\xd6\x9d\x8b\xdf\xe6\x1b\x841\xe8\x10\xaf=3\xe8\x890\xbd*\xf7\xac\x8e+l\x10;\xd8\xcb\xd144M\xc9\x95\x80\x1e#\xe7J\t\xf4\x80s8\xe1\xc4c\xb3E\xa9ih\xe7\nE8\xb3\xd2\x10ma\'\x83\xf6\xd0&\x1f\x89\x86\xc8\xc5\x9b\x98\x82\xf6\x12\x1eg\\\xaf\xc5\xdd\xdb\xe0\x14Y.\xcfC\x03\x7f\x00\xad-)\xb2\x9f\xf6\xb9]\x01ii\x07\x85\xd8J&\x01T\xf2\xf7q1s\xe59\xf6J\x80^\xf1\xfb\xc6\xf8h\x9c\xa4\xfd\x82\x0cz\x86\xa3\xddI\xe9\n9\xf1\x98\x86N\xec\xeaK\xa0\'\xa9\xfb,\xd1\xf3\xaex\xab\x9c\x0e\x92\x0f\xc3\xd0\xe0\xe1\x11*%\x1f\x98\xa4\xa1\x96A\xf7\xb0g\x03)eME\xd7Y(\xc3)\xdbov\x8eKC\xae[\x90A\x87x+DZ\xca\\5\xe6\xa6\xa1=\x90\xd7\x04\x97\xf6\xd3=\xfe\x98O\xd7\x18i\x19\xb4\x94\xf9;>4m\xcaa\xfd\xe9>\x86&\xe3s[\x95\xe4\x8f\xc8\xfe\t\xf7\xe8!\xf4\xa11\x0b\xbd\x00\x8e\x9f\xa8\x94\x8c9\x07J\xe8\x19R\x06\x136\xb5;\'\x9a2,\x1b\xeb\x1d\\0tL\xfa_\x054\r\x92p\xb87\x9d\x01\xbfg\xa3\xd0\xac7\xdd\xe5\x04/\xa4\n\x8f\nz \xd9p\x1e8\xe5\xceMB{\xc8\xf9\x14\x95\xd2\xd4sJ\xe8s\xa4\xef\'=\xc6\xc1\xd6aF\xa0\xbbP:P\xa9s\xa6pSd\xe7D\x1f?\xe6\xdft\x96\xd8\xce\xd6\x044\xa8\x8b]n\x04 }\xc2\x91\x06\xf4\x0c\x8e\x89IGe\x18;T\x1c\x1a\xec_\x9b\xf0\x90&\xe3\xe1\xa1\x1a\x9a\xa6\x13\xbd\xe6\xdf\xb4p\xf9\xbc\x82\xc5\xa1\xa3\x05rGD\xa5 \xc1*\x7foB\xcd\x1d\xc0}\'\xa0\x8f\xc2\xab.\xdc\xb4\xd5\x8c>\r*\xfa!_\n\x12\xac\xfa\xa9\x93\x80\x06\xd3\xb9\xee\xd6Hai\x88\x9d4\x8d@\x83|c\x0e_\xbab\x01Nj\xe8\tk\xcc\x92I\x11\xa9\xea\xc2\xd0\xc0\x8f39\x91\x8b\x99\x86\xa6\x86>\x03\x9b\xb9\xa1\xe9g\x9f\xdf6\xbe0\xf4\xc2\xe56\xab\x06\xa5!\xe8T\xd4\xd0}\xa09c\xa3Y\xccm\x1b_\x14\x1a\xd4B+Q\xda\x01\xce\xe1jh\x0f\x0856\xa9\xdcs\xb3l\xb0\xad>\x8d\xb9f\x88JW 1\x90\x1a\x9a<\xab\x1d\xa49L\xbf\xe6\x15\x86\x86\x912N\xa24\x06\x93Z\r\xe8\x99\xac\xaf\x81!\xaa\xc5\xf7\x97\xf6\x80{\xfeI\xa2t(\xeb\xc4$\x8f\xee\xb0\x9e\x9a3}\xc3P\xa6\xc2;y\xaf\xf8,\x85\xa8\xb4\x0bm\x16\x1a\xd0!\x9b\x0e\xf2\xa50\x8fc\xc1\xd5\x0c\x18!p\x90L\xc5x\x05\xb7i\xd6\x80\xa6\r$JM\xf3\xa9\x95$X~\n\x03\x04.\x93{\xc6\x03\xd5O\x0fz&OU\n_\xf5\xb8\x00tt\x0fGA\xc8jg\xbd\x9f\xad\x0etG\x9e\xaa\xb4\xef&%1\x8fA\x1a\x85\x8f\\&\xe5p\x07\x8a\xb4\x164\xdd\xeeG\x90\xf5\x13Vu+\xb7m\xd7\x8b]<\xbc\xf2\x17\xc7ii\xb0\xc5\x8f^H\x1b5\xae\xea\x93\x9c\xd0\xc0>\xb3Qd\xb8\x8b\x07nZ\x1a\xec\x86H\xcd\xa5\xb1B{I#\x1a\x0e\x8e{\xa0\xde"7\xddLJ\x1a4w\xf1\x19N\xf8\xac\x9a\x04\xa0)%\xd96\x0f\x946q\x9c\xd92\x8f\x95l\x90L\x8f\xcc]\xbc\x90\x18\xba\xd2\xa0\x03\xb8m/W\x8as\xee\xb6\xe6\xd9\rNa\x8c\x83/\x93\x17\x0f]lM\xd7\x82\xa6;\x04m\xd6\xe6`i\x13\xd7\xd3\x91\x93\xd9v\xb3H\xa6\xec\xe5.\xeer\xa6_-h:Q\x14\xed\xb0\x1e\xe1$\x19\x07Q\x94\r\x1agG>\x11]\x8c\xb7\x94\xd4\xdd\xe68\xc4\xf2\xc1Y`\xc7n\xf2\xfbjB7I$\x14\xd1\xbb\x9c\xff\xb6w6Om\x1ba\x18\x17\x12LKO\xd5\x8c\xe4qo\x9aW\x93\x18s\xf2\xc8M&\xc7:\r\xc1\xc9\xa9\x9e\x98\x90\xe6\x04\xc9`\x92\x1c\xdd\x04\xa79\x15B\x1b\xe8\r\x17H\xe1\x94q\'d\xd2\xbf\xb2\xb2\x01\xed\xb7\xb4\xbbZ\x99LG:\xa1\xf1\xae\xf7\x87\xbc\x92\xde}\xdegw9\x85\xa9-%e\xa1\x93Q\xf2\x83\x80\xd3yf\xc99\x9c\xdf\xc9C\xdb\xb0\xc1_\xc9\x84(|\x8d\x0e\x14\xe4\xa0\x93m\xf3<\x9eM\x8b\x9e\x13\\\x91\x85\xb6\x83u\xder\xdf \x98r\xfc\xad"t\x9d\x98w/\xfc4\xb9\x1b\xa5\xa0\xa3\x1a=\r\x9b\xbb\xfd:j\xdbV\x83N\xde\xa3\xfce\x16\xe6\xa8\xc6\xbdQ6\xb4\x03uj\x19vw\x95\xbb\x80\xeaL\xf2+\xabB\xcf\xe0\x13\xef\xb3\x1e[\xf1\xf1.s\xf7@xM\xd7\xa9\xf2w2\xef$\xd7K\x15\xba\x8eG\x06lef9\x06\xf7\xa1}1\xc3O\xd0Rm\x83\xa92\xe4\xbe\x98\x16\x90\xf4\xab\n\x9d\xf4\x0f\xc14\xf2\xef\x19\x04\xff\xcf\xf3\xddh\xf8-\xbd\xee0\x15~\x08S\x93]^\xa8\x0e=\x83=\xaay\x95\x0f\x18\x08\xd7\xdb\x04hr\x0b\xcf\xb7\xd8\xd2\x15~\xc7\xc3m\x14\xca\xd0I\x07\xf8\x89_9\xe4p\xb8\xde\x8b\xcb\xa2\x89.\x1a\xffu\xc6-j7\xd2\x93])s\x84\x84Qo\xa2\'\t\x96\x84\xb4\xeb.\xef\xf0\xdb\xa7\x88{\xfc\xbf\xfd\xba\xdb\xe1\x96\x1b\xf1\xdb\x05\xacYQh\x9e2{q\x0e\xc9l\xdc\xca\xd1-Wpt\xdb\xbd\x93\x7f?\r\x06\x9f\x8f\xf7\x96Dev\x04\xe6\xd2\x05\\sR\x86F\xdb\xf6V\x04\x95a\xd6\xd5>\x96\x05\xedF\xebx\xdc\xa1\x0e\x8d\xea\x0fE#\xa8\x8f\xba\xcc\x8f\x05\xf2CX\'B\x03uh\xd6Y\xc4\x16>\xd2c\xfe\x19\x1a\xfcv\x91\xect[\x0f\xdaBb\x9b-,\xacE\xfd\x10D:`\x8d\xb4\xabh@#\xbdq5\x10\x16>\xd2c\x16\xb4{\x83XLO\x07\xda\xb9\x8eBuq\xe1#\x8d\xbeael\x95s9\x08\xd3\x80\xc6\x12f\x0f\x02q\xe1\x97j\xcc\xf7S\x16N\xb8\xe6JY-S\xa1\xd1\xad\xe8G)\x85o\xa90o\xa6-\x9c\xd0\xa2\x064:\xd0\xd8\xad\xf8c .\xcc\xc6\xc9\xc2#\x8e\xbb%4\xc4,\xcfs\x86\x17;\x89\x9a\xbc(\xa5p4Y1C\xe2\xb8\x97.\x9a\xb5\xc8\xdbP\x13\x1a\xbd\x15\xcf{\xb5\xa8\xb0\r[\x12\x17\xdb{\x9a\xae\xf4!C\xc2(\x174\n@\'\x0f\x10aa\x07\x82\xc3,\xe6\xfd,y\x129\x16\xc3|\xd0HG^MOg\xd9PK\xed#w\xfbY\x9a\xea\r\xccp\x94\x01\x9d1\x1aEO\xbd\xb1\xac\x92^8\xc6\xee\xf0\x89\xfd\xfd>\x84\x19\xc3^$\x01U%\xc5*\xf1w-\xe0+\xbef\xfd\x87\x10\x9c\xb1\xd1\xb3\xdf~/!0`b\xdbN^h\xdc\xfa2\x94\xd817\x0e\xd4\xde\x1c\xef\xae\\VYi\xff\xf1AJ\x7f\xc2dM\xe9\xdd\xb7\xc5\x1fc6\xd3\x8a\xd4w5\xcfcL\xcb\x1a\x0c\xac\x08\x1b\xc2dt\xaduB)\xcb\t\x8d_\xea\x9d@\xc5;\x13\x0fr\x9b\xd2n\xda\x052\x91\x93\x17\x1a\xbb\xd4\x9em\xc8{\xcc\x9e\xb6HI2/\xb4\x85\r\xbb\x1f\x87\x05A\xbf\xa22f\xb9\xa1\xb1K}1\xf02\x0e\xcd8\xd1rC\xe3\xbd\xfa\xdcQc\x1cz\x9bNM\xe6\x87\xc6\xcds\xaba\x01\xd0s\x8c\xb2\x90\x1f\x1aw\xcf\xe9\xe5\xe0\xa43tJ\x8e\xbf\x0c\x9f"\x96\xc9\xaeF\r\xd3\xd0\xdbTN\xd1\x0c\xb4\x15\x1d\xe0\x92\x85a\xe8\x8f\xaeh\xf6E>h{\x11\x17\xb4B\xa3\xd0x\x06x\x14\x99\x84\xc6\xef\x15\x7fd\xd2\x8a\xbc\xd8\xc9\xcaf\xa8\xa8\xa6\xe4)\xeeu\xa8B\xc3\xd8\xdc\xadp\x9bpb\xc8\xd5\x95m\t\x7f\xec\xc5]\xcf\x18\xf4\x01)\xa4\x9a\x85&\xf3\xf8\xcb`\x08z\x96\xca\xa1\x1a\x86v\xf0\xce\xe7\xbe\r\x8d@\xe3?\xdfdV\xbaah*\xb9\xfc$4\x00]g\x12\xce\xa6\xa1\xc9\x0e\xe2\x0f\xc3\xdc\xd0\xc4oW\x81B\xa0\xc9\x0e\xe2\x8d\xf2: \x17[t\xe7(\x00\xda\x8afI\x85+\xcc\x05M\xfaknCA\xd0\x94\xc9\xcb\x1b\xe51\x13\x12\xd79y\x7f\x17\x00M\xda\xe9\x92W\xa3\x06tDj\x96^\xbf8h\x8bJ\x89\xfbC]_\xdeMR\x1dQ\xf4\xda\xaa\xde=T\x16\xee7\x1dh\x87\xf6#,+\xde\xd3\xcaO\x80\x03Z\xd7W\x86\x8e\xe0\x90\xb6\x13Y\x05C\xd3N\x8fj_\x11\x1ah{M\xd5n\x14\x0eMy\xc5\\\x7f\xedR[\x94\xfa*\xd8\xa2\xeb\x8f\x94\'r\xc8\xc6\xd3\xe84\xba\xce\xa8\xb8\xb6l]\x87\xa3\x07\x0f\xb5cq\x95\xd2l"\xdf\xdf\x94\xaa\xeb\x00\x9c1\x9a\xea\x13\x98\n\xb4\xc5\x9a\x91\xdc\xea_\xd9\xba(\xc0\xfc6\xeb\xae\x81)A[\xbc\xd4\xe1\xa3\x7f \xdd\xc3\x04\xf3\xbf\x8b\xcd\x08S\x80\xb6\xb9\t\xcfGcWMSTwk\x89\x9b\x08\xb5\xa7\x08\xcdO\xd3\xfaw\xdfG\x94 \xedL\xe4\xeao\xf8y\x8d\xfb\xd0\x98*\xb4(\xb9\xec\xb7\x9f\x7f\x00\xc2\x0e48\xdb\xed\x88\x13\xce\xd3\x85\x86\xaf\xc5\x99\xacn{\xaf\xf7\xfc\xa4\xd7{\xb6wgE\\\xea\x1d4\xaciC\xc3M7\xd7\xb1\x96[\x80\xd5\xaa\\\xef\xe8#{C\xb0\xae\x04\x9a\x89"\xe4\x8fj?\xb4\xae\x08:\n\x0f\xf5\x98\xef\x19\x91\xd44+;L\xf8#s\xf8O\xe1*\xa1\xc7\x11\xd0\x86\xb2\x85\xc9\x86\xab\x85\x1e{I\xd5.\xb6\xb7f@q5 "\x06\xf2=\xdb\xdf\x07\xa5}TL\r\x028q}\x86k\x82\xf0O\x04\x06\xda5\xb3>X$vM\xe0\x91I?wC&\xa1\xc7];\xf8{)\r\xb9\xfb"2\xd2\x90I\xe8\x89\xbb\xbb&\xe2\xee&\x06\x8a/\x0c\xfab\xcb\xa2\xcf\xcf\x96\x88\x8e\xe2w\xf7N\x7f\x89\x83\xbd\xc6\x17\x0c=\x89F\xbfzsr\xdc\x8b\x8f\x93\xd3O\x93>\x116\xcc6T\xc4\xf2\xbbM\xdc\x9bb\xf4\x9b\x0b\x84.\xfc\xb4\x84.\xa1K\xe8\x12Z\x13\xda\xa0Mm\xda\xa7%t\t]B\x97\xd0%t\t]B\x97\xd0%\xf4\xff\n\xfa?6\xf5\xcc\xbfo\xe1\x7f\xcc\x00\x00\x00\x00IEND\xaeB`\x82')