def lisp_ms_show_site_detail_command(eid_key, group_key): eid = lisp.lisp_address(lisp.LISP_AFI_NONE, "", 0, 0) if (eid_key): if (eid_key == "[0]/0"): eid.store_iid_range(0, 0) else: eid.store_prefix(eid_key) #endif #endif group = lisp.lisp_address(lisp.LISP_AFI_NONE, "", 0, 0) if (group_key): group.store_prefix(group_key) eid_str = lisp.lisp_print_eid_tuple(eid, group) eid_str = lisp.lisp_print_cour(eid_str) # # Do longest match lookup. We do this so prefix slashes are not in URLs. # site_eid = lisp.lisp_site_eid_lookup(eid, group, True) if (site_eid == None): output = "Could not find EID {} in site cache".format(eid_str) return (output) #endif indent4 = lisp.space(4) indent8 = lisp.space(8) indent12 = lisp.space(12) yesno = lisp.green("yes", True) if site_eid.registered else \ lisp.red("no", True) output = '<font face="Sans-Serif">' sn = lisp.lisp_print_cour(site_eid.site.site_name) si = lisp.lisp_print_cour(str(site_eid.site_id)) xi = "0" if site_eid.xtr_id == 0 else lisp.lisp_hex_string(site_eid.xtr_id) xi = lisp.lisp_print_cour("0x" + xi) fr = lisp.lisp_print_elapsed(site_eid.first_registered) lr = lisp.lisp_print_elapsed(site_eid.last_registered) if (time.time() - site_eid.last_registered >= (site_eid.register_ttl / 2) and lr != "never"): lr = lisp.red(lr, True) #endif if (site_eid.last_registerer.afi == lisp.LISP_AFI_NONE): reger = "none" else: reger = site_eid.last_registerer.print_address() #endif reger = lisp.lisp_print_cour(reger) shutdown = ", " + lisp.lisp_print_cour("site is in admin-shutdown") if \ site_eid.site.shutdown else "" ams = ", accepting more specifics" if site_eid.accept_more_specifics \ else "" if (ams == "" and site_eid.dynamic): ams = ", dynamic" output += '''Site name: {}, EID-prefix: {}, registered: {}{}{} <br>'''.format(sn, eid_str, yesno, ams, shutdown) output += "{}Description: {}<br>".format( indent4, lisp.lisp_print_cour(site_eid.site.description)) output += "{}Last registerer: {}, xTR-ID: {}, site-ID: {}<br>".format( \ indent4, reger, xi, si) flags = site_eid.print_flags(False) flags = lisp.lisp_print_cour(flags) auth_type = "none" if (site_eid.registered): auth_type = "sha1" if (site_eid.auth_sha1_or_sha2) else "sha2" #endif output += ("{}First registered: {}, last registered: {}, auth-type: " + \ "{}, registration flags: {}<br>").format(indent4, lisp.lisp_print_cour(fr), lisp.lisp_print_cour(lr), lisp.lisp_print_cour(auth_type), flags) ttl = lisp.lisp_print_cour(str(site_eid.register_ttl) + " seconds") output += "{}{} registration timeout TTL: {}<br>".format( \ indent4, "Registered" if site_eid.use_register_ttl_requested else \ "Default", ttl) # # First print a policy line, if one is configured for this site-eid. # if (site_eid.policy): p = lisp.lisp_print_cour(site_eid.policy) output += "{}Apply policy: '{}'<br>".format(indent4, p) #endif # # Show proxy-reply settings. # yesno = "yes" if site_eid.force_proxy_reply else "no" yesno = lisp.lisp_print_cour(yesno) output += "{}Forcing proxy Map-Reply: {}<br>".format(indent4, yesno) if (site_eid.force_ttl != None): ttl = lisp.lisp_print_cour(str(site_eid.force_ttl) + " seconds") output += "{}Forced proxy Map-Reply TTL: {}<br>".format( \ indent4, ttl) #endif yesno = "yes" if site_eid.force_nat_proxy_reply else "no" yesno = lisp.lisp_print_cour(yesno) output += "{}Forcing proxy Map-Reply for xTRs behind NATs: {}<br>". \ format(indent4, yesno) yesno = "yes" if site_eid.pitr_proxy_reply_drop else "no" yesno = lisp.lisp_print_cour(yesno) output += "{}Send drop-action proxy Map-Reply to PITR: {}<br>".format( \ indent4, yesno) action = "not configured" if site_eid.proxy_reply_action == "" else \ site_eid.proxy_reply_action action = lisp.lisp_print_cour(action) output += "{}Proxy Map-Reply action: {}<br>".format(indent4, action) if (site_eid.force_proxy_reply and site_eid.echo_nonce_capable): yes = lisp.lisp_print_cour("yes") output += "{}RLOCs are echo-nonce capable: {}<br>".format(indent4, yes) #endif yesno = "yes" if site_eid.require_signature else "no" yesno = lisp.lisp_print_cour(yesno) output += "{}Require signatures: {}<br>".format(indent4, yesno) # # Print configured allowed RLOC-sets, if any. # any_rloc = "any" if len(site_eid.site.allowed_rlocs) == 0 else "" if (any_rloc != ""): any_rloc = lisp.lisp_print_cour(any_rloc) output += "{}Allowed RLOC-set: {}<br>".format(indent4, any_rloc) if (any_rloc == ""): for rloc in site_eid.site.allowed_rlocs.values(): a = lisp.lisp_print_cour(rloc.rloc.print_address()) s = lisp.lisp_print_cour(rloc.print_state()) up = lisp.lisp_print_cour(str(rloc.priority)) uw = lisp.lisp_print_cour(str(rloc.weight)) mp = lisp.lisp_print_cour(str(rloc.mpriority)) mw = lisp.lisp_print_cour(str(rloc.mweight)) rn = rloc.print_rloc_name(True) if (rn != ""): rn = ", " + rn output += '''{}{}, state: {}, up/uw/mp/mw: {}/{}/{}/{}{}<br>'''. \ format(indent8, a, s, up, uw, mp, mw, rn) #endfor #endif none = "none" if len(site_eid.registered_rlocs) == 0 else "" if (none != ""): none = lisp.lisp_print_cour(none) output += "<br>Registered RLOC-set ({}): {}<br>".format("merge-semantics" \ if (site_eid.merge_register_requested) else "replacement-semantics", none) if (none == ""): for rloc in site_eid.registered_rlocs: a = lisp.lisp_print_cour(rloc.rloc.print_address()) s = lisp.lisp_print_cour(rloc.print_state()) up = lisp.lisp_print_cour(str(rloc.priority)) uw = lisp.lisp_print_cour(str(rloc.weight)) mp = lisp.lisp_print_cour(str(rloc.mpriority)) mw = lisp.lisp_print_cour(str(rloc.mweight)) rn = rloc.print_rloc_name(True) if (rn != ""): rn = ", " + rn output += '''{}{}, state: {}, up/uw/mp/mw: {}/{}/{}/{}{}<br>'''.\ format(indent4, a, s, up, uw, mp, mw, rn) if (rloc.geo): geo = lisp.lisp_print_cour(rloc.geo.print_geo_url()) output += "{}geo: {}<br>".format(indent12, geo) #endif if (rloc.elp): elp = lisp.lisp_print_cour(rloc.elp.print_elp(False)) output += "{}elp: {}<br>".format(indent12, elp) #endif if (rloc.rle): rle = lisp.lisp_print_cour(rloc.rle.print_rle(True)) output += "{}rle: {}<br>".format(indent12, rle) #endif if (rloc.json): json = lisp.lisp_print_cour(rloc.json.print_json(True)) output += "{}json: {}<br>".format(indent12, json) #endif #endfor #endif none = "none" if len(site_eid.individual_registrations) == 0 else "" if (none == "none"): none = lisp.lisp_print_cour(none) elif (site_eid.inconsistent_registration): none = lisp.red("inconsistent registrations", True) none = lisp.lisp_print_cour(none) #endif output += "<br>Individual registrations: {}<br>".format(none) for site_eid in site_eid.individual_registrations.values(): yesno = lisp.green("yes", True) if site_eid.registered else \ lisp.red("no", True) auth_type = "sha1" if (site_eid.auth_sha1_or_sha2) else "sha2" auth_type = lisp.lisp_print_cour(auth_type) flags = site_eid.print_flags(False) flags = lisp.lisp_print_cour(flags) a = lisp.lisp_print_cour(site_eid.last_registerer.print_address()) fr = lisp.lisp_print_elapsed(site_eid.first_registered) fr = lisp.lisp_print_cour(fr) lr = lisp.lisp_print_elapsed(site_eid.last_registered) if (time.time() - site_eid.last_registered >= (site_eid.register_ttl / 2) and lr != "never"): lr = lisp.red(lr, True) #endif lr = lisp.lisp_print_cour(lr) si = lisp.lisp_print_cour(str(site_eid.site_id)) xi = lisp.lisp_print_cour(lisp.lisp_hex_string(site_eid.xtr_id)) output += ''' {}Registerer: {}, xTR-ID: 0x{}, site-id: {}, registered: {}<br> {}First registered: {}, last registered: {}, auth-type: {}, registration flags: {}<br> '''.format(indent4, a, xi, si, yesno, indent4, fr, lr, auth_type, flags) none = "none" if len(site_eid.registered_rlocs) == 0 else "" none = lisp.lisp_print_cour(none) output += "{}Registered RLOC-set: {}<br>".format(indent4, none) for rloc in site_eid.registered_rlocs: a = lisp.lisp_print_cour(rloc.rloc.print_address()) s = lisp.lisp_print_cour(rloc.print_state()) up = lisp.lisp_print_cour(str(rloc.priority)) uw = lisp.lisp_print_cour(str(rloc.weight)) mp = lisp.lisp_print_cour(str(rloc.mpriority)) mw = lisp.lisp_print_cour(str(rloc.mweight)) rn = rloc.print_rloc_name(True) if (rn != ""): rn = ", " + rn output += '''{}{}, state: {}, up/uw/mp/mw: {}/{}/{}/{}{}<br>'''.\ format(indent8, a, s, up, uw, mp, mw, rn) if (rloc.geo): geo = lisp.lisp_print_cour(rloc.geo.print_geo_url()) output += "{}geo: {}<br>".format(indent12, geo) #endif if (rloc.elp): elp = lisp.lisp_print_cour(rloc.elp.print_elp(False)) output += "{}elp: {}<br>".format(indent12, elp) #endif if (rloc.rle): rle = lisp.lisp_print_cour(rloc.rle.print_rle(True)) output += "{}rle: {}<br>".format(indent12, rle) #endif if (rloc.json): json = lisp.lisp_print_cour(rloc.json.print_json(True)) output += "{}json: {}<br>".format(indent12, json) #endif #endfor output += "<br>" #endif output += "</font>" return (output)
def lisp_mr_show_referral_cache_command(parameter): # # Do lookup if there is a parameter supplied. # if (parameter != ""): return (lisp_mr_show_referral_cache_lookup(parameter)) #endif # # Top part of display has the form for doing a specific lookup. # banner = "Enter EID for Referral-Cache lookup:" input_rectangle = \ lisp.lisp_eid_help_hover('<input type="text" name="eid" />') output = ''' <form action="/lisp/show/referral/lookup" method="post"> <i><font face="Courier New" size="3"> {} {} <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" /> </font></i></form> '''.format(lisp.lisp_print_sans(banner), input_rectangle) # # Display the DDT Map-Request queue contents if anything is in it. # queue_size = len(lisp.lisp_ddt_map_requestQ) if (queue_size != 0): hover = "{} entries in map-request queue".format(queue_size) title = lisp.lisp_span("LISP-MR Map-Request Queue:", hover) output += lispconfig.lisp_table_header(title, "EID-Prefix or (S,G)", "Nonce", "Uptime", "Map-Request Source", "Retry Count", "Tried DDT-Root", "Last Request Sent To", "Last Map-Referral EID-Prefix") for key in lisp.lisp_ddt_map_requestQ: mr = lisp.lisp_ddt_map_requestQ[key] ut = lisp.lisp_print_elapsed(mr.uptime) last_sent = mr.last_request_sent_to last_sent = "--" if (last_sent == None) else \ last_sent.print_address_no_iid() itr = mr.itr itr = "--" if (itr == None) else (itr.print_address_no_iid() + \ "<br>({}ITR)".format("P" if mr.from_pitr else "")) last_eid = mr.last_cached_prefix[0] last_group = mr.last_cached_prefix[1] last_prefix = "--" if (last_eid == None) else \ lisp.lisp_print_eid_tuple(last_eid, last_group) output += lispconfig.lisp_table_row( mr.print_eid_tuple(), "0x" + lisp.lisp_hex_string(mr.nonce), ut, itr, mr.retry_count, "yes" if mr.tried_root else "no", last_sent, last_prefix) #endfor output += lispconfig.lisp_table_footer() #endif hover = "{} entries in referral-cache".format( \ lisp.lisp_referral_cache.cache_size()) title = lisp.lisp_span("LISP-MR Referral-Cache:", hover) output += lispconfig.lisp_table_header( title, "EID-Prefix or (S,G)", "Uptime", "Expires<br>TTL", "Referral Type", "Map-Referral Source", "Referral Address<br>Node Status", "Priority<br>Weight", "Map-Requests Sent<br>No Responses") output = lisp.lisp_referral_cache.walk_cache(lisp_walk_referral_cache, output) output += lispconfig.lisp_table_footer() return (output)
def oO0o0o0oo(parameter): if 32 - 32: OOooOOo if 42 - 42: IiII * O0 % i1IIi.OOooOOo / o0oOOo0O0Ooo if 32 - 32: I1IiiI * Oo0Ooo if 78 - 78: OOooOOo - OoooooooOO - I1ii11iIi11i / ooOoO0o / II111iiii if (parameter != ""): return (oOO00O(parameter)) if 29 - 29: I1IiiI % I1IiiI if 94 - 94: iIii1I11I1II1 / Oo0Ooo % iII111i * iII111i * II111iiii if 29 - 29: OoO0O00 + OoOoOO00 / o0oOOo0O0Ooo / OOooOOo * iIii1I11I1II1 if 62 - 62: OOooOOo / oO0o - OoO0O00.I11i if 11 - 11: I1ii11iIi11i.OoO0O00 * IiII * OoooooooOO + ooOoO0o IiII111i1i11 = "Enter EID for Referral-Cache lookup:" i111iIi1i1II1 = lisp.lisp_eid_help_hover( '<input type="text" name="eid" />') if 86 - 86: iIii1I11I1II1 / OoOoOO00.II111iiii Oo0O0oooo = ''' <form action="/lisp/show/referral/lookup" method="post"> <i><font face="Courier New" size="3"> {} {} <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" /> </font></i></form> '''.format(lisp.lisp_print_sans(IiII111i1i11), i111iIi1i1II1) if 19 - 19: I1ii11iIi11i % OoooooooOO % IiII * o0oOOo0O0Ooo % O0 if 67 - 67: I1IiiI.i1IIi if 27 - 27: ooOoO0o % I1IiiI if 73 - 73: OOooOOo ooO = len(lisp.lisp_ddt_map_requestQ) if (ooO != 0): Ooo0oOooo0 = "{} entries in map-request queue".format(ooO) oOOOoo00 = lisp.lisp_span("LISP-MR Map-Request Queue:", Ooo0oOooo0) if 9 - 9: O0 % O0 - o0oOOo0O0Ooo Oo0O0oooo += lispconfig.lisp_table_header( oOOOoo00, "EID-Prefix or (S,G)", "Nonce", "Uptime", "Map-Request Source", "Retry Count", "Tried DDT-Root", "Last Request Sent To", "Last Map-Referral EID-Prefix") if 51 - 51: I1IiiI.iIii1I11I1II1 - I1ii11iIi11i / O0 for OOOoO00 in lisp.lisp_ddt_map_requestQ: IIiIi11i1i = lisp.lisp_ddt_map_requestQ[OOOoO00] I1II1I11I1I = lisp.lisp_print_elapsed(IIiIi11i1i.uptime) OoOO0o = IIiIi11i1i.last_request_sent_to OoOO0o = "--" if (OoOO0o == None) else OoOO0o.print_address_no_iid() if 1 - 1: II111iiii O0oOo00o = IIiIi11i1i.itr O0oOo00o = "--" if (O0oOo00o == None) else ( O0oOo00o.print_address_no_iid() + "<br>({}ITR)".format("P" if IIiIi11i1i.from_pitr else "")) if 81 - 81: IiII % i1IIi.iIii1I11I1II1 if 4 - 4: i11iIiiIii % OoO0O00 % i1IIi / IiII I11iI = IIiIi11i1i.last_cached_prefix[0] ooOoo = IIiIi11i1i.last_cached_prefix[1] I1III1111iIi = "--" if ( I11iI == None) else lisp.lisp_print_eid_tuple(I11iI, ooOoo) if 38 - 38: iII111i + I11i / I1Ii111 % ooOoO0o - I1ii11iIi11i if 14 - 14: oO0o / I1Ii111 Oo0O0oooo += lispconfig.lisp_table_row( IIiIi11i1i.print_eid_tuple(), "0x" + lisp.lisp_hex_string(IIiIi11i1i.nonce), I1II1I11I1I, O0oOo00o, IIiIi11i1i.retry_count, "yes" if IIiIi11i1i.tried_root else "no", OoOO0o, I1III1111iIi) if 85 - 85: I11i if 20 - 20: oO0o % IiII Oo0O0oooo += lispconfig.lisp_table_footer() if 19 - 19: I1ii11iIi11i % IiII + ooOoO0o / I1Ii111.ooOoO0o if 12 - 12: i1IIi + i1IIi - I1ii11iIi11i * Oo0Ooo % Oo0Ooo - II111iiii Ooo0oOooo0 = "{} entries in referral-cache".format( lisp.lisp_referral_cache.cache_size()) if 52 - 52: ooOoO0o.iII111i + I1Ii111 oOOOoo00 = lisp.lisp_span("LISP-MR Referral-Cache:", Ooo0oOooo0) if 38 - 38: i1IIi - II111iiii.I1Ii111 Oo0O0oooo += lispconfig.lisp_table_header( oOOOoo00, "EID-Prefix or (S,G)", "Uptime", "Expires<br>TTL", "Referral Type", "Map-Referral Source", "Referral Address<br>Node Status", "Priority<br>Weight", "Map-Requests Sent<br>No Responses") if 58 - 58: I1IiiI.iII111i + OoOoOO00 Oo0O0oooo = lisp.lisp_referral_cache.walk_cache(oooO0, Oo0O0oooo) if 66 - 66: iII111i / oO0o * OoooooooOO + OoooooooOO % I11i Oo0O0oooo += lispconfig.lisp_table_footer() return (Oo0O0oooo) if 49 - 49: oO0o - i11iIiiIii.I1Ii111 * Ii1I % iII111i + i1IIi if 71 - 71: o0oOOo0O0Ooo if 38 - 38: oO0o % OoOoOO00 + I1ii11iIi11i.i11iIiiIii if 53 - 53: i11iIiiIii * iII111i if 68 - 68: iIii1I11I1II1 * iIii1I11I1II1.o0oOOo0O0Ooo / II111iiii % Oo0Ooo if 38 - 38: ooOoO0o - OOooOOo / iII111i if 66 - 66: O0 % I1ii11iIi11i + i11iIiiIii.OoOoOO00 / Ii1I + I1ii11iIi11i
def oOOOoo0O0oO(parameter): if 6 - 6: OOooOOo * o0oOOo0O0Ooo + iII111i if 44 - 44: Ii1I % OoO0O00 + OoooooooOO - O0 - Ii1I - II111iiii if 99 - 99: ooOoO0o.Ii1I + I1Ii111 + OoooooooOO % o0oOOo0O0Ooo if 51 - 51: iIii1I11I1II1 if (parameter != ""): return (oOoooo0O0Oo(parameter)) if 34 - 34: oO0o + I1IiiI - oO0o if 17 - 17: II111iiii % iII111i + I11i - iII111i / OOooOOo + ooOoO0o if 59 - 59: OOooOOo % OoOoOO00.Ii1I * I1ii11iIi11i % I11i if 59 - 59: oO0o - iII111i if 15 - 15: I1Ii111.i11iIiiIii.OoooooooOO / OoO0O00 % Ii1I OooooOOoo0 = "Enter EID for Referral-Cache lookup:" i1I1IiiIi1i = lisp.lisp_eid_help_hover('<input type="text" name="eid" />') if 29 - 29: I1IiiI % I1IiiI ooo0OOOoo = ''' <form action="/lisp/show/referral/lookup" method="post"> <i><font face="Courier New" size="3"> {} {} <input style="background-color:transparent;border-radius:10px;" type="submit" value="Submit" /> </font></i></form> '''.format(lisp.lisp_print_sans(OooooOOoo0), i1I1IiiIi1i) if 94 - 94: iIii1I11I1II1 / Oo0Ooo % iII111i * iII111i * II111iiii if 29 - 29: OoO0O00 + OoOoOO00 / o0oOOo0O0Ooo / OOooOOo * iIii1I11I1II1 if 62 - 62: OOooOOo / oO0o - OoO0O00.I11i if 11 - 11: I1ii11iIi11i.OoO0O00 * IiII * OoooooooOO + ooOoO0o IiII111i1i11 = len(lisp.lisp_ddt_map_requestQ) if (IiII111i1i11 != 0): i111iIi1i1II1 = "{} entries in map-request queue".format(IiII111i1i11) oooO = lisp.lisp_span("LISP-MR Map-Request Queue:", i111iIi1i1II1) if 26 - 26: Ii1I % I1ii11iIi11i ooo0OOOoo += lispconfig.lisp_table_header( oooO, "EID-Prefix or (S,G)", "Nonce", "Uptime", "Map-Request Source", "Retry Count", "Tried DDT-Root", "Last Request Sent To", "Last Map-Referral EID-Prefix") if 76 - 76: IiII * iII111i for ooooooo00o in lisp.lisp_ddt_map_requestQ: o0oooOO00 = lisp.lisp_ddt_map_requestQ[ooooooo00o] iiIiii1IIIII = lisp.lisp_print_elapsed(o0oooOO00.uptime) o00o = o0oooOO00.last_request_sent_to o00o = "--" if (o00o == None) else o00o.print_address_no_iid() if 45 - 45: I1ii11iIi11i.o0oOOo0O0Ooo.I1ii11iIi11i - I1IiiI.o0oOOo0O0Ooo iiI1IIIi = o0oooOO00.itr iiI1IIIi = "--" if (iiI1IIIi == None) else ( iiI1IIIi.print_address_no_iid() + "<br>({}ITR)".format("P" if o0oooOO00.from_pitr else "")) if 47 - 47: Oo0Ooo % I11i % i11iIiiIii - O0 + ooOoO0o if 94 - 94: I1Ii111 i11II1I11I1 = o0oooOO00.last_cached_prefix[0] OOoOO0ooo = o0oooOO00.last_cached_prefix[1] II1iIi11 = "--" if (i11II1I11I1 == None) else lisp.lisp_print_eid_tuple( i11II1I11I1, OOoOO0ooo) if 12 - 12: Ii1I + i11iIiiIii * iIii1I11I1II1 / I1ii11iIi11i.I11i if 5 - 5: i1IIi + IiII / o0oOOo0O0Ooo.iII111i / I11i ooo0OOOoo += lispconfig.lisp_table_row( o0oooOO00.print_eid_tuple(), "0x" + lisp.lisp_hex_string(o0oooOO00.nonce), iiIiii1IIIII, iiI1IIIi, o0oooOO00.retry_count, "yes" if o0oooOO00.tried_root else "no", o00o, II1iIi11) if 32 - 32: I1IiiI % iIii1I11I1II1 / i1IIi - I1IiiI if 7 - 7: I1Ii111 * OoO0O00 - ooOoO0o + OOooOOo * I1IiiI % OoO0O00 ooo0OOOoo += lispconfig.lisp_table_footer() if 15 - 15: OoOoOO00 % I1IiiI * I11i if 81 - 81: ooOoO0o - iIii1I11I1II1 - i1IIi / I1Ii111 - O0 * I11i i111iIi1i1II1 = "{} entries in referral-cache".format( lisp.lisp_referral_cache.cache_size()) if 20 - 20: oO0o % IiII oooO = lisp.lisp_span("LISP-MR Referral-Cache:", i111iIi1i1II1) if 19 - 19: I1ii11iIi11i % IiII + ooOoO0o / I1Ii111.ooOoO0o ooo0OOOoo += lispconfig.lisp_table_header( oooO, "EID-Prefix or (S,G)", "Uptime", "Expires<br>TTL", "Referral Type", "Map-Referral Source", "Referral Address<br>Node Status", "Priority<br>Weight", "Map-Requests Sent<br>No Responses") if 12 - 12: i1IIi + i1IIi - I1ii11iIi11i * Oo0Ooo % Oo0Ooo - II111iiii ooo0OOOoo = lisp.lisp_referral_cache.walk_cache(o00oO0oOo00, ooo0OOOoo) if 52 - 52: ooOoO0o.iII111i + I1Ii111 ooo0OOOoo += lispconfig.lisp_table_footer() return (ooo0OOOoo) if 38 - 38: i1IIi - II111iiii.I1Ii111 if 58 - 58: I1IiiI.iII111i + OoOoOO00 if 66 - 66: iII111i / oO0o * OoooooooOO + OoooooooOO % I11i if 49 - 49: oO0o - i11iIiiIii.I1Ii111 * Ii1I % iII111i + i1IIi if 71 - 71: o0oOOo0O0Ooo if 38 - 38: oO0o % OoOoOO00 + I1ii11iIi11i.i11iIiiIii if 53 - 53: i11iIiiIii * iII111i