Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

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

    Scheduled Pinned Locked Moved FiPy
    fipyguru errorsocket connectcat-m
    4 Posts 2 Posters 685 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M Offline
      Malo
      last edited by

      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

      1 Reply Last reply Reply Quote 0
      • I Offline
        iwahdan
        last edited by

        @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.

        Wahdan

        1 Reply Last reply Reply Quote 0
        • I Offline
          iwahdan
          last edited by

          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.

          Wahdan

          1 Reply Last reply Reply Quote 0
          • M Offline
            Malo
            last edited by

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

            1 Reply Last reply Reply Quote 1

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better đź’—

            Register Login
            • 1 / 1
            • First post
              Last post

            Pycom on Twitter

            Pycom