Fipy : Guru Meditation Error when I try to connect my socket



  • Hello,

    Every time I try to connect my socket in order to test my connectity in LTE CAT-M to internet I have a Guru Meditation Error.

    My main code is as follow :

    import pycom # we need this module to control the LED
    import math
    import os
    import socket
    import ssl
    import time
    from  network import LTE
    from network import Bluetooth
    from network import LoRa
    from network import WLAN
    from network import Server
    from LTEfunction import func
    from machine import SD
    from pytrack import Pytrack
    from L76GNSV4 import L76GNSS
    
    print()
    
    print('Switching off Heartbeat')
    pycom.heartbeat(False)
    pycom.rgbled(0x000000)
    
    print('Switching off WLAN')
    wlan = WLAN()
    wlan.deinit()
    
    print('Switching off Server')
    server = Server()
    server.deinit()
    
    print('Switching off Bluetooth')
    bt = Bluetooth()
    bt.deinit()
    
    print('Switching off LoRa')
    lora = LoRa(mode=LoRa.LORAWAN, region=LoRa.EU868, power_mode=LoRa.SLEEP)
    
    wakeReason = machine.wake_reason()
    #print("Wake Reason = " + str(wakeReason[0]))
    
    try:
       py = Pytrack()                                        # Expansion Board Init
    except:
        print("ERROR : Pytrack non available")
    l76 = L76GNSS(pytrack=py,timeout=30, debug=False)    # GPS Init
    
    SDInBoard =0
    
    # setup SD card
    try:
        sd = SD()
        os.mount(sd, '/sd')
        LoF = os.listdir('/sd')
        SDInBoard = 1
    except:
        SDInBoard = 0
        print ("WARNING : Put a SD card if you want some records")
    
    if(SDInBoard == 1):
        i = 0
        nameFound = 0
        while nameFound == 0:
            RecordFileName = 'LTEGPS-record'+str(i)+'.txt'
            j = 0
            namePresent = 0
            while j < len(LoF):
                if RecordFileName == LoF[j]:
                    namePresent = 1
                    break
                else:
                    j+=1
    
            if((j>=len(LoF)) and namePresent == 0):
                nameFound = 1
                break
            else:
                i+=1
    
        if(wakeReason[0] != 0 and i > 0):
            RecordFileName = 'LTEGPS-record'+str(i-1)+'.txt'
        print("INFO : RecordFileName : " + RecordFileName)
    
    lteAttached = 0
    lteData = 0
    lteConnected = 0
    
    functionLTE = func()
    #functionLTE.lteFuncDeInit()                         # DeInit of the LTE Modem
    
    functionLTE.lteFuncInit()                             # LTE Modem Init
    
    #pycom.rgbled(0x007f00) # green
    
    loc = l76.get_location(debug=False)                   # Get localization with the GPS
    tim = l76.getUTCDateTime(debug=False)                 # Get date and time with the GPS
    
    lteAttached = functionLTE.lteFuncAttach(80)           # Start LTE Attach
    if lteAttached != 0:                                  # If attached
        lteConnected = functionLTE.lteFuncConnect(20)     # Start LTE Connect
        if lteConnected:                                  # If connected
            lteData = functionLTE.lteFuncSocket()         # Start a socket in order to receive data
            #lteData = functionLTE.lteFuncMQTT(msgFipy="Date : {} - LOC : {}".format(tim, loc))
    
    functionLTE.lteFuncDeInit()                           # Reset & DeInit of the LTE Modem
    
    if(SDInBoard == 1):                                   # Record data in the SD if a SD card is inserted
        try:
            pycom.rgbled(0x7f0000) # red
            f = open('/sd/' + RecordFileName, 'a')
            f.write("Date : {} - loc : {}\t".format(tim, loc))
            f.write("LTE Attached: "+str(lteAttached)+",\tLTE Connected: "+str(lteConnected)+",\tLTE Data: "+str(lteData)+"\n")
            f.close()
            pycom.rgbled(0x0)
        except:
            print ("ERROR : SD card not reachable anymore")
    
    print("INFO : Date : {} - LOC : {}".format(tim, loc))
    print("INFO : LTE Attached: "+str(lteAttached)+", LTE Connected: "+str(lteConnected)+", LTE Data: "+str(lteData)+"\n")
    
    machine.deepsleep(2000)
    

    The LTE functions code is below.

    import socket
    import ssl
    import time
    import machine
    from  network import LTE
    from mqtt import MQTTClient
    from network import WLAN
    
    class func:
        def sub_cb(self,topic, msg):
           print(msg)
        def lteFuncInit(self):
            self.lte = LTE()         # instantiate the LTE object
            #self.lte.init()
            print(self.lte.imei())
            print(self.lte.iccid())
            #print(lte.send_at_cmd('AT!="showver"'))
            print(self.lte.send_at_cmd('AT+CGCONTRDP'))
        def lteFuncAttach(self, timeout):
            i=0
            self.lte.attach()        # attach the cellular modem to a base station
            print ("LTE Attach :")
            while (not self.lte.isattached()) and (i <= timeout) :
                time.sleep(0.25)
                #print (".", end="")
                i+=1
    
            if(self.lte.isattached()):
                print("i attach : "+ str(i))
                print (" Attached OK")
                return 1
            else:
                print (" Attached NOK")
                return 0
    
    
        def lteFuncConnect(self, timeout):
            i=0
            self.lte.connect()       # start a data session and obtain an IP address
            print ("LTE connect :")
            while (not self.lte.isconnected()) and (i <= timeout):
                time.sleep(0.25)
                #print (".", end="")
                i+=1
    
            if self.lte.isconnected():
                print("i connect : "+ str(i))
                print (" Connect OK")
                return 1
            else:
                print (" Connect NOK")
                try:
                    self.lte.dettach()
                except:
                    print ("ERROR : LTE dettach problem")
                return 0
    
        def lteFuncSocket(self):
            print ("Creation Socket")
            s = socket.socket()
            print("AFTER CREATE SOCKET")
            s = ssl.wrap_socket(s)
            print("AFTER WRAP")
            s.connect(socket.getaddrinfo('8.8.8.8', 443)[0][-1])  # Error at this line
            print("Socket Connected")
            s.send(b"GET / HTTP/1.0\r\n\r\n")
            print(s.recv(4096))
            try:
                s.close()
                self.lte.disconnect()
                self.lte.dettach()
            except:
                print ("ERROR : Socket close, LTE deconnect and/or dettach problem")
            if s.recv(4096) != "":
                return 1
            else:
                return 0
        def lteFuncMQTT(self, msgFipy):
            client = MQTTClient("FiPy", "52.70.203.194",user="XXXX", password="XXXXXXXXXXXXXXXX", port=1883)
    
            client.set_callback(self.sub_cb)
            print("MQTT")
            client.connect()
            print("Connected")
            client.subscribe(topic="MaloM/feeds/FipyPos")
    
            print("Sending ...")
            client.publish(topic="MaloM/feeds/FipyPos", msg=msgFipy)
            print("End Send")
    
            try:
                self.lte.disconnect()
                self.lte.dettach()
            except:
                print ("ERROR : LTE deconnect and/or dettach problem")
            return 1
        def lteFuncDeInit(self):
             print('Switching off LTE')
             quit = False
             while quit == False:
                 try:
                     self.lte.deinit()
                 except OSError:
                     print('  Exception occured and retrying...')
                     #machine.reset()
                 else:
                     quit = True
    

    Below you can see a copy of the console with the error.

    rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff8028,len:8
    load:0x3fff8030,len:1984
    load:0x4009fa00,len:0
    load:0x4009fa00,len:19088
    entry 0x400a05e4
    Initializing filesystem as FatFS!
    
    Switching off Heartbeat
    Switching off WLAN
    Switching off Server
    Switching off Bluetooth
    Switching off LoRa
    INFO : RecordFileName : LTEGPS-record4.txt
    Switching off LTE
    LTE Attach :
    i attach : 53
     Attached OK
    LTE connect :
    i connect : 0
     Connect OK
    Creation Socket
    AFTER CREATE SOCKET
    AFTER WRAP
    Guru Meditation Error: Core  1 panic'ed (InstrFetchProhibited). Exception was unhandled.
    Core 1 register dump:
    PC      : 0x00000000  PS      : 0x00060a30  A0      : 0x800fa655  A1      : 0x3ffe2ec0
    A2      : 0x3f955b10  A3      : 0x3f955b26  A4      : 0x3f955b34  A5      : 0x00000000
    A6      : 0x00000000  A7      : 0x00000a6e  A8      : 0x800e4197  A9      : 0x3ffe2ea0
    A10     : 0x3f955b10  A11     : 0x3f955b26  A12     : 0x000001bb  A13     : 0x3f955b34
    A14     : 0x000000fe  A15     : 0x3fbc1467  SAR     : 0x0000001a  EXCCAUSE: 0x00000014
    EXCVADDR: 0x00000000  LBEG    : 0x4009cb8c  LEND    : 0x4009cb97  LCOUNT  : 0xffffffff
    
    Backtrace: 0x00000000:0x3ffe2ec0 0x400fa652:0x3ffe2ef0 0x400f6e69:0x3ffe2f10 0x400f6ed1:0x3ffe2f30 0x40102472:0x3ffe2f50 0x400fa744:0x3ffe2ff0 0x400f6e69:0x3ffe3020 0x400f6ed1:0x3ffe3040 0x40102472:0x3ffe3060 0x400fa744:0x3ffe3100 0x400f6e69:0x3ffe3180 0x400f6e96:0x3ffe31a0 0x400df22e:0x3ffe31c0 0x400df4a1:0x3ffe3260 0x400de181:0x3ffe3280
    
    ================= CORE DUMP START =================
    9DgAABEAAABsAQAA
    pFr8PwAu/j9YNP4/
    cC7+P/Az/j8sbwAAWFf8P1hX/D+kWvw/UFf8PxQAAAAIbvs/CG77P6Ra/D8AAAAA
    BQAAAFwE/j9NaWNyb1B5AAAAAAAAAAAAAQAAAFg0/j8AAAAAIAgGAAUAAAAAAAAA
    5Hb7PwSs/D8AAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA==
    AAD/AAAAAAAwCgYAVaYPgMAu/j8QW5U/JluVPzRblT8AAAAAAAAAAG4KAACXQQ6A
    oC7+PxBblT8mW5U/uwEAADRblT/+AAAAZxS8PxoAAAAUAAAAAAAAAIzLCUCXywlA
    /////7sBAAA0W5U/dDYIQOzl+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAABAv/j/4yUA/AgAAAAAAAABsbg+A8C7+PxQ1QD8CAAAA
    AAAAAKgUlT+MywlAl8sJQAQAAADJOAhAFAyVP0xmCUDUbg+AEC/+PxQ1QD8CAAAA
    AAAAAAgMlT8DAAAAIwAGAHUkEIAwL/4/AQAAAAAAAAAAAAAACAyVPwEAAACuDwAA
    R6cPgFAv/j8IAAAAlCaVPwQMlT8IDJU/eC/+P+Av/j9sbg+A8C/+P5D/lD9YrPw/
    YDD+P5Av/j9Hpw+AUC/+PwgAAAAoDJU/AAAAAPALlT8kDJU/CQAAAAMAAAAkMf4/
    saYPgLAv/j9sbg+A8C/+P5D/lD9YrPw/7RYQgCAAAAAIAAAAHAyVPwAAAAAHAAAA
    AAAAAPALlT8gDJU/KAyVPyQMlT8bAAAAAQAAACkAAAAEDJU/AAAAADD///+VJpU/
    1G4PgCAw/j/ACJU/AQAAAAEAAAAYMf4/AAAAAJpQAADwC5U/MAAAAAkAAADwL/4/
    dSQQgEAw/j8AAAAAAQAAAAEAAAAYMf4/AAAAAAAAAABHpw+AYDD+PwwAAAARIpU/
    FDH+PwEAAAAAAAAAAQAAAGxuD4AAMf4/WKz8P1is/D/AMf4/sDD+P0enD4BgMP4/
    CAAAADAx/j8AAAAAADH+Pywx/j8HAAAAYDH+P5AdlT8rAAAAAAAAAGxuD4AAMf4/
    WKz8P1is/D/tFhCAoB2VPwcAAAAkMf4/AAAAAAcAAAAAAAAAADH+Pygx/j8wMf4/
    LDH+PwAAAAAUMf4/oB2VPxQx/j8AAAAAMP///xIilT+Zbg+AgDH+P7D9lD8AAAAA
    sP2UPw8ilT8QMf4/JDH+P1is/D/ACJU/AESVPy4aAABgA5U/sACVP+ABlT/A65Q/
    tyCVPxAx/j8AAAAASgIAAOBBCIBwMf4/kDH+PwAAAAAAAAAAAAAAAAAAAAAAAAAA
    ADH+PwAAAAAHAAAAUDH+PzHyDYCgMf4/sP2UPwAAAAAAAAAAAAAAAAEAAAAAAAAA
    pPQNgMAx/j+w/ZQ/IAAAAAAAAAAAAAAAAAAAACoAAACE4Q2AYDL+P17tlD9GAQAA
    AAAAAAAAAACk9A2AwDH+P8Rj/D8AAAAAIAAAALEKQT94CkE/CAAAALLhDYBQMv4/
    7uFBP0YBAACE4Q2AYDL+P17tlD9GAQAAwPENgKAdlT8wHZU/AAAAANgx/j9AMv4/
    CAAAAMiZQj824BgAAQAAACAAAABe7ZQ/7eAYAAEAAAAgAAAAsQpBP3gKQT8IAAAA
    AAAAAIAy/j+QMv4/ohkAAJAy/j8gMv4/oFz8P0SI/T8AAAAA8DP+PwAAAAAAAAAA
    AQAAAKWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl
    paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl
    paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWl
    paWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaXQNghAqNwNQDAABQAAAAAA
    8DP+PwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAP////8AAAAA////////////////
    /////8VCE4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAyAAAA
    AgEAAAAAAAAA4BsAgDL+PwAAKAAAAAAAAAAAAKgz/j9QM/4/AAAAAAAAAAAAAAAA
    AAAAAAEAAAAAAAAAWCFAPwAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAPwz/j8AAAAA
    gAAAAArXIzwK1yM8CtcjPLq9B70AAIA/3NvYNfcuEacAwJ0naNqaOwAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
    CL39P5C7/T8Avf0/
    kLv9P6C8/T/bSv/QhML9P/RW/D8Ivf0/7Fb8PxkAAAAgRaBm/LQwrQi9/T8AAAAA
    AAAAAAS5/T9JRExFAFIJt6MdkJGuSXQAAAAAAAC9/T8AAAAAIQAGAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJY0Yw==
    0DYIQHZdIEAwAgYA5FcJgFC8/T8gAAAAAAAAAMQL/T8MGfw/4Fj8P4hW/D/gC/0/
    MLz9PwAAAAAAAAAAAAAAAIBV+z8DAAAAIwAGAAoAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAMk4CECAVfs/TGYJQJxu+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAACAVfs/AwAAACMABgAAAAAAcLz9PwAAAAAAAAAA
    AAAAAAwZ/D/gWPw/iFb8PwAAAACgvP0/AAAAAAAAAAAMGfw/AAAAAAAAAAAAAAAA
    AQAAAAAAAAAEAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKy8/T8AAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
    fML9PwDB/T90wv0/
    AMH9PxDC/T9T+hEY9Fb8PxC9/T98wv0/7Fb8PxkAAABZbfgzMgfTI3zC/T8AAAAA
    AAAAAHi+/T9JRExFAOoTJlENeRb1VMcAAQAAAHTC/T8AAAAAIQAGAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNRkg==
    0DYIQHZdIEAwAAYA5FcJgMDB/T8gAAAAIAAAAMQL/T8MGfw/5Fj8P4hW/D8ADP0/
    sMH9PwAAAAAjAAYAIAAGAMDa/T/AGPw/IAAGAAAAAAAAAAAAyTgIQAAAAAAAAAAA
    AAAAAMk4CEDA2v0/TGYJQAx0+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAANVXCYDAwf0/DBn8P+BY/D8AAAAA4MH9PwAAAAABAAAA
    AAAAAAwZ/D/kWPw/iFb8PwAAAAAQwv0/AAAAAAAAAAAMGfw/AAAAAAAAAAAAAAAA
    AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzC/T8AAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    IK/9PwBS/j9oU/4/
    AFL+PwBT/j87bwAA9MP9P8zW+z8gr/0/2Fb8PxQAAAClpaWlpaWlpSCv/T8AAAAA
    BQAAAGxD/j9TZXJ2ZXJzAKWlpaWlpaUAAQAAAGhT/j8AAAAAIQAGAAUAAAAAAAAA
    8H/7PwAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWlpQ==
    0DYIQMBVCUAwDgYAD+MNgMBS/j87bwAA5Fj8PwwZ/D8BAAAAAAD/AAAAAP/AVQmA
    oFL+PwEAAAA7bwAAIK/9PwEAAAD+AAAABA79PwAAAAAAAAAAAAAAAKjJCUDWyQlA
    /////8k4CEABAAAATGYJQPwE+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAACCv/T8BAAAA/gAAAAQO/T8AAAAA4FL+PwAAAAAAAAAA
    DBn8PwEAAAAAAP8AAAAA/wAAAAAAU/4/AAAAAAAAAAAAAAAAAQAAACJf/D8AAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFP+PwAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    7MP9P2DX/T+82P0/
    YNf9P1DY/T87bwAABHf7Pyiv/T/sw/0/2Fb8Pw8AAAD0zf0/9M39P+zD/T/szf0/
    CgAAAMDO/T9UbXIgU3ZjAKgeEZgDk9MAAAAAALzY/T8AAAAAIQAGAAoAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUUSQ==
    0DYIQJ1kCUAwBAYAAAAAACDY/T8BAAAAO28AAAAAAADwWPw/6Fj8PzpvAACdZAmA
    ANj9PwAAAAAMGfw/AAAAAAAAAAAAAAAAAAAAACAAAABMivk/AAAAAKjJCUDWyQlA
    AAAAAMk4CEAAAAAATGYJQEyK+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUNj9PwAAAAAAAAAA
    AAAAAFUHAABk+f0/AAAAAAAAAADwWPw/6Fj8P00RAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAABc2P0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAA
    /Hb7PwCC/j90g/4/
    AIL+PxCD/j88bwAAlNH7P/TD/T/8dvs/2Fb8PxMAAADYfPs/2Hz7P/x2+z8AAAAA
    BgAAAHh3/j9MVEUANHf7PzR3+z8AAAAAAQAAAHSD/j8AAAAAIQAGAAYAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
    0DYIQMBVCUAwCAYAIbEQgMCC/j88bwAA5Fj8PwwZ/D8BAAAAAAAAAAAAAADAVQmA
    oIL+PwEAAAA8bwAA/Hb7PwEAAAD+AAAAAAAAABgAAAAI4v0/AAAAAKjJCUDWyQlA
    /////8k4CEABAAAATGYJQAw1+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAHy+F0AoGrw/8A79PxEAAAAAAAAA4IL+P3S2/D8AAAAA
    EQAAADgUvD9wC/0/EQAAAAAAAAAQg/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByD/j8AAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    jNH7P5DP+z+E0fs/
    kM/7PyDR+z88bwAABNP7PwR3+z+M0fs/2Fb8PxMAAAAAAAAAAAAAAIzR+z8AAAAA
    BgAAAIjH+z9Mb1JhAAAAAAAAAAAAAAAAAQAAAITR+z8AAAAAIQAGAAYAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
    0DYIQMBVCUAwCAYAjqEQgFDQ+z88bwAA5Fj8PwwZ/D8BAAAAAAAAAAAAAADAVQmA
    MND7PwEAAAA8bwAAjNH7PwEAAAD+AAAAIwAGAA4AAAAw0Ps/AQAAAKjJCUDWyQlA
    AAAAAMk4CEABAAAATGYJQByD9z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAP//P7MAAAAAAAAAAAAAAAAAAAAAcND7P6Cz/D8BAAAA
    aNJCPyAABgAs4vw/AQAAAAAAAAAg0fs/AAAAAAAAAAAg0fs/AAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcg/c/AAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAstPw/CwAAAAIAAAABAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAALNH7PwAAAACAAAAAmpkJQArXIzwK1yM8
    ur0HvQAAgD/c29g19y4RpwDAnSdo2po7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA=
    /NL7P4BI+z/gSfs/
    gEj7P4BJ+z88bwAAdMX9P5TR+z/80vs/2Fb8PxQAAAAAAAAAAAAAAPzS+z8AAAAA
    BQAAAOQ5+z9NZXNoAAAAAAAAAAAAAAAAAQAAAOBJ+z8AAAAAIQAGAAUAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
    0DYIQMBVCUAwCAYAu4QQgEBJ+z88bwAA5Fj8PwwZ/D8BAAAABAAAAP///3/AVQmA
    IEn7PwEAAAA8bwAA/NL7PwEAAAD+AAAAIAMGAAAAAAB8+/Y/AAAAAAAAAAAAAAAA
    AAAAAMk4CEABAAAATGYJQHz79j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAPzS+z8BAAAA/gAAACADBgAAAAAAYEn7PwAAAAB0sfw/
    DBn8PwEAAAAEAAAA////fwAAAACASfs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjEn7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAA==
    bMX9PyCt/T8Yr/0/
    IK39P7Cu/T+dbwAA4Fb8PwTT+z9sxf0/2Fb8PwcAAADo4f0/6OH9P2zF/T/g4f0/
    EgAAAByh/T90aVQAdADbdG4w4SUpaYMA////fxiv/T8AAAAAIQAGABIAAAABAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHe2dQ==
    0DYIQCxICUAwBAYAgeIXgOCt/T+84f0/gK79Pwji/T8AAAAAEOL9PwAAAAAsSAmA
    wK39PwEAAABkAAAA5Fj8PwEAAAAMGfw/AAAAABAAAAAAAAAAAAAAAOnOCUD5zglA
    /f///8k4CEABAAAATGYJQKxg+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAAAABfRBeAIK79P/AO/T+Arv0/
    AAAAADlvAAABAAAAAAAAAGQAAAAwrv0/VAG8P1AUvD+mRBeAMK79P1ReQz+UPAhA
    Y8wWgFCu/T/wDv0/gK79PwcAAAAM7RdA8C3+P4Cu/T9kAAAAOW8AAAAAAACoFJU/
    AAAAAICu/T/ABRhAAAAAAAAAAACArv0/wAUYQAAAAACsFf0/rBX9P6gV/T+oFf0/
    AAAAALCu/T8AAAAAAAAAACQUvD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvK79PwAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    xNb7P+BV+z/kV/s/
    4FX7P4BX+z87bwAAKK/9P+BW/D/E1vs/2Fb8PxMAAAAqT4QTGw06P8TW+z8AAAAA
    BgAAAOhJ+z9TaWdmb3gA9jkCDqgwoEQAAAAAAORX+z8AAAAAIQAGAAYAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
    0DYIQMBVCUAwAgYAil0fgKBW+z87bwAA4Fj8PwwZ/D8AAAAAAAAAAAAAAADAVQmA
    gFb7PwAAAAA7bwAAxNb7PwEAAAD+AAAAIwAGABEAAAB8Cfc/AAAAAIzLCUCXywlA
    /////8k4CEABAAAATGYJQHwJ9z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAMTW+z8BAAAA/gAAACMABgAAAAAAwFb7P5xQ/T+YUP0/
    DBn8PwAAAAAAAAAAAAAAAAAAAACAV/s/AAAAAAAAAADQNghAcF0fQDAABQAAAAAA
    gFf7PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    fAn3PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIxX+z8AAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    tLb9P2B1/j9wd/4/
    YHX+PxB3/j8AAAAAtJ/9P5iw/T+0tv0/aFb8Pw4AAACk9v0/pPb9P7S2/T+c9v0/
    CwAAAHRf/j9JUlFzAAAAACC3/T8AAAAAAQAAAHB3/j8AAAAAIQAGAAsAAAAAAAAA
    AAAAAKx2/j8AAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA==
    0DYIQCxICUAwDgYAeNkOgCB2/j949v0/wHb+P8T2/T8AAAAAzPb9PwAAAAAsSAmA
    AHb+PwEAAAD/////5Fj8PwEAAAAMGfw/AAAAAAAAAAAMKfo/AAAAAAAAAAAAAAAA
    AAAAAMk4CEABAAAATGYJQAwp+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAABQAAAApaWlpaWlpaVw5w2AYHb+P8iq/D/Adv4/
    AAAAAFwFAAClpaWlpaWlpf////9gdv4/tK38P8B2/j8AAAAAAQAAALyq/D+wM/w/
    AAAAAPB2/j+8qvw/AAAAABB3/j8AAAAAAAAAAAAAAAAAAAAAvKr8PwAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYrPw/
    WKz8PwAAAADAdv4/ABQAAAwp+j8AAAAAAAAAAAAAAABYrPw/AAAAAAoAAAD///9/
    AAAAABB3/j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAcd/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    rJ/9PyCe/T+kn/0/
    IJ79P0Cf/T+IfmMx5Mb9P7y2/T+sn/0/aFb8PwEAAABEzf0/RM39P6yf/T88zf0/
    GAAAAKib/T9pcGMxAJO7/nTJ1nCMN1QAAQAAAKSf/T8AAAAAIQAGABgAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABz0dg==
    0DYIQCxICUAwBgYA5B8IgOCe/T8Yzf0/AAAAAGTN/T8AAAAAGM39PwAAAAAsSAmA
    wJ79PwEAAAD/////5Fj8PwEAAAAMGfw/IAMGAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAMk4CEABAAAATGYJQDxR+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAKyf/T8BAAAA/gAAACMABgAAAAAAIJ/9P7xV/D8AAAAA
    AAAAAJYFAAAAAAAAIAMGAP////8AAAAAvFX8P6hV/D+0zP0/AAAAAAEAAAAAAAAA
    AAAAAECf/T8AAAAAAAAAAHyxCEABAAAAAAAAAAAAAACtFAiAgH3+PwABAADoDQBA
    AAAAAAAAAABMn/0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAA==
    3Mb9P2D0/T8Y9v0/
    YPT9P7D1/T/CTnYkQJr9P7Sf/T/cxv0/aFb8PwUAAADw4/0/8OP9P9zG/T/o4/0/
    FAAAABzq/T9ldmVudFRhc2sAyd8EursAAAAAABj2/T8AAAAAIQAGABQAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAtvw==
    0DYIQCxICUAwDwYA9BYWgCD1/T/E4/0/YPX9PxDk/T8AAAAAGOT9PwAAAAAsSAmA
    APX9PwAAAAD/////4Fj8PwAAAAAMGfw/IAwGAAAAAAAwKBaA4PT9P6jJCUDWyQlA
    /////8k4CEAAAAAATGYJQKyn+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAACAHBgCQ9f0/hJP+P4Cn/j8AAAAAYPX9P3wL/T8AAAAA
    AAAAAO4FAAD+AAAAIAwGAP////9g9f0/fAv9PwAAAAAQ5P0/AAAAABjk/T8BAAAA
    AAAAALD1/T8AAAAAAAAAAAMAAAAQp/4/hJP+P4Cn/j8W4RKAIKf+PwAAAAAMYv0/
    XJoIgFCn/j+Ek/4/gKf+PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAC89f0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAA=
    OJr9P7CY/T8wmv0/
    sJj9P9CZ/T+8bvPflJT9P+TG/T84mv0/aFb8PwEAAADszP0/7Mz9Pzia/T/kzP0/
    GAAAADSW/T9pcGMwAKLwcCIcvrPynzMAAAAAADCa/T8AAAAAIQAGABgAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6hOA==
    0DYIQCxICUAwCgYA5B8IgHCZ/T/AzP0/AAAAAAzN/T8AAAAAwMz9PwAAAAAsSAmA
    UJn9PwAAAAD/////4Fj8PwAAAAAMGfw/bMX9PwAAAADMS/k/AAAAAAAAAAAAAAAA
    AAAAAMk4CEAAAAAATGYJQMxL+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAOBY/D8AAAAADBn8P2zF/T8AAAAAsJn9P7hV/D8AAAAA
    AAAAAAUGAAAAAAAAAAAAAP////8AAAAAuFX8P6hV/D8Mzf0/AAAAAMDM/T8AAAAA
    AAAAANCZ/T8AAAAAAAAAAHyxCEAAAAAAAAAAAAAAAAAdFAiAYDz+P1BW/D9YVvw/
    AAAAAAAAAADcmf0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    jJT9PwCT/T+ElP0/
    AJP9PyCU/T+6qkupQDv+P0Ca/T+MlP0/aFb8PwMAAABAVfw/QFX8P4yU/T84Vfw/
    FgAAAIiI/T9lc3BfdGltZXIAp5woY/8AAAAAAISU/T8AAAAAIQAGABYAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO6WSQ==
    0DYIQCxICUAwAgYAkSgNgMCT/T8UVfw/AAAAAGBV/D8AAAAAFFX8PwAAAAAsSAmA
    oJP9PwAAAAD/////4Fj8PwAAAAAMGfw/IAAGAAAAAACAk/0/YJP9P6jJCUDWyQlA
    /////8k4CEAAAAAATGYJQBxG+T8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAACgDAAJQ/AAAAAAAAAAAAAAAAAJT9P2hV/D9wVfw/
    AAAAABEIAABI/f0/cFX8P/////8kHrw/AAAKAAAAAAAAAAAAAAAAACRw9D8AAAAA
    AAAAACCU/T8AAAAAAAAAAAAAAAAAAAAAcFX8PwAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAslP0/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAA==
    ODv+P9Ch/j+Ao/4/
    0KH+PyCj/j/8////cFb8P5SU/T84O/4/aFb8PwIAAADwePs/8Hj7Pzg7/j/oePs/
    FwAAAIST/j9idENvbnRyb2xsZXIAAAAAAAAAAICj/j8AAAAAIQAGABcAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYSQA==
    0DYIQCxICUAwAAYAsdYIgJCi/j/EePs/8KL+PxB5+z8AAAAAHHn7PwAAAAAsSAmA
    cKL+PwAAAAD/////4Fj8PwAAAAAMGfw/AAAAABAAAABqAAAA////AE3KCUCByglA
    /////8k4CEAAAAAATGYJQBxV+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAGVNBYCwov4/AQAAAGj9+j9NhR+A0KL+P8R4+z/wov4/
    AAAAABUIAAABAAAAAAAAAP/////Qov4/bHj7PwAAAADeHQAASAkAAAQBAACcCfs/
    AAAAAPCi/j8QS/w/AQAAAP////8AAAAAFgAAAP///38AAAAAIKP+PwAAAAAAAAAA
    CAAAAAAAAAAAAAAAAAAAAKDWCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAso/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    kLD9P0Be/j9sX/4/
    QF7+PwBf/j+lpaWlvLb9P3BW/D+QsP0/aFb8PxQAAAClpaWlpaWlpZCw/T8AAAAA
    BQAAAHBT/j9Tb2NrZXQgT3BlcmF0aW8AAQAAAGxf/j8AAAAApaWlpQUAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAA4yf0/oMn9PwjK/T8AAAAAAAAAAAEAAAAAAAAA
    V2xAPwAAAAAg0glAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWlpQ==
    0DYIQLw6DkAwAAUAAAAAAABf/j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAPwQ+j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAMX/4/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAA
    ================= CORE DUMP END =================
    Rebooting...
    ets Jun  8 2016 00:22:57
    
    rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff8028,len:8
    load:0x3fff8030,len:1984
    load:0x4009fa00,len:0
    load:0x4009fa00,len:19088
    entry 0x400a05e4
    Initializing filesystem as FatFS!
    

    My Fipy is running 1.20.0.rc4

    Thanck you.

    Best regards,

    Malo



  • Hello @iwahdan,
    I put the LoRa Init after the LTE connection and it works now ! Thank you.
    Best Regards,
    Malo



  • Hello @Malo , the Issue is indeed in Firmware, this crash is reproducible only when LoRa/Sigfox is initialised before LTE as you have in your Code, I'll push a Fix to be included in next stable and Development release.
    For now you can fix this issue by removing LoRa init if you don't use it or do it after LTE connection.



  • @malo said in Fipy : Guru Meditation Error when I try to connect my socket:

    import socket
    import ssl
    import time
    import machine
    from network import LTE
    from mqtt import MQTTClient
    from network import WLAN

    class func:
    def sub_cb(self,topic, msg):
    print(msg)
    def lteFuncInit(self):
    self.lte = LTE() # instantiate the LTE object
    #self.lte.init()
    print(self.lte.imei())
    print(self.lte.iccid())
    #print(lte.send_at_cmd('AT!="showver"'))
    print(self.lte.send_at_cmd('AT+CGCONTRDP'))
    def lteFuncAttach(self, timeout):
    i=0
    self.lte.attach() # attach the cellular modem to a base station
    print ("LTE Attach :")
    while (not self.lte.isattached()) and (i <= timeout) :
    time.sleep(0.25)
    #print (".", end="")
    i+=1

        if(self.lte.isattached()):
            print("i attach : "+ str(i))
            print (" Attached OK")
            return 1
        else:
            print (" Attached NOK")
            return 0
    
    
    def lteFuncConnect(self, timeout):
        i=0
        self.lte.connect()       # start a data session and obtain an IP address
        print ("LTE connect :")
        while (not self.lte.isconnected()) and (i <= timeout):
            time.sleep(0.25)
            #print (".", end="")
            i+=1
    
        if self.lte.isconnected():
            print("i connect : "+ str(i))
            print (" Connect OK")
            return 1
        else:
            print (" Connect NOK")
            try:
                self.lte.dettach()
            except:
                print ("ERROR : LTE dettach problem")
            return 0
    
    def lteFuncSocket(self):
        print ("Creation Socket")
        s = socket.socket()
        print("AFTER CREATE SOCKET")
        s = ssl.wrap_socket(s)
        print("AFTER WRAP")
        s.connect(socket.getaddrinfo('8.8.8.8', 443)[0][-1])  # Error at this line
        print("Socket Connected")
        s.send(b"GET / HTTP/1.0\r\n\r\n")
        print(s.recv(4096))
        try:
            s.close()
            self.lte.disconnect()
            self.lte.dettach()
        except:
            print ("ERROR : Socket close, LTE deconnect and/or dettach problem")
        if s.recv(4096) != "":
            return 1
        else:
            return 0
    def lteFuncMQTT(self, msgFipy):
        client = MQTTClient("FiPy", "52.70.203.194",user="XXXX", password="XXXXXXXXXXXXXXXX", port=1883)
    
        client.set_callback(self.sub_cb)
        print("MQTT")
        client.connect()
        print("Connected")
        client.subscribe(topic="MaloM/feeds/FipyPos")
    
        print("Sending ...")
        client.publish(topic="MaloM/feeds/FipyPos", msg=msgFipy)
        print("End Send")
    
        try:
            self.lte.disconnect()
            self.lte.dettach()
        except:
            print ("ERROR : LTE deconnect and/or dettach problem")
        return 1
    def lteFuncDeInit(self):
         print('Switching off LTE')
         quit = False
         while quit == False:
             try:
                 self.lte.deinit()
             except OSError:
                 print('  Exception occured and retrying...')
                 #machine.reset()
             else:
                 quit = True
    

    Hello @Malo ,

    I could reproduce the crash using your code, I'll keep you updated with my analysis.

    Thanks for your help.


 

Pycom on Twitter