# Path: plugin.py
# class Plugin:
#     def __init__(self):
#         self.documents = Documents(self)
#         try: self.name
#         except: self.name = self.__class__.__name__.lower()
#         try: self.description
#         except: self.description = 'This plugin has no description.'
#         if self.__class__ is Plugin:
#             raise NotImplementedError
# 
#     @property
#     def user(self):
#         return app.current_user
# 
#     def process(self, request):
#         pass
# 
#     def unload(self):
#         pass


from queue import PriorityQueue, Queue
from datetime import *
from plugin import Plugin
import json
def MakeArray(n):
    return [0 for i in range(n + 1)]


# class state is aimed at A*-state
class state:
    def __init__(self, f, g, now, pre):
        self.f = f
        self.g = g
        self.now = now
        self.pre = pre

    def __lt__(self, x):
        if (x.f == self.f):
            return x.g > self.g
        return x.f > self.f


q = Queue()
pq = PriorityQueue()
inf = 100000000

edge = []
edge2 = []
next = []
next2 = []

ww = []
point = []
point2 = []

# Path: plugin.py
# class Plugin:
#     def __init__(self):
#         self.documents = Documents(self)
#         try: self.name
#         except: self.name = self.__class__.__name__.lower()
#         try: self.description
#         except: self.description = 'This plugin has no description.'
#         if self.__class__ is Plugin:
#             raise NotImplementedError
# 
#     @property
#     def user(self):
#         return app.current_user
# 
#     def process(self, request):
#         pass
# 
#     def unload(self):
#         pass


# Path: plugins/path_finder_new.py
from queue import PriorityQueue, Queue
from datetime import *
from plugin import Plugin
import json

def MakeArray(n):
    return [0 for i in range(n + 1)]


# class state is aimed at A*-state
class state:
    def __init__(self, f, g, now, pre):
        self.f = f
        self.g = g
        self.now = now
        self.pre = pre

    def __lt__(self, x):
        if (x.f == self.f):
            return x.g > self.g
        return x.f > self.f


q = Queue()
pq = PriorityQueue()
inf = 100000000

edge = []
edge2 = []
next = []
next2 = []

ww = []
point = []
point2 = []

pre = []