from enum import Enum from proto9x.util import unhex from proto9x.sensor import * import proto9x.timeslot as prg from collections import namedtuple from data import bulk_xfers import sys # TODO: properly extract all these bits from the DLL hardcoded=unhex(''' 23000000200008000020008000000100320074000000008020200400242000005020773628200100302001003c208000082138000c210000482107004c210000582000005c20000060200000682005006c20014970200141742001887820018084202000942001809c200902a0200b19b4200300b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a1013200440000000080dc20e803e0206401e420d002e8200001f0200500f8200500fc200000b8203a00000804001408000008080000080800001408300008080000140831001c081a0032000c0000000080501101004c111e00340078010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010221710221710221610221610221601065010250101000007c8078c06ff0000000000004f80006d0300280307030990098db00b90880991858e08c1810b9190910ac1b8928a0993878a890b9388898908c88191890ac8889289099a818a890b9a88898908d08191890ad08892890802818a095a810a0288890b5a8808d98189890ad9908989095e8289890b5e88898908e18189890ae190898909648289890b648889096e8108e981890b6e880ae99091b9096f828a8f0b6f88918908f0818a890af090898909768289910b76b8918a08f88792910af8888a92097c81898a0b7c09018089890b01888991097f8189920b7f09088089920b088889920c07030307200402000000002f0004007000000029000400700000003500040080000000' ''') # Sensor types description table from the DLL. 27 entries, 0xa8 bytes each. sensor_type_info_blob=unhex(''' db000000000098009001460046004d014d0190000100fa006001c40141000000010000000100000003000000000000000000900000000000e0461180010000000100000000000000000000000000000000000000000000000048118001000000000000000000000000000000000000009848118001000000d84611800100000000000000000000000100010000000000000000000000000000000000000000000000000000000000e4000000000078009001460046004d014d016400020090014a00ae00bd000000010000000100000003000000000000000000700000000000d051118001000000010000000000000000000000000000000000000000000000b052118001000000000000000000000000000000000000003053118001000000785011800100000000000000000000000a00180000000000188f1a800100000001000000000000000000000000000000ed000000000078009001460046004d014d017000020090010a006e00b5000000010000000100000003000000000000000000700000000000e04b118001000000010000000000000000000000000000000000000000000000c04c118001000000000000000000000000000000000000000000000000000000d84b11800100000000000000000000000a000f0000000000b88e1a80010000000100000000000000000000000000000099010000000078009001460046004d014d017000020090018700eb00b5000000010000000100000003000000000000000000700000000000804d118001000000010000000000000000000000000000000000000000000000604e118001000000000000000000000000000000000000000000000000000000604d11800100000000000000000000000a00220000000000d08e1a800100000001000000000000000000000000000000b5000000000078009001460046004d014d017000020090014a00ae00bd000000010000000100000003000000000000000000700000000000704a118001000000010000000000000000000000000000000000000000000000504b11800100000000000000000000000000000000000000c04b118001000000504a11800100000000000000000000000a00160000000000a08e1a80010000000100000020000000010000000000000085080000000078009001460046004d014d0170000200900100016401bd000000010000000100000003000000000000000000700000000000704a118001000000010000000000000000000000000000000000000000000000504b11800100000000000000000000000000000000000000c04b118001000000484a11800100000000000000000000000100020000000000a08e1a80010000000100000000000000000000000000000055100000000078009001460046004d014d0170000200900100016401bd000000010000000100000003000000000000000000700000000000704a118001000000010000000000000000000000000000000000000000000000504b11800100000000000000000000000000000000000000c04b118001000000484a11800100000000000000000000000100020000000000a08e1a80010000000100000000000000000000000000000025180000000078009001460046004d014d017000020090014a00ae00b5000000010000000100000003000000000000000000700000000000f04e118001000000010000000000000000000000000000000000000000000000d04f118001000000000000000000000000000000000000000000000000000000e84e11800100000000000000000000000a001b0000000000e88e1a800100000001000000000000000000000000000000f51f0000000078009001460046004d014d017000020090015000b400b500000001000000010000000300000000000000000070000000000080501180010000000100000000000000000000000000000000000000000000006051118001000000000000000000000000000000000000000000000000000000705011800100000000000000000000000a00150000000000008f1a800100000001000000000000000000000000000000b3000000000060009001460046004d014d015400020078006c00d000bd00000001000000010000000300000000000000000055000000000050551180010000000100000000000000000000000000000000000000000000000056118001000000000000000000000000000000000000003855118001000000705411800100000000000000000000000a00150000000000488f1a8001000000010001002000000000000000000000003b14000000005c009001460046004d014d01540002003c006c00d000bd00000001000000010000000300000000000000000054000000000090541180010000000100000000000000000000000000000000000000000000000056118001000000000000000000000000000000000000003855118001000000705411800100000000000000000000000a001b0000000000488f1a800100000001000100200000000100000000000000b1080000000058009001460046004d014d014e000200900100016401bd0000000100000001000000030000000000000000004e00000000005053118001000000010000000000000000000000000000000000000000000000f053118001000000000000000000000000000000000000005854118001000000485311800100000000000000000000000a00200000000000308f1a800100000001000000000000000000000000000000e1000000000058009001460046004d014d014e000200900100016401bd0000000100000001000000030000000000000000004e00000000005053118001000000010000000000000000000000000000000000000000000000f053118001000000000000000000000000000000000000005854118001000000485311800100000000000000000000000a00140000000000308f1a800100000001000000000000000000000000000000ea00000000005c009001460046004d014d015400010090016c00d000bd00000001000000010000000300000000000000000054000000000060561180010000000100000000000000000000000000000000000000000000002057118001000000000000000000000000000000000000007857118001000000545611800100000000000000000000000a00180000000000608f1a8001000000010000000000000000000000000000009401000000007c009001460046004d014d015400030010006001c40100000000010000000100000003000000000000000000720000000000403c118001000000010000000000000000000000000000000000000000000000403d11800100000000000000000000000000000000000000283d118001000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000260100000000a0009001460046004d014d013800020090011001740189000000010000000100000003000000000000000000900000000000d03d118001000000010000000000000000000000000000000000000000000000983d11800100000000000000000000000000000000000000f03e118001000000000000000000000000000000000000000a00080000000000108e1a800100000000000000000000000000000000000000170100000000a0009001460046004d014d013800040090011001740181000000010000000100000003000000000000000000900000000000403f118001000000010000000000000000000000000000000000000000000000083f118001000000000000000000000000000000000000006840118001000000000000000000000000000000000000000a00080000000000288e1a800100000000000000000000000000000000000000f30800000000a0009001460046004d014d013800010058022e019201810000000100000001000000030000000000000000009000000000008040118001000000010000000000000000000000000000000000000000000000a04111800100000000000000000000000000000000000000d841118001000000f04111800100000008421180010000000a00030000000000408e1a800100000000000000000000000000000000000000f60800000000a0009001460046004d014d013800010058022e019201890000000100000001000000030000000000000000009000000000008040118001000000010000000000000000000000000000000000000000000000a04111800100000000000000000000000000000000000000d841118001000000f04111800100000008421180010000000a00040000000000408e1a800100000000000000000000000000000000000000210100000000a0009001460046004d014d013800020096001001740189000000010000000100000003000000000000000000900000000000604211800100000001000000000000000000000000000000000000000000000028421180010000000000000000000000000000000000000080431180010000009843118001000000b0431180010000000a00040000000000588e1a8001000000000000000000000000000000000000004b0b00000000a0009001460046004d014d013800020096001001740189000000010000000100000003000000000000000000900000000000604211800100000001000000000000000000000000000000000000000000000028421180010000000000000000000000000000000000000080431180010000009843118001000000b0431180010000000a00040000000000588e1a8001000000000000000000000000000000000000004d0b00000000a0009001460046004d014d013800020096001001740189000000010000000100000003000000000000000000900000000000604211800100000001000000000000000000000000000000000000000000000028421180010000000000000000000000000000000000000080431180010000009843118001000000b0431180010000000a00080000000000588e1a800100000000000000000000000000000000000000300100000000a0009001460046004d014d012800020090011001740189000000010000000100000003000000000000000000900000000000d043118001000000010000000000000000000000000000000000000000000000f044118001000000000000000000000000000000000000001845118001000000304511800100000000000000000000000a00080000000000708e1a800100000000000000000000000000000000000000e20b00000000a0009001460046004d014d012800020090011001740189000000010000000100000003000000000000000000900000000000b048118001000000010000000000000000000000000000000000000000000000d04911800100000000000000000000000000000000000000f849118001000000104a11800100000000000000000000000a00080000000000888e1a800100000000000000000000000000000000000000e10b00000000a0009001460046004d014d012800020090011001740189000000010000000100000003000000000000000000900000000000b048118001000000010000000000000000000000000000000000000000000000d04911800100000000000000000000000000000000000000f849118001000000104a11800100000000000000000000000a00080000000000888e1a800100000000000000000000000000000000000000180500000000a0009001460046004d014d012800020090011001740189000000010000000100000003000000000000000000900000000000b048118001000000010000000000000000000000000000000000000000000000d04911800100000000000000000000000000000000000000f849118001000000104a11800100000000000000000000000a00080000000000888e1a80010000000000000000000000000000000000000079010000000098009001460046004d014d013800030010006001c40100000000010000000100000003000000000000000000900000000000a045118001000000010000000000000000000000000000000000000000000000684511800100000000000000000000000000000000000000c046118001000000000000000000000000000000000000000100010000000000000000000000000000000000000000000000000000000000 ''') # Referenced from the sensor_type_info table above for the sensor type 0x199 hardcoded_init=unhex(''' 9b9a999796959392918f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d6b6a696766656362615f5e5d5b5a595756555251504e4d4c4a49484645444241403e3d3c3a39383635343231302e2d2c2a29282625242221201e1d1c1a19181615141211100e0d0c0a090806 ''') # Example 6f 000e 00000000 response from the 009a logs: rsp=unhex(''' 0000a80200000c0000000800000074000e0003000080070000007e7e7c767d7a737a807c7c7975847f85858184888786888a8a8a8c8d8b85878c8689878689898484837d8b8b8289898d8f8c90908f86858c8b8d90908b848f8694928a8e908d8e8d898d8d8c8e8f8d8c878986808a8a818686848187888c8e7e7e85888989857f8077777b7872767c7e8400000074000e0003000080070000007e7e7c767d7a737a807c7c7975847f85858184888786888a8a8a8c8d8b85878c8689878689898484837d8b8b8289898d8f8c90908f86858c8b8d90908b848f8694928a8e908d8e8d898d8d8c8e8f8d8c878986808a8a818686848187888c8e7e7e85888989857f8077777b7872767c7e0001000034020e000c00008007000000010205060504040708060403050709080705040401fffdfbfdfdfcfaf8f7f7f7f7f5f5f5f5f4f6f6f5f4f6fbff00fffcfaf9f7f7f5f6f6f9fcfdfefefefdfcfdfdfdfd000202020303020103050609090c0e100f0a0909080501ffff00020303020201ff0000fffefcfcfbfbfdff0000f0f4f5f5f7f9fbfaf5f3f3f6f5f6f7f7f6f6f7f8f9f9fbfafbfdfe00000101020306080a0a09080706040303030403050204050704fcf7f6f9fbfdff000306090a0909090b0d0e0e0e0d0c0d0e0c07070a0c090603020100fefbfafafcfcfdfcfcfbfaf9fafbff000201ff0003060403f1f3f2f3f4f3f0eff0f1f2f2f2f0f0f1f1eff0f2f6f8fcff04090c0d0c0f1013141617191c1d1e1c1a1b1c1e1c1c19141210100b07090f141614110f0f0d090401fffffdfefaf7f2f0edececebebeceff1f1efeef0f4f6f5f2eff1f4f5f6f6f5f5f5f5f5f4f5f7f6f4f2f4f4f7f9f9f9ebfafbfaf7f8f6f5f4f1f0f0f2f2f4f3f1eff0f4f7fbfd00030407070a0c1115151515171b1e1d1d1c1d2022201e1d1e20212324231e1a1c1d1b1b1a17120f0e0a080500fdfbfbf9f5f2f1f0f0f0f0efedeef0f1eeebeaeaeceff0efedebe9e9e9e9eae9e8ebeef1f2f4f3f3f2f3f7f9eff2f3f4f9fafcfbfbfaf7f6f6f8f9f8f7f7f9f9f8f7f6f5f6f6f9fafcfbfbfafafaf7f7f7f8f8fafafbfbff0000fdfbfafcfdfffefe0003050503010001050a101313110f0d09070400fefcfe000101fcf9f8f7f6f4f5f4f8fcff01020100fdf8f7f9fc000102fdfbfbfdff000407083c03000034020e000c00008007000000010205060504040708060403050709080705040401fffdfbfdfdfcfaf8f7f7f7f7f5f5f5f5f4f6f6f5f4f6fbff00fffcfaf9f7f7f5f6f6f9fcfdfefefefdfcfdfdfdfd000202020303020103050609090c0e100f0a0909080501ffff00020303020201ff0000fffefcfcfbfbfdff0000f0f4f5f5f7f9fbfaf5f3f3f6f5f6f7f7f6f6f7f8f9f9fbfafbfdfe00000101020306080a0a09080706040303030403050204050704fcf7f6f9fbfdff000306090a0909090b0d0e0e0e0d0c0d0e0c07070a0c090603020100fefbfafafcfcfdfcfcfbfaf9fafbff000201ff0003060403f1f3f2f3f4f3f0eff0f1f2f2f2f0f0f1f1eff0f2f6f8fcff04090c0d0c0f1013141617191c1d1e1c1a1b1c1e1c1c19141210100b07090f141614110f0f0d090401fffffdfefaf7f2f0edececebebeceff1f1efeef0f4f6f5f2eff1f4f5f6f6f5f5f5f5f5f4f5f7f6f4f2f4f4f7f9f9f9ebfafbfaf7f8f6f5f4f1f0f0f2f2f4f3f1eff0f4f7fbfd00030407070a0c1115151515171b1e1d1d1c1d2022201e1d1e20212324231e1a1c1d1b1b1a17120f0e0a080500fdfbfbf9f5f2f1f0f0f0f0efedeef0f1eeebeaeaeceff0efedebe9e9e9e9eae9e8ebeef1f2f4f3f3f2f3f7f9eff2f3f4f9fafcfbfbfaf7f6f6f8f9f8f7f7f9f9f8f7f6f5f6f6f9fafcfbfbfafafaf7f7f7f8f8fafafbfbff0000fdfbfafcfdfffefe0003050503010001050a101313110f0d09070400fefcfe000101fcf9f8f7f6f4f5f4f8fcff01020100fdf8f7f9fc000102fdfbfbfdff000407087805000014000e000f00008005550007890312000587000781010026040fe3079405000014000e000f00008005550007890312000587000781010026040fe307b005000008000e00080000809901000000000000c005000008000e00080000809901000000000000d005000008000e0002000000000000005a009001e005000008000e0002000000000000005a009001f005000004000e00050000803a690200fc05000004000e00050000803a690200 ''') # <<< 0000 880d 0000 07000000 # 08000000 9400 0e00 0300 0080 07000000 7e7f807f808080808080808080808080808080808080818081808180818080808080818081808080818081808180 # a4000000 0800 0e00 0200 0000 00000000 0d007100 # b4000000 0800 0e00 0800 0080 db000000 00000000 # c4000000 0400 0e00 0500 0080 1c6f0400 # d0000000 9400 0e00 0700 0080 07000000 2b23203c2d182e1e30182e1c321d341d341e321c301e1e241e201f201d1c321a301e1c211e21341f1e202024201f # 6c010000 1400 0e00 0f00 0080 05550007 7701002805720000080100020811e107 # 88010000 0c00 0e00 1200 0080 07000000 7002 7800 7002 7800 def get_factory_bits_parse_response(rsp): assert_status(rsp) rsp=rsp[2:] wtf, entries = unpack(' 0: raise Exception('Garbage at the end of reply') return rc def get_factory_bits(tag): rsp=tls.cmd(pack(' 0: b, sensor_type_info_blob = sensor_type_info_blob[:0xa8], sensor_type_info_blob[0xa8:] t, = unpack(' 0: x>>=1 u+=1 # convert to array of binary strings with each element exactly u characters long b=[bin(i-m+0x100)[-u:] for i in b] # combine chunks into one long text number with u*l binary digits and parse it as integer b=int(''.join(b[::-1]), 2) # convert back to bytes b=b.to_bytes((u*l+7)//8, 'little') return (u, m, b) class Line(): mask=None flags=None data=None v0=0 v1=0 v2=0 def clip(x): if x < -128: x=-128 if x > 127: x=127 return x & 0xff def scale(x): x -= 0x80 x = int(x*10/0x22) return clip(x) def add(l, r): # Make signed l, r = unpack('bb', pack('BB', l, r)) return clip(l+r) # This is the exact logic from the DLL. # If it looks broken that was probably intended. def patch_timeslot_table(b, inc_address, mult): b=bytearray(b) i=0 while i+3 < len(b): if b[i] & 0xf8 == 0x10: if b[i+2] > 1: b[i+2] *= mult if inc_address: b[i+1] += 1 i+=3 continue if b[i] == 0: i+=1 continue if b[i] == 7: i+=2 continue break return bytes(b) def patch_timeslot_again(b): b=bytearray(b) pc = 0 match=None # Look for the last Call in the script while pc < len(b): opcode, l, *operands = prg.decode_insn(b[pc:]) # End of Table, Return, End of Data if opcode == 1 or opcode == 2 or opcode == 4: break # Call if opcode == 11: match = operands[1] # destination address pc += l if match is None: return bytes(b) pc = match match = None # Look for the last Register Write to 0x8000203C while pc < len(b): opcode, l, *operands = prg.decode_insn(b[pc:]) # End of Table, Return, End of Data if opcode == 1 or opcode == 2 or opcode == 4: break # Write Register if opcode == 13 and operands[0] == 0x8000203C: match = pc pc += l if match is None: return bytes(b) # Hack the value to be taken from the factory calibration table right in the middle of a sensor b[match+1] = factory_bits[3][4+key_calibration_line] return bytes(b) class CaptureMode(Enum): CALIBRATE=1 IDENTIFY=2 ENROLL=3 class Sensor(): calib_data=b'' def process_calibration_results(self, raw_calib_data): frame=raw_calib_data[base_address:base_address+frame_size] frame=[frame[i:i+interleave_lines*bytes_per_line] for i in range(0, len(frame), interleave_lines*bytes_per_line)] frame=[[f[i:i+bytes_per_line] for i in range(0, len(f), bytes_per_line)] for f in frame] frame=[bytes([sum(i)//len(f) for i in zip(*f)]) for f in frame] frame=[f[:8] + bytes(map(scale, f[8:])) for f in frame] frame=b''.join(frame) if len(self.calib_data) > 0: lll=[self.calib_data[i:i+bytes_per_line] for i in range(0, len(self.calib_data), bytes_per_line)] rrr=[frame[i:i+bytes_per_line] for i in range(0, len(frame), bytes_per_line)] # Don't touch the first 8 bytes of each line, add everything else as signed characters, clipping the values combined=[ll[:8] + bytes([add(l, r) for l, r in zip(ll[8:],rr[8:])]) for ll, rr in zip(lll, rrr)] self.calib_data = bytes(b''.join(combined)) else: self.calib_data = frame def get_key_line(self): if len(self.calib_data) > 0: bytes_per_calibration_line=len(self.calib_data)//lines_per_calibration_data key_line_offset=8+bytes_per_calibration_line*key_calibration_line key_line=self.calib_data[key_line_offset:key_line_offset+line_width] key_line=bytes([i-1 if i == 5 else i for i in key_line]) else: key_line=b'\0'*line_width return key_line def build_cmd_02(self, mode): chunks=list(prg.split_chunks(hardcoded)) # TODO: figure out when to use multiplier and address increment for c in chunks: # patch the 2D params. # The following is only needed on some hw versions below 6.5 as reported by cmd_01 #if c[0] == 0x2f: # c[1] = pack(' 0: bytes_per_calibration_line=len(self.calib_data)//lines_per_calibration_data for i in range(0, 112, 4): l=Line() lines += [l] l.mask=0xffffffff l.flags=i | (0x85 << 24) l.data=b'' for j in range(0, 112): p=8+j*bytes_per_calibration_line+i l.data += self.calib_data[p:p+4] #---------------- Line Update --------------- line_update = pack('> 0x14) <= 1]) chunks += [[0x30, line_update]] #---------------- Line Update Transform --------------- update_transform = b''.join([pack('> 0x14) > 1]) chunks += [[0x43, update_transform]] return prg.merge_chunks(chunks) sensor = Sensor() sensor.process_calibration_results(bulk_xfers[0]) sensor.process_calibration_results(bulk_xfers[1]) sensor.process_calibration_results(bulk_xfers[2]) cmd1=sensor.build_cmd_02(CaptureMode.ENROLL) #prg.dump_all(cmd1) #print(hexlify(cmd1)) #identify_from_logs=unhex(''' #23000000200008000020008000000100320074000000008020200400242000005020773628200100302001003c208000082138000c210000482107004c210000582000005c20000060200000682005006c20014970200141742001887820018084202000942001809c200902a0200b19b4200300b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a1013200440000000080dc20e803e0206401e420d002e8200001f0200500f8200500fc200000b8203a00000804001408000008080000080800001408300008080000140831001c081a0032000c0000000080501101004c111e0034007801e7f4f6f3f1f4f5f6f5f1eeeceef0f5f6f7f8faf8f7f7f8fc00040d10111111131515141211151a1e1d191a1a1b1c1b1813101012161617161514120c06030200fefbfcfafbfaf8f3efecededeef0f2f1efeeefecedeaeae9e9ebedf1f5f6f5f3f2f4f6f9fcfcfdfefdfeff000100000110232e10232e10232c10232c10232c01065010250101000007c8078c06ff0000000000004f8b006d0300280307030990098db00b90880991858e08c1810b9190910ac1b8928a0993878a890b9388898908c88191890ac8889289099a818a890b9a88898908d08191890ad08892890802818a095a810a0288890b5a8808d98189890ad9908989095e8289890b5e88898908e18189890ae190898909648289890b648889096e8108e981890b6e880ae99091b9096f828a8f0b6f88918908f0818a890af090898909768289910b76b8918a08f88792910af8888a92097c81898a0b7c09018089890b01888991097f8189920b7f09088089920b088889920c07030307200402000000002f0004007000000029000400700000003500040080000000170000004e002800fbb20f0000000f00300000008700020067000a00018000000a0200000b1900008813b80b010910002e001c000200180002000000700070004d010000a0008c003c32321e3c0a020244000400010000003000f4311e000000ff0000008d002007ff00000095003007ffffffff00000085ffffffff04000085ffffffff08000085ffffffff0c000085ffffffff10000085ffffffff14000085ffffffff18000085ffffffff1c000085ffffffff20000085ffffffff24000085ffffffff28000085ffffffff2c000085ffffffff30000085ffffffff34000085ffffffff38000085ffffffff3c000085ffffffff40000085ffffffff44000085ffffffff48000085ffffffff4c000085ffffffff50000085ffffffff54000085ffffffff58000085ffffffff5c000085ffffffff60000085ffffffff64000085ffffffff68000085ffffffff6c0000856f34120a130f0f1011100f10140d0c0b08080c0e0e0b0f0f1a0f0f11120f12160c0e0e110f0a080a0d090a0e0b05080b10070c10030a0f130507090bfcffff02ff05050500020405faff0003f9020404fb040604f9010404f6fe00fef3fdfefdeff9fbfdf0f8fafbf500fefeeaf6f7f7f0fbfefff4f7fcfff3f6f9fd140f00fdf6fbfdfdedf3f6f7edf0f3f4f1f5f5f7ecf3f6f7eef5f6f5f1f5f6f5f2f3f7f9f1f1f2f2f7f1f3f2f3f5f2f3ebf3f4f2f3f2f5f5eaeff0f1eef5f5f4e7f2f3f3e6f2f2f1f7fffefbf700fefbe7f4f6f6e9f6f5f2f2f4f3f3f5f5f5f4ebf5f5f1e7f4f6f3e2f1f3f2dff3f7f8e1f5fbfbe4eff2f1ecf1f4f5e1f1f5f4e8edf1f6f4060504e2f4f5f4e8f3f6f8e1eff1f1e2f3f7f9e5f3f5f6e7f5f7f8edfbfbfaf2fe0000effefffef0ff00fc131101fbedfdfdfbe7f9fbf8e1f0f3f1dfedf1f1e9f2f6f6d9dfe0e1e5ecedeff2f3f5f3e7f3f4f1eaf7fbfaf2f5f8f9e8eff4f8edf6fafdf0f3f4f5f2f4f6f9f0fafdfcf3fefffef301010304110905090a0906ffff0405fc060707fd090d0dfd070709fe0c0c0d010a0d0d0205090a020608050d070a070d05070605040606080203020bfdfdff07ff00020a0201056f2909080f151e22100e0f130f0d0e130a0f13170f1011131011131414171a1a18191714111213120d1214160d0e0d0e0a0707080f0e090714100b0a0a080604070a09080506080a0504040705060505020000020200ffff0300fffffbf7f6f7fefcf9fafffffcfcfafaf9f9fcfaf5f3f6f4f3f1fdf9f4f10201fffbfffffdfefaf9f9f9fefefcfcfbfefefff6f9f8f7f8fafbfaf6f5f6f8f4f2f1f2f5f3f2f2faf7f7f8f1eff0f3f3f0efecf4f3f2f0f4f5f5f4f5f6f8f9f3f7f9fbf3f2f1f3f3f2f2f3f1f1f1f2f8f3f0eff8f2efecf6f4f2f0f0edeaebf4f3f1f0f8fbfbfaf0eff1f3f1f4f5f6f2f4f6f4f6f5f5f3f8f5f5f5f0f1f5f6f1f1f1f3f1efeeeff3f2f1ef00fcf8f6f0eeefecf6f7f5f3eff1f2f2f8f7f5f4f8f8f6f5f6f5f2f1f8f8f8f7ff00fefcfbfaf8f8f8f8f8f9f9f9f9f8fafafafbf6f8f9f9f2f4f8f9eff0f3f6f7f6f7f9e3e7eaebeef0f2f3f2f4f8f8f0f1f8faf5f5f7fafafafbfbfbfcfdfcfdfe0002f9fcfcfcfdfefdfcfdfefefefefefdfd04060503010000000505050307050705040301010c0a0705090804010d0a07050e0e0d0a0c0d0f0f0808090808090b0a0a0e0f100604040605050506010406070303030205040102040300022222201e181a1a19181b1a181c20201f1618191a141515171a1a1a1c16191c1b120f0f0f161312110d0b0b0d0908080a06070b0f0b0c0d0e0403060908080c0d0c0c0d0a070604020607060503030405fe00010200020506fbfcfefffbfdfefffbfbfcfef8f7f7f6f4f5f7f6f5f7fcfcf3f9fe01f9f9fdfefefefefef8fafaf9f9f9fbfdfbfafaf9f6f7f8f9f5f3f4f7f7f6f6f7f2f5f5f4f4f6f5f6faf9f7f5f6f6f2f2ebeef1f3efeef0f1f6f6f5f3f8f6f4f4faf9f7f5f3f4f3f3f3f2f4f4f2f1f0f0eff3f4f7ecf0f3f7efeff0f2edf2f4f3f0f2f3f3fafaf8f8f2f1eef0f5f1eeecf3f1f1eff1eceaecf3eeededf6f3f1eff3f3f2f1eff0f0f0eeeaeceef7f7f8f9ececeeeef4f2f3f2f0ececeff1ededeef5f4f2f0f1f2f2f0f6f3f3f2faf7f8f7f8f9f7f6f5f3f1f0f6f4f2f0fbfcfaf7fafaf7f6f6f2f1f0f7f4f1f0f9f7f7f6ebebebe8f6f6f6f3f7f7f5f7faf6f3f4fdfbfaf7faf8f8f5faf9f7f50201fffcfbfaf8f6fcfcfaf8fbfaf7f6fbfaf8f7020200fe00030200030404030504030300000002030302040203020203050202070504050d0c09070707050408080706121211100809090908090a0d080a0d0f0405080d0405090f070910131d1c1d1d1a1b1d1e1716171b1b18141218151111161414141a1717161b1a1a1b12131818111214151011100f0d0e0d0e100d0b0a1113130f0f100f0f0e0d0d0f0a090a09040708080304060504060706040405070404030200fffdfd00000000fefe0000f7f5f7fcf5f5fafdfcfaf9f70302fffd000202010000fffdf9f9fafafbfbfcfef7f5f3f4f7f5f3f3f7f7f8f8f6f5f5f4f3f4f3f2f6f7f6f3f6f8f6f3f1f4f5f4f4f6f6f6f1f3f3f3f3f4f4f5f4f5f5f7f0efeeeff0f1f2f1f2f2f1f2f0f0eeedf5f3f1f1f8f7f6f3f1efeff0f2f1f0eff2f1f2f1f6f6f8f8f1f5f7f8eef0f5f6eeeeeeefefeff1f2f1f3f4f3f0f2f2f1f1f1f0f2f1f2f1f2efecebebfafbfaf7eeeff1edf2f0eff0f0f0eeeff1f2f6f8f0eeeff1ede9eceef3f4f5f5f5f4f4f5f5f4f4f6f2f6f9fbefefeff1f4f5f7f8f6fafbfbf1f1f2f1f0f1eff0f6f8f9fae7e8e8e9f2f1f3f5f9fafbfaf5f5f2f3f6f5f6f3f4f3f4f3f4f2efeefaf9f9f8f7f9faf8f9f9f9f9f6f6f8f9f8fafaf9fbfbfdfdfe000000040709080304030403040605050608080000010402030305060709090504040305030202050607070e0f0c0c090806070f0f0e0d0f0d0807100f0d0c13141413181617192223261f1d1a17131c1a140e11111011110f0d0c13100e0d1514111118140f0f18161512131211100e0f0d090e0d0702090a09080d09090a0e0a08050c09080706050305060504040301000002fffcfe0604020002010000fdfefe0000fefdfd00fdfbfefcf8f5f6fbf8f5f5f7f7f7f7fbfbfbfefefcfcfefaf8fafdfafaf9f9fefdfefcf7fbfcfbf3f4f6f7f7f8f7f9f4f6f8f8eff0f1f5f2f2f1f2f1f0f0f2f1edeceff4f3f1f3f3f4f5f7f4f6f8fbf7f7f7f8f1f3f5f8efeef0f4f1f0f1f5eeeff1f5f4f7fcfef3f5f7f9f4f5f7f9f0eff0f5f1f0f2f3f8f8fafff7f7f8fbf7f8faf8f3f7fafbf4f6f8f9f5f4f7faf0f0f3f7f1f0eff3f0eeeeeeeaedeef0f4f5f9fbeaebeff3f0f4f6faf1f1f4f7faf7f8faf7f8fbfef1f2f5f8f2f0f2f5f6f7fafdf8fbfbfdfcfafcfef4f7fb00f9fbfd00fafbfcfef2f6fcfff1f5f9fffafbfe00ebecedf0f4f4f7fafbfd0002f5fafefef3f6fc01f4f7fbfbf0f5fafbf9fbfefef8f8f9faf9fcfefdfafbfcfcf9fafdfbfffefe00ff00010107090c08060b0d09050708060a08090607070606080808080b0b0d0704080e0c04070707080808060d0c0d0d070604040b090805060807020a0705040e0701ff1409fdf91a17130e0f0c0905080608080f0e0d0b0a0a0b0b080606080e0a08070f0d0b08100e0d090e0c0b0a06070707fffefdff0501fffd0807040205040303050303030403020201fefcfc0000fffcfffefcfcfffdfcfe00fefcfafffcf9f8fcfaf7f700fffefcf8f9fcfef5f5f8fcf7f8fafcff000101fdfdfcfffefdfdfef8fafefffcf9f9fcfaf9fbfbf6f7f9fafafbfbfbf8f8fbfcf8f9f9faf4f4f6f8f6fafdfff1f7fbfef7fafcfefafcff01ff000103fbfdff00fbff0001faff0000f9fc0001f7fafe0000000204fafe0102fe000002fafe0000f7f9fd0002050406fdfefe01f7f7f8fcfcfdfefefdff0100fe000003fd000101f9fdff00f3f8fe02f2f7fbfeff040609f8f9f9fafbff0001fafafbfbf9fafafcfffefbfcfbfdfefef9fcff02000204060103070900010203030301010506040200000102000100ff020201ff03010100f2f4f4f3fcfaf8f800faf8f9fffdfcfb030300fdf9f8f9fafaf9f7f5fffefefbfaf8f7f5fdfefefafdfffffefbfbfbf9000000ff00fefefd01fefdfd0300ffff0301ff00030201040605050308090805050505030702fdfe06040101040100000d0a05010504010003010101fffe010300ff0002fefd0103f6f7fcff070400fb030200fd0501ffff090400fd0a070301070400000601fefc06030100070503010600fcfb0401fefdfffffdfefcfbfaf9010201000100fefb01fefaf50100fdfafdfefcfbf9f8f6f7fdfcfbfbff00fffefbfbfcfef8fafbfdf9fcfefefdffff00ffff0001ff000001fcfafafb020001010002010202020001fefcfcfdfefefdfefbf9f6f8f9f8f9f9fcfeff01fdffff00fbff0003fbfeff0000010103ffff00030104050304050202030304070200000301010204000103070205080c0202030504060607040606070205060a04060a0d04080d0e080d0a0a0407080b00050d1000050b0f00040b11050a131903070e130408101105090f12000104060c13191cfd02070a03050a0dfd00080f02060a0bfe000407fdfe04080305070806070b0e090a0d100507080c0203070b03040b1205081015ff000308fe00030500020504f1eff0f1f7f9fbfefdfdfbfbfbfafaf8fbfcfbfcf8f8f7f5f5f5f9f7fafafdfef7f6f8fbf6f5f7f9fcfbfbfbf8f9fafbfefdfcfdfbf9fbfbfcfbf9f9fdfaf7f7fdfbf9f80201fffc0201fffd05060706020401feff0100fe010200fc010100fc000000fcfffefdfb02fffefb01fbf6f301fefaf80500fbf5fffcf6f0f5f3f3f5faf9f7f6fffdf9f5fdfafaf800fdf7f4fcf9f4f2fbf9f7f8fffbf8f5fcf8f4f3f8f8f6f2fbf9f8f5fbf7f0edf6f4f3f2fdf8f5f3f7f4f0eef5f5f4f3fafcfcfbf9f8f8f8f9f9faf9fcfdfafafdfcfbfafefffdfcfdfbfafafcfbfafd01020505000001010100fefcff0204020406060305080909040a0e0e00040405fdfeff02fcff0001fcfe01010101010200020204070a09070205060604070a0c06070709000204080407070e080e1111080c0e0b090e0f0e0b0f100e0f111213090e10120d11131206080a0f0d1215190f1215170d0e0f130c0f14150d11131411111113121317181415151617141316161817171513121213141213080a0d0f1d1d20230d0a0f1514181a1c141518190f1015180c10171d0d1115150a0d12160f13181c121312130d1011120f12141414131314171515140c0e0f0d070709090404080cf3f6faff00010407ff030808fc000405fd0000fff6f7f9faf8f9fbfdffffff00fcfcfbfcfbfcfe00fcfcfcf9fcfafbfcff000100faf9f9f9fafaf8f7f8f5f5f2f7f6f4f2f9f6f7f7faf8f6f502fcfafafbf7f5f6f9f7f6f6f8f3f3f3f7f3f2f3faf8f8f7f9f6f3eff8f4efebf4f1ece8f7f4eee9f1ede9e7e8dfdad9fafefefaf6f8f9f7f4f3f5f4f8f7f7f4f2f2f2f0f3f3f2f0f8f6f4f1f4f3f2eff1edeae7f0efefedf1ebeaebeceae8e8f0edebeaf2f0f1f4eef0f1f4f4f6f7f7f9f8f8f7f7f5f6f5f8f7f7f7f7f8f6f7f9f9f9fbfbf9f9fafaf8f8f8fefbf8f901fdfcfd00fdfbfbfbf9fafbfffafbff020000ff080604020a06070904060707050709080505090a0001050a0306090a060809090506080c06080f130d0e14170a0c0d0f0a0b0c101115181c11151c1d0b0e15170f1216180d0e131516191c1d14181c1d14181d1e1414171a1c1b18181918191a151618191618191b161818161515141217171a1d1618181b191d20231618191914181816161c1e1e1218181827292c2d1c1e1a172023201d1c1b1a181d21221f2023211d1617181a161615181c1b1b1c131310131311101012100f10110e0c0d13130f0b0b0a0b06070402020f0e0c0a04030100070606070908080803020405fdff0004f9fbfc00fbf9f8fa000100fefafbf8f8fdf8f4f4f5f3f2f4fcfbfbfafdfbfafbf9f6f7f7f7f7f7f4f1f1efeef0eeedecf6f4f2f2f3f2edecf7f3edeaf4f4f1edf7f8f7f3f5f4f1eef3f2efedf6f2eeedeceae9e7ebeaece9e9e9e8e7e8e7e7e7eaeaebecdadde3e8f5eeece8f3f0ededf3f0f0f3f2f1f0f0eeeeedeeedecebebf0efeeeeece8e7e9e4e2e5e7eae8e6e6ebededefeae9e9e9eceae9e6f4f4f4f4f4f2efeff6f2f0eef7f7f6f5f6f5f5f6f6f6f5f4f8f7f5f6fdfefefcfaf9f7f6f9f9fafcfd0000fdfffefaf8fafafafafe00000300fefbfbfefefefe010101ff0b0703fe0602020108050303090602010908070709090707070401ff0f0b07051412100f16151214101113161314110d1e1b17121d1c1d1e1a1817181a181814181a1c1b1e2122211f1c1b17201a17181e181413181b1b1b1c1d1d211c1e1f1c1d1d1c1915171c1e11151a1e1f2224251f262b2d272e32321a1b1d1f1717181c1f242626191d211f31393d3f1c222929191d2122171d22261e23262b1d2021211a1b1c1c1c1f1e1e1c1b1818181e1f1f13191b1c11151516101316170c1016180404080b04060b0e0c0d1011000100ff0707080608090a08050506060506050703060603fd020200fbff0005f7f9f9faf4f4f2f2f4f6f5f7fafaf8f7fdfcfaf7f7f8f8f8f2f1f2f2eae9e6e6ecedefecf3f5f5f4ecf0f1eeeaebedeeece9e9e6ece6e4e3eae8e6e5ebe9e7e6eceae7e5e6e7e6e7eae8e8e9e7e7e6e5e7e8e8e9efeff0eeebeae7e3e8e6e6e4eeecebe7f3f0edebefeeecebefeeefede9e9e9e8ecebe8e8eceeede9e9e8e6e5e7e8e5e4eeeeebe9eaebebeae7e9eae8f4f3f3f2f0f0f2f2eff1f4f6f4f5f9fbf5f5f6fbf3f3f5f9f7f6f9f9fefbf9f7f5f6f9fefcfcfcfdfafafd00f5f9fe04fbfc000102fffdfcfaf9f9fafefefcfefefefefcfcfdfefc0101020106050402000100010704040306040303fe00020405070a0a0c0a09091416130f1717140f0b0d1311111113111b19191918171513131414121a1715141d191716181715141d201f1b191e1e1a1b1b1b1c232526221a1b1d1e191d1f1e1e1d1a191d191a1a242123242f2c2a2730302d2d212525262024242427292b2f1d1e22273d3d414728282b2f201f1e1f2726221f28282728222224261f2120201d1f2023191d201f1f1e1d1e1c1d1d1e141313171818191b1c1f211f101113111315151515171716fdff0001060a0b0e07080a100606090c090a0d1002010206fdfc010305080809fbfcfd00f2f3f9fcf9fafbfcfafaf9f7f5f6f8f8f5f2f0f0f1edeae8e5e3e4e2edebeceaf4f3f0eee8e7e8e8ecebecebe7e7e7e6e3e3e3e4e5e4e5e4e6e6e4e3e6e7e9e6eae9e7e3eaeae8e6e4e4e4e4ebe9e8e6ecebe8e5e0dddbdde3e3e4e5e5e4e7eaeaebebebebe9e8e8ebebe9ece9ecebece9ececece9eaecebe5e7e9e7e4e8e7e6e8e7e8e9e6e5e5e9e7e6e8eaf3f3f4f3f2f1f2f1f7f8f9f7fcfdfbfbff00fffcfefefefdfcfefefdfbfffffcfffffefdfdfeff00000001030504030703000103feff0103fbfd0004ff03060afafe0309f9fa000500ff000205040300020305050303020304050405050506090b0905040602fefc0a0502040c0704020d0600ff0d0808061815120d110f0c06110f0c0a120f0c0b1615110d1817151318171716181614111a181516201a15141e1d1a151b1a19191a1a17181b1c1b182526272728282a2929282a29221e1d1d2524211e2f2d2a282a2826224845413f2d2824211f2223231f212220262524232322212220222223211e1e1e1e1c1d1d1e1e1f231d1d1e201b2124251c1d1f1f1f1d1d1d11101110120f0f1214141410020205050d0d0d0e12121112101315151212110e080a0807050606050a0909070000fffc00fefdfcfdfaf6f5f8f9f8f8f8f7f7faf2f5f5f8ebedeceae5e8e8e7eaeaebeaedefeeeee7e8e8e8eaeae9e9e4e6e5e6e4e4e3e4e4e3e3e7e3e1dfdfe6e6e8ebe3e7eaebe7ecefeee8eaebeae9ecf1f2e5eaf1f4dde0e7ece5e5e5e4e7e5e1e3e9e7e6e9e9edeeeeedf3f7f7e9eef0f3eaeff0f0e7ecedefe6e8ebede5eaecefeceff0f3eaedeff2ecedececf1efeeefeeededeef4f3f3f1f9fbf9f7fbfaf7f7fdfbf9f8fafbfafaf9fbfafefcfcfcfefefdfbfb0200ff00080603020405040505070a0a080a0a080f0d0c0a090a0706070809090206070a000204060404030400000103030406080a08050205060400fbfdfefa0305020201000001fdfcfcfd070605050a0807060404050508060404070707040a08080a120f0f0f1816141113131615161816151515131312110f0b171516131819161313101012241e1a1927211d1c2a2725231f1c18161e1c1c192a2c2c2921201f1b3d3a3a3b222326252424241c201e1f2124242727221f1f2025221e1d222324272122221e262625212523212026201c1d201c1c1d1e1e1e2213161617161516140f1217180a0d0d0c10100e0d131511111515120f0c0a0e10050607080405050606050403f9fcfefff9f9f8f7f6fafafbf7f9fafcfcfdfbfdf7f9f9f8e7ebeef1e4e6e9eae9eaecedeceef0f1e6e8e9ece7eaeef0e7ebeff0e5e9ececeaedebeae1e8eaeaeaedece9eae9e8e8eae8e9eaeaeae8e9efefefeef4f3f0eeedecebece2e3e5e9e4eaedededefe9e6ededeeeff7f5fafbf1f1f1efefeff2f3eeeeebe9eae8e6e7edecebedefeff0f4efedebeeeaebededf1f5f6f9eff0f3f6efedf4f8f4f7fafdf6f6f7f8f7f9fafbfafe0000fe010000fe020506fc00020201030607030608090506070208080803080707060d0e0f0e08090a070a0a0704080701fb04fffbfe0003050805090c0705fdf7f8ff000201fdf9f5f4f7f8fc01fefbfcfd00fdf9fbfcfbff0101fefafd0100feff01fdfbfc00fef9fa0004070d0601fdfe0b0401021212121414151214111111141216171708090f151212161a0e0f1116161617161c1a1919201f1d19231f1b18181816171b1d1c1a27211e1d1915130f3b36291b27211e1b1a1a1f1e24221e1d27211d1e242725212226241e251f1c1d1e1b18162221202026292a2924282926262a2a252b2c2e281d1c1e1a1f2b312a1b1b1f1c0c16212810151916121212121011100d10110e0d0b100c0a080c0e0f04070d0dfefe0003f9f9fbfdfdfefffefcfdfefefffffdfbf9f9fbfbf1f2f4f7ebedeef1eeeeeeeff2f1f2f1f0f4f6f5f2f1f1f1efedeff1eceaeaeae8e7e5e5e7e4e5e5e8e7ebe9e8e8eae9eaebebece8e9ebeaecedf1eeececececededeff0eaeae9e9edededefe6ecf4f7f1f0eeedf9f4efefedeff1f3f2f1eff0e9eff1f1eaf0f3f5eff1f3f3f6f4f2f1f2f5f6f7eeeef0f1f9f8f9faf6f6f6f9faf9f9f9fdfafbfcfcfdfefefcfcff01ffff00010001020404030203030202ff0807090a08090b0dfffe020602000306060503020d0a07040808060403060703fbfdffff030808060401010002fe00fff9fcfe00fefcfcfdf5fafcfe01fffefffefd0003fafcfd010300fdfd01070a0e02090c0c0005080cfc0002070804050903080e11060b0e13131411101312101012100f0f15100f0e1715120f1a140f0e1714100d1514120c1b1b18121716120e191915131919150f1815110a1c1a17150e0d0b080e0705021e1a14101c1813101c1a150e20201e191916110f171312101e1c1c1c17181615201f1b1727241f1a2524221e1e1d1c1c27221e1c1919191a1f1816151d1a181b272522200f0b0c0d131312110a0f11120d0e0d0a090e0b070f100c090e0d0c0a0604020200010102fefcff00fffefefffafbfe03fafbfd00f8faf8f9f1f5f6f7edefeff3f2f7f9fcf4f6f7faf5f7f7f8f2f5f6f8f0f6f8f8e6ebeef1e8eaecf1eaeaeff3e8e8eaefededeceee9eaebefeceaedefebeef1f5f1efeef0e9e7e6e4f0eeececf7f8f7f7f0f2f3f2f1f3f5f6f2f3f3f5f0f0f0eff1f0edecf2f0efeef2f2f0eff4f6f6f7f4f4f4f4f3f4f4f3fafafbfcfbfaf8f7fafbfdfbff000000fefdfdfd0200000002020302050507060304070700ff0202080300fe0d07020009080704090a0905020404030505050602030304020203040002040307090a09020203010000000100030609000407060003090e03090e110a121716080f1215010508091517181510131715111314130e1114130e1014141413121213131210101113121415130e1215141211100d0c0f0e090511110d040d0d0803060302000a08070405020306100c08060601010102fffeff0f07020103ffffff00fffafb0c0806060c0a0b0909040301120a08060c0c07030f0d0b071813110f110f0c0814131111151411101a150e0917110d0e16120f0e1918171413131314181714121b1717160a0604040f0c06040f0a060506040407010103040503020608090a0f0002050901020105000101040000020503070b100305080df9fe0105f7faff00f6fafd00fcfffffffafcfcfcf9fd0001f9f8f9fcf8fafbfef3f6f8f8f7faf8f6f6f9f9f9f2f5f8f9f1f3f6f6f1f3f1eff2f3f3f6f7f8f4f5f3f3f0eee4e9ecf1eeeff3f5f4f4f6f9f3f4f5f6f9fbfcfcf6f8f9faf1f2f3f3eef1f2f1f0f1f0f3f1f2f3f7f7f8fbfcf7f9fafaf3f5f4f5fdff00fdf7f8fc00fcff020400010303fdfdfd00fffbfaf90100fdfc050202010402ff00000000fffefefe00fdfcfeff0200ff00010000000101ff00060908050303020305050404020200ff0504040300fdff01020404070b09090a0908060313120f0a1312110e14151111171916150a0a080c1314151514131516130f0e0d13100e0e14100c09100e08070e09080612120f0a0c0909070e0905020b0a0702020000fe010001000100fefcfefbfcfa02ff010005030201030000fd00fcfbfc000202000306050401000100fcfdfffe0605080705030205fffefefd0504030300030406060404000c090602060705030f0e0d0a0d0d0e0e07050401100d08010a0a0706120f0908130f0a06100c0d0e161111100302000007090a0a070a08080706040405050403090a0807131313111013121107090a0a06080b0a08080b0c110e0d0d10131412070c10100102060901020303000207090001020301020507fe000003feffff00f8f9fbfcf7f8f9fbf8f9fafefaf9faf9f7f8f9fdf0f5f7f8f7f9f9f8f6f7f7f7eef1efeff3f9fcfdfafd0103fdff0102f9fbfdfdfafdff00fdff0000f3f6fbfdf2f6fc00f8fe0000fcfffffffdff0002fd000203f7fafc00fbfafc0101010205020000040202050a02020103f9fcfd01fafafafd010001020001000000000000020508090001030400fffeff01020201020401fe050404030204050605060604fefe00000405080a050604050808090a0c0e0e0f05070708080607080c090a0a0f0e0e0c110e0c0b0d0d09051514100b14110c080d0e0c080d0c080408080604080706010602fffc060200fc0402fdfbfffdfaf7fdf8f6f4fffbf8f3fffbf8f5faf4f1f0fbfaf8f3fffcf8f500fdfbf8fcfbfbf9fcf9f6f4fbf8f5f40301fefb0002fffcfefdf9f7050300fd00fbf9f9f9f8f7f6020201fd02fffbfafffcfbf9fefbfdfb00fefaf70500fbfa0e080400fffffdfcfefdfdfb0200fefd0401fefc030201000f0c080410111113ff0102050b0b0b05060606030406070704070708060708050e0c0a090f0d0a07090a0b090a0606060d0d0c0a0e0e0e0e0f0e0d0f0e0d0c0c0805020303010202090b090a04070706060405070102010500030507fe00040700030506ff010408fbfe0206ff000206fbfeff03f8fb0109f9fd040af2f70007fefdfeff0300010103010000fdfdfe0100000205ff00020400000102000205080205060701050608030606070305050703030304060a0b0b06060402090c08050c0a09090302010203030404000102020302000100010002ff00000204010205050609090105070801020303fdff0204050607080303050600000306010100000a090909060504030d0d0e0e0e0d0d0e090d0c0b090a0907080401000b0b07050c08070602000103080708070707090804030504030302ff030101fffffdfffdfcfdfefdfbfcfd00f8f8f6f6f4f3f2f2f2eeededf2eeededf5f4f3f3f1f4f4f2efecededf3f2f3f2f4f1f0f1f2eeefeff4f5f4f1f7f9f8f5f9f9f9f6f9faf6f3f3f0ecebf9f6f2f1faf9f8f5f3f3f4f6f7f4f4f5f8f7f6f3f6f2f0eef6f3f2f1f6f5f4f4f9faf9f7fefbf6f3faf7f3eef9f9f9f9fdfaf8f7fbfaf9f8fffdfbf902fefcfe11100d0b04010002fffcfbfd00fffefd0706060604030201030200ff090808080401fffe0704000007070809080607071010110f1113120f0b0d0c09070a0c0c06090d0d080a0d0e0507090e0a0e1111090f11120c1013130a0e1414080d11150d0f12140b0e1214090c0e0f070a0f11101314130d0d0e0f0c0a0604000002040504050303060a0c0204070a07060807050605060305060a08080608070808090708080a0a0d0e0c080b0c0b050504040d0d0c0a02040202040606070c0b0a090506090a04040508030203030305040503030202020302010604020207040405080602020202000004020100080604000606060405010001000000fd090a090a030202030d0603010f0c08080805040603020100fffffdff030101020501fffd02fdfbfa0500faf80500fbf801fefefefbf9f8f9fbf8f7f9faf7f6f9fdfaf8f400fffbf5f6f3f4f2f1f1f2f4f0f1f1f0ecededf0f2f1f1f3f0eeededeef0f2f1f1f4f3f1f2f4f2f0eff1f1f1efeff0eef2f1f2f3f2f2f5f7f1f1f2f3ebe9e5e5f2f2eeeff6f4f1f0f4f4f3f3f9fbfaf9f3f4f7f6f1f3f1eff1f2f1f0f3f4f5f4f7f7f5f2eff0f0f0ebe9eaeaf7f6f4f0f7f7f4eff8f7f6f5fafdfdf9020402ff0a0a08060100fbf8fd030302fdfe00000608070602030201ff00020007070605ff0101000004070909090908080607070f0e0f0e0c0a0a0a0606090f09090b0e0e0e0d0c0e100f110e0e0a091012121112141214111114151412110f14151314151516171214141310121314141412111415120f0f1012140304080e06080706050607080d0f11130c0c0c0b07080a0b080a0f1009070708080808090a0d0f0f0908080d0908080e0b0b0e0f060a0d0d090c0e1005080b0c080a0d0d080a0c0b0b0e100e0d0e0e0b0404050905050708040607060203030204030404060504040100fffe0000010200000000fefd0002020102030000ff00fcf9f9fc0b0a070707060404000000000a0c0906070603010101020003030100050401fffefefdfcfcfefcf9faf9f8f8f7f8f8fbfefdfefdfcfcfdfdfaf9f8f9fdfbfaf8f5f3f1f0f3f2f0eff5f3f3eff6f6f5f4f1efeff1f2f2f0eff5f1efeeeeebebebefeeefeceeecece9edebe9e6f0eeebe9eceaeaebf1edebebf6f3f2eef1efedece4e5e1dff0f3f2efeff2f4f4edebeaeef7f5f5f5f6f4f5f2edeff1f1eeeff2f3f0f0efecedebe8e5edeeeeece7e6e6e7e8e5e6ebe9e7e9e9f1f0efeff3f1eff0fcfcf8f302020000f4f4f3f5ff00fe0000ff00ff00fefdfffffefbf9fdfbf8f601fefbfdfdfaf8f70502fffe04020000070605020e0c0804080605070f0f0c0a0f0c0b090c0a0c0c0f12100f080d0e0d0f0e100f1414151418191914111413111718171517171816100f0e10141414151112111010111313141516141112171c05050303090a090713110c0a0d0e10110d0f11100e0d0e0f0c0e100f0b0f10120e0e0e0d0f100e0b1113110f1111100e0f0f1011131715150d0c0d0c0d0d0d0d0c1011100a0909080907090b0909080b06040305040303040000020302020001050405040006070602030200ff0002020406090906080b0803070a0900040403070502000300fffd0001010004020100fffffdfe0000fffffffffcfc00010200fc000101f7f8f9f7f9fbfaf9fdfefcfafcf9f8fbfbfaf8f8f9fcfcfcf7f6f6f7efeeeef0eeeef2f7eef0f3f4f5f8faf8f4f9f9f7f0f5f8f7f2f7f8f6eef2f4f3edeaeae9e7e7e9eae8e9edece8eaeae9ebe9eaeaecebecedeae7e6e9ececebece1e3e7e7eeeaeaebf3eeefefefededeef3eeececf1edebebefeeecebf0edececeae9edf0e6eaeff3eaeaedeee8e8e9e8ececedefe7e5e5e6ecebeaebeeefedecf0f0f1f3fefbf9faf5f4f3f3fefbf8f7fcf8f8fa00fffdfcf7f6f6f5f8f7f9f7fefcfcfcf7f5f6f5fcfcfcfd0001020001fffdfd0406080707070808090a0a0d0a0909090d0f0f0c0c0b0d0d0a0a0f100e0f121312121010110f0f0f1012120f12100e0e1512111011100e0d1411100f1111121214121211110d0b0b211e1c1a070a0f1006060705080a0909100d0907100f0c080e0e0e0f0f0f0e0c100e0b0a0a070607080605050b0806020e0d0a0a11110c0712100f09090706050a0704030b0602000402ffff070300000905fffd060807060201010200fdfdfd00000102020101020100ff00fbf8fbff00fcfdfe060402010501020306020000fffdf9f700fffcfafcfaf7f6fefbf9f7fefdfafafaf8f6f7fdfcfaf8fcfbfaf8fdfcfcfafffcf9f7f6f5f5f8f6f3f3f4f7f6f6f5fbfafafaf6f4f6f8faf9f9f9f7f8f7f8f3f3f2f1f8f8f8f7f2f1f4f8f5f3f5f4f3f1eff0f3f0f2f5f3f2f6f8f0eef0f0e9ebedf1e9eaeef3eceaeaebebedefefededededeeeef0f2edf1f3f6efeff1f2e7e4e5e4eef0f2f0f2f4f4f3f0efedeaeff2f2f2eff2f2f3ebecedeceef0f2f1f3f3f4f2f4f4f4f2edeef0f2e8e9eaecf1f1f2f3eaedefeeedececefeceef0eff4f5f6f9fdfffffef6f8f7f7f9fe0100fafafaf9fbfbfbfaf6fafcfef7f7fafdfe00ff00f9fc0001fe00020201030402fe02050706060708080a0a0a0f1112110a0c0e0f0a080a0b0f0f10100f0f0c0c130f0b090e0e0e0e1011110e0d0d0d0b0f1112121113110f0d0d0a091012121011100d0d110f0d0a0b0c0c10140f090c1113151206080b0a090d100f090c0f1006060b0f0e0f12130d0e0f0e0b0b0c09090d0d0b0708070600ff0102060300020200ff00060200020403040502020304ff0001050001030200ffff00fbfcfdfe0402030101010102fdfbf9fa00fefbfc0101fffefffdfbfb0100ffff00fefdfdfefcfbff0302010000fffffef4f1f1f5fbfeff00f7f9f9f9f7f5f5f7fdfefffef9fbfbfaf6f6f7f9f5f5f6f8f6f3f4f8f5f2f3f6f7f6f5f5f6f5f5f4f5f5f5f8fcfcf9fafafafaf8f8f8fafbf8f8fafcf1f3f5f8f6f6f6f8fafcfaf9f6f8f8faf3f5f6f8f6f7f7f6f9fcfbfaf1f4f4eff5f6f5f3f6f3f0efedeeededf1efeeeff0f0f4f6f3f3f3f6f7f6f4f1f4f2f0ede2e0dfdfededecedf3f3f2f1eae8e9eaf2f0f0eef3f3f2f0edededecefecebe9f1efeeebf0eae9eaf3f2f0eeedece9e7f1ede9e7edeeebe9f0f0edededebebedfbfaf7f4ff00fffff6f6f4f200fffefcf8f9fafaf7f7fafffbfefe00fffffdfb010300ff020100fd020200fd00fefdfe060502000807030008060504110e0d0d0f0f0d0a0a0807081214110e0c0b0a06080a0b0d0e0f0d0d0f0f0e0c09090907110f0e0c0e0f100e080a0c0e0f0f0f100d1010110b0f121514191919141a1e240a09090d080708090e0a09070d0a060513120f0a12110f0d0d0e0e0e090808060805040205040303040505050303010204050502080a09050502fffd050200ff05040201020100ff02030302010205040100000001fffd00fdfcfafafcfcfcfafdfdfefcff00fffd00fefbf8fdfefdfb0103030300010201feff0100fafefffc00fefcfbfafbfcfaf9fcfdfefefcfbfafaf9f6f6f8f7f7f8f6f4f4f5faf9f8f7fbfcfdfdf7fafaf9f7fafdfdf9fbfbfcf9faf8f8f7f4f3f3faf9f8f8fbf8f5f5f9f5f1eff8f8f5f3f9f8f6f2fafdfd00f9fdfdfbf6f6f6f6f6f8f8fbedf0f5f8f2f4f6f9f3f8fcfff0f5f9fbf0f0f1f2f6f3f3f4f8f9faf9f3f4f7faedf1f6f8e3e7ebe9edeeeef1f2f2f3f4eeeeefeeeeeef0f1eff0eff1edeff0ece9eaebeae9e9eaeceaebedf0eae8eaf0e4e5e5e6e9ecefeee6e6e5e8ececedefeeeeeeedf3f4f4f4fe0000fff3f6f7f7fbfafbfdf9fbfd00ff000001fdfdfd00fcfd00fffdfe0002f9f7f9fdfbfcfd00fdfeff00fdfeff0100000304060707060a0806060606070a0a0a0a0a0c0d0d0b040506060a0b0c0b080707090707080a080909090706060a0d0b0d0d0d0d0f100f10101110121213171818171919161428231c150e0c0a05080602ff070806030404060406030200090705030a06050306050200030301000403020205060605030405050100010102020202fefffefffffefdfc020100ff000000ff00fefffe0300ffff0103020202050403fafcfd00fd000404fe000306fbfcfe00f9fbff00fbfcfbfc02000001fffcfe00fdf9fafbfaf7f6f8fbfcff00fafcfefffefefefffcfc0001f8fbfdfef8fafafafbfbfbfaf9fbfbfbfcfbfafbf8f9faf9fbfcfcfbfdfbf9f8f7f8fafcf4f5f7f9f8f9f9faf6f6f8f9f0f2f2f2f3f3f3f0f1f5f7f5fdfbf6f3f5f2f1f1f4f6f8f7fbfaf9f8f7f6f5f5fcfcfdfeffff0003fbf7f8faf4f3f4f6f4f5f6f8f9f7f6f9fbfbfafaf7f6f7f8e9e8e7e7f3f6f4f4f7f9fafaf0eff1f2f3f6f6f8f1f3f3f5e9e9ecefeaedeff2eeeeedf1f1f2f2eff5f6f3eee9eaebebedececedeaececeef1f2f0f0edecedeef5f7f8f9fefd0001f6f6f9faff0001010101010001fffefe01010000fdfefe0105040201000201fe0000020300010406030607080607090e0707080608090c0909080605090503000809070606060505090906070a0808080807060807050606090606070a0908090c070306100e101114171816191b1919141516171719191cfef6f4f6fbf7f3f200fefcf801fffbfaffffffff01fffeff00fffffffffffdfa0000fffb020201fe050402000303030001020101030101010000fefdfbfcfdfdff000000fdfdfcfcfffffefdff01ffff010202030203040400fffefe03ff0000080807070004050500010202000305040405050403030304ff000101f9fcfbf903010200020404020000fdfd0301ff01fefdfbfefafafbfcfbfcfdfdfdfe0203fdff0102fafafdfefbfdfdfdf8fafe01fdfe0000fd000100fbfcff01f8fafcfff5f8fbfcf1f5f8faf2f4f8fbf1f3f7faf1f1f1f3f5f4f4f5fafcfdfff6f8fafefdfeff0003030100fbfafafbf7f8f8f9fafbfcfafafcfafcfbfdfdfdf5f4f4f6e3e2e3e8f3f3f2f1fdfefdf9f5f7f8f6f8f9fafbf7f9f8f6efeef0f1f4f5f5f4f4f5f7f8eeeff3f6eaeceff3ebeaebedf1f1f1f2f0f4f4f4f3f7f9f9f0f2f4f6fafafbfd03040607f8f8f8fb010000fffffdfdfefefefeff0000fefe0304030303040406fbfcff000401000206060609090909090f0e0807050304070603030203020000fffdfbfb060401fd04030201060707070907060508070608070608090708070708070809070808080f0e0b0c110f0d0d15141212161614141e231c15f9fcfaf8f1f1f0eff5f3f1f2f9f7f6f7fefdfaf8fffcf8f6fdfaf6f6f9f6f6f8f8f6f5f5f9f7f7f7fefcfbfbfdfaf8fafdfbf9f9020201fffafbfcfefdfdfefefe000001fd000000fdffff00fefeffff0000000004020101ff00000003030201070809050403040500ff010403000205060708060508080701010102f8f8fc00fffeff01fffcfdfcfdfffffe0306040400040404feff0203fdff00010405050504060505fe00ff00fffefeff00fdfbfcff000002010103030202030201020303fbfdfe00fbfd0000fcff0202fd000000f6fafdfbf8fafafafefeffff00fefcfc01000001fffcfefefbfbfcfbf8f7f8f8f9f9f9f9fdfdfafafdfcfafbf7f8f8f8eaeae9e9f0f0f3f4f8f8fafbf7f7f8f8fd0000fdf6f9fdfef4f7f8f6f4f5f9fbf7f6fafcf9fafcfcf6f8f9fbf0f2f3f3f3f6f9faf4f4f5f4f9f7f7f7f7f8f7f6fdfdfdfe08080608fe00fffdff0002040001030301030504ff01020303040404080a0c0c0004070905090a0d0a0f11120d111514090d110f080808070405050600fdfcfafcfcf9f9fcfbfbfc0100fdfb0601fffd0604020309070305090506070907080a0c090708090805050d0a09090b080606110f0805110d07050d0907064300cc000f0000009b9a999796959392918f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d6b6a696766656362615f5e5d5b5a595756555251504e4d4c4a49484645444241403e3d3c3a39383635343231302e2d2c2a29282625242221201e1d1c1a19181615141211100e0d0c0a0908060d7200000ca3100b12208ea21c83d44cd3235915656118a66dd95469d45551d72549d19265d0756d9de6791d3569d9e67999d451228871dec66dd7b6695cb769d5453918f65094f45496c631cc645dd7d43845911800a130 #''') #prg.dump_all(identify_from_logs) enroll_from_logs=unhex(''' 23000000200008000020008000000100320074000000008020200400242000005020773628200100302001003c208000082138000c210000482107004c210000582000005c20000060200000682005006c20014970200141742001887820018084202000942001809c200902a0200b19b4200300b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a1013200440000000080dc20e803e0206401e420d002e8200001f0200500f8200500fc200000b8203a00000804001408000008080000080800001408300008080000140831001c081a0032000c0000000080501101004c111e0034007801e8f5f7f4f1f3f7f6f5f1edeceff2f5f6f8f8faf9f7f8f9fb00040c10131111121415141210151a1d1c1919181c1b1a17130f1012151616151515120c06040201fffdfcfafbfaf8f5efedededeef1f3f2f0efefececeaeae9e9eaeef0f4f7f5f3f2f4f6fafbfdfdfefdfefe000000000110232e10232e10232c10232c10232c01065010250101000007c8078c06ff0000000000004f8b006d0300280307030990098db00b90880991858e08c1810b9190910ac1b8928a0993878a890b9388898908c88191890ac8889289099a818a890b9a88898908d08191890ad08892890802818a095a810a0288890b5a8808d98189890ad9908989095e8289890b5e88898908e18189890ae190898909648289890b648889096e8108e981890b6e880ae99091b9096f828a8f0b6f88918908f0818a890af090898909768289910b76b8918a08f88792910af8888a92097c81898a0b7c09018089890b01888991097f8189920b7f09088089920b088889920c07030307200402000000002f00040070000000290004007000000035000400800000001700000026002800fbb20f0000000f00300000008700020067000a00018000000a0200000b19000050c360ea010910002e001c000200180023000000700070004d010000a0008c003c32321e3c0a020244000400010000003000f4311e000000ff0000008d002007ff00000095003007ffffffff00000085ffffffff04000085ffffffff08000085ffffffff0c000085ffffffff10000085ffffffff14000085ffffffff18000085ffffffff1c000085ffffffff20000085ffffffff24000085ffffffff28000085ffffffff2c000085ffffffff30000085ffffffff34000085ffffffff38000085ffffffff3c000085ffffffff40000085ffffffff44000085ffffffff48000085ffffffff4c000085ffffffff50000085ffffffff54000085ffffffff58000085ffffffff5c000085ffffffff60000085ffffffff64000085ffffffff68000085ffffffff6c0000856f33110a130f0e1210101111140d0d0d09090c0e0f0c0f101a101012120f13160d0e0f110f0a080b0d0a0c0e0c07090c10070d11030b0f1305070a0cfdff0002ff05060500020506fbff0003f9030505fb040704fa010506f5fe00fff3fcfffdeffafafef0f9fafbf600fffeeaf6f8f7effbfefef4f8fb00f3f7f9fd130e00fcf6fcfefeecf5f5f8edf1f3f4f2f5f5f6ebf4f6f7edf6f6f5f1f6f7f6f3f5f8f9f1f2f2f3f8f2f3f2f3f5f2f3ebf4f4f3f3f4f5f6ebf0f1f1eef6f4f4e9f1f2f2e6f3f0f1f700fefbf600fffae8f5f6f6e9f6f4f2f2f5f3f3f4f6f5f5ebf5f4f1e8f5f7f4e1f2f4f3e0f3f8f7e2f5fbfbe4f0f2f2edf2f5f5e1f2f4f4e8eef2f6f5060404e1f3f5f3e9f3f7f8e2eff0f1e2f3f8f9e6f3f6f7e7f5f7f8ecfbfbfaf3ff0000efff00fef0fffffb121102faedfcfcfbe9f9faf7e1f0f3f2e0edf2f2e9f3f7f7dadfe1e2e6edeff0f3f4f5f4e8f3f5f1eaf8fbfaf2f6f9fae8eff5f8eef7fbfdf0f3f4f6f2f5f8faf0fafdfef3fffffef301020405110b06090a0a07ff010406fc060807fd0a0e0efd070808fe0d0d0d02090d0d03060a0a030709070c080a090f070807050607070a0304040cfefeff080001030a0403066f2a0a090f151e20100f0f130f0e0e130c0f13180f1012141011131415171a1a19191716121214130e1216160e0f0e0f0b09080a110e0a0713100b0c09090705070a08080507090a050405070506050502010003030100ff030100fffbf8f6f7fdfcf9fafffffdfcfafaf9f9fdfaf5f3f7f4f3f2fdf9f3f2020100fc00fffefefaf9f9f8fefefcfbfbfdfefef7f9f8f8f9fafdfaf6f6f7f9f4f2f1f3f6f3f3f3fbf8f7f8f2eff0f4f4f1f0eef4f3f1f1f4f5f5f4f6f7f8f9f3f6fafbf2f2f3f3f3f2f2f3f2f1f1f3f7f2efeff7f3efedf6f4f2f0efedebebf4f4f1f0f9fafcfcf0eff2f3f1f3f7f6f3f5f7f5f6f6f5f4f8f5f5f4f0f1f3f6f1f1f2f3f1f0efeff3f2f2f000faf8f6f0efefedf7f6f5f4eff1f2f3f9f7f6f5f7f8f7f5f7f4f2f1f9f9f8f7ff00fffdfbf9f8f8f9f9f9f9f9f9f9f8fafafbfbf7f8f9f9f2f6f8f9f0f0f3f7f7f7f7fae5e7eaebeef0f2f3f3f5f8f8f1f2f9fbf7f5f8fbfbfafcfcfbfdfefcfeff0102fafcfdfcfeff00fefeff00fffffffffe05050503010000000505050408060806040302010c0a08050a0704020d0a06060f0e0e0c0d0e1010080a0a09090d0d0c0a0e111206060507060707070305080a0504040407050303060400032222201e181a1b1a191b19181d21211f16191a1a151717171a1b1b1c17191c1c1211100f161413110e0d0c0e0908080a07080c0f0c0c0d0f0403060a08080c0e0b0c0c0a080605020707060503030405ff00020300030505fbfdfe00fbfcfffffbfbfcfef8f7f7f7f4f4f6f5f5f8fbfdf3fafe01faf9fdfefefefefff8f9faf9f9fafbfdfcfbf9f9f6f8f8f9f6f4f4f6f7f7f5f5f3f5f5f5f5f6f6f5fbfaf7f6f6f7f2f3eceff1f4efeff1f1f5f6f6f5f8f6f5f5fafaf7f6f3f5f3f3f2f4f4f5f2f1f0f1eff3f4f6edf0f3f7eeeff0f2edf2f3f4f1f2f3f3fafaf9f9f2f0eff0f5f1edecf3f2f2eff1ecebedf2efeeeef7f4f2eff3f4f3f1eeeff0f1eeebedeef7f8f8f9ecedeeeef3f3f3f5efedeceff3eeeeeef5f4f3f1f1f2f1f0f6f3f2f1f9f7f8f7f8f9f8f7f6f3f2f1f6f4f2f0fcfbfaf8fafaf6f6f6f3f2f0f8f5f2f0faf8f7f6ecebebeaf6f7f6f4f8f6f7f8faf7f4f4fefcf9f8fbf9f7f5fafaf8f70201fffdfcfcf8f8fdfdfbf9fcfbf8f7fcfaf9f8020200fe01020200040504040705040501010103040303040204040204050303080605050f0d0a08080806060a09080713141311090b0b0b090a0c0d0a0d101105070a0f06060b0f070910151e1b1c1c1a1b1e1d1717171c1d18151318151212151514141b1817181b1a1b1c12141718101114141012100f0e0f0e0f100e0b0a111312100f1010100e0d0d0f0a0a0b0a05090909040406060505060705040507040403030100fdfd00000000fffe0000f6f6f8fbf5f6f9fdfcfaf9f70303fffd00020302fffffffdf8f9fafafbfcfcfff7f5f4f5f7f5f3f3f7f8f8f7f5f4f5f4f3f4f4f3f6f7f5f4f7f9f7f3f2f5f6f6f5f5f6f7f0f2f3f3f4f4f3f5f5f6f6f8f1efefeff1f1f2f1f2f1f1f2f0f0efeef4f3f2f1f8f7f6f4f1eeeef0f2f1f0eff2f2f2f2f7f6f7f8f1f5f7f8eff2f5f6eeeeeef0f0f0f1f2f1f3f5f4f0f2f1f1f2f1f1f2f1f1f2f3efeeecebfafafaf6eff0f0ecf2f1f0efefefeeeff0f2f6f8f1eff0f2eceaedeff3f4f5f4f6f5f5f6f5f3f4f7f3f6f9fbeff0eff1f5f4f6f8f6fafbfcf1f2f3f2f2f1f0f0f7f9fafae9e8e9e9f1f2f3f5fafcfcfbf5f5f3f4f6f6f6f4f5f4f5f3f4f3f0f0fbfafaf8f8fafbf8f9fbfaf9f6f7f8faf9fbfbfafbfcfdffffff000006090a0905050406040507060607090900000104030304060708090906060504060403030708090a100f0d0d090907091111100e110f0a0912100e0e141517141917191a2123241f1d1a17131b1a14101212111011100d0c13110f0e151312121915101019161413141412110e0e0c090e0d0804090b09080d09090b0e0b08050c0a08070605040406050403030100ff03fefcfe0604020002020001fdffff00fffefcfd00fefdfffcf9f6f6fcf8f5f5f7f7f7f7fcfbfcfefffdfcfefaf9fafefafaf9f8fffefefdf7fbfcfaf3f5f6f7f7f8f9f9f5f7f8f8f0f0f2f4f3f2f1f2f2f1f1f3f2efeceff5f3f2f4f1f5f5f8f5f5f8faf8f8f8f8f1f4f6f8efedeff5f1eff0f5eceff2f4f4f6fbfef3f5f7f9f4f5f6f9f0eff1f4f2f1f1f3f7f9fafff8f7f8fbf8f8faf9f3f8fafbf5f7f8faf4f3f7faf0f0f4f7f2f1f0f3f1eeeeeeebedeff0f4f4f8fbebeaeef4f1f4f6faf0f2f4f7faf8f8f9f6f9fbfef2f2f5f7f3f1f2f5f7f8fbfefafafcfdfbfbfcfef4f7fa00f9fcfd01fbfafcfff3f7fcfef1f5f9fffbfcff01ececeef1f4f4f7fbfcfd0202f6fbfdfff4f7fd00f6f8fbfbf1f5fafbf9fcfefef8f8fafbfafcfefffbfcfdfdfbfbfcfc00ffff00ff000100080b0c09080a0d09060709070a0a090808080706080908080b0d0d07070a0f0d050808080a0a0a070d0d0e0e080705050d0c0a06080a09040c0907060f090400150afff91a17140f0f0c090609070809100e0e0c0a0a0c0c080606080f0b07080f0e0c09100e0c090f0c0c0c0707070800feff00060300fe090805030604030306030304040403030200fdfd0000fffcfffdfcfcfffefefe00fffcfafffcf8f8fcf9f7f70000fefcf8f9fcfdf5f5f9fcf7f9fbfdff000101fefefdfefefcfdfff8fbfefffcf8f9fcfaf9fafcf7f8fafafafafcfcf8f9fbfcf8f9f9f9f3f5f6f8f8fafd00f3f7fcfdf7fafcfdf9fcfe00ff000104fafcfe00fbff0000faff0000f9fcff01f7fafe0000000102fbfe0102fc000102fafeff00f6f9fd0003050406fcfcff01f7f8f9fbfcfdfdfefeff00fffe000002fe000101f9fdff00f4f9fe01f2f7fbff00030608f7f9f9fbfbff0101f9f9fbfbf9faf9fdfffdfcfcfafdfefdf8fcff02000304050205080800010203040302010406030201000001000001000203010003030200f3f4f5f4fdfaf9f800faf9fafffefdfb040301fdfafafafafbfaf8f5fffffefbfaf9f8f7fefffffcfd0000fffafbfbfb000000fffffffefd0300fdfd0500000004020000040202040606050409090806060606050703ffff07050203060302020e0a070307050201040202040000020402010103ffff0305f8f9fcff080600fc040200fe060200ff090401ff0a080402070502000703fffd07030201080605010702fefc050100fe0000fffffdfcfcfa020202010102fefd01fffaf70200fefcfefefdfbf9f8f7f8fdfdfcfc00010000fbfcfdfef8fafcfdf9fdfefefeff0001ffff000000000001fdfbfafb010100010102020302020101fffcfbfefffefdfefcf9f6f9faf9fafafcfe0000fdffff00fbff0003fcfeff0100000103fffe00030104050204040202030404060200010301010203000003060204070b010102050306050704050607020405090307090b04080d0d090c0a0b0407080b00050c1001040c0f00030c10050a131802060d1305080f1105090f11000204050b13181bfd0207090305090efd00090f03060a0bfd000407fcff03070304070606080b0e0a0a0d100507070c0102060a02050c1204070e14fe000308fe00020501020505f2f0f0f2f8f9fbfffefdfcfbfbfafaf9fbfcfcfcf9f9f7f6f5f6f9f8fafbfdfef7f7fafcf7f5f7fafdfbfbfbf9fbfcfdfffdfdfdfbf9fbfbfcfbfafbfefbf9f8fefcfaf9030200fd030100fe05060806040302ff000202ff020401fe030201fd010100fe00fffefd0300fffd03fef8f50300fcfa0500fcf700fdf7f1f6f4f5f7fbfbf8f8fffdfaf6fefcfafa00fef9f5fdfaf6f4fcfaf9f901fdf9f7fefaf6f4faf9f6f4fcfaf9f7fcf8f2eef8f6f5f4fef9f6f3f8f5f1eef6f6f7f5fbfcfdfcfaf8f8f8f9fbfafafdfdfbfafefdfbfafefffefdfefbfbfbfdfbfcfe01030505010002020100fefdff020402040706040508090a030a0e0d00040304fefe0004fc000002fcfe01010102010200010104060a09060305060604070a0d06070809010204080307080d080e0f10080c0f0c080e0f0f0b0f0f0e0e111111080c0f110c10131106070a0f0c1114170e1115150c0e10130e1014150e1012131311111211131618151414151613131516171717131311111314131308090d101c1c1f220b090e141317191c131317190e1014190c10161b0d101415080d11151011171a111211120e0f11120f11131314121313161514140c0e0f0d06080a090403080cf4f7faffff000508fe030908fd010504fdfffffff6f8fafbf9fafdfdff000000fdfcfcfdfcfe0000fdfdfcfafcfbfcfcff000200fbf9faf9fcfbf9f9f9f7f6f3f8f7f6f3f9f7f7f8fbf9f7f703fdfbf9fcf8f6f6faf8f7f8faf5f4f4faf5f4f4fbf9f9f9faf7f4f0faf5f1edf6f2eeeaf9f6efeaf4efebeae9e1dcdbfbff00fbf8f9faf8f4f4f6f5faf8f9f6f3f3f3f1f5f5f4f1faf9f6f3f5f4f3f2f2efece8f3f1f0eff2edececeeeceaeaf1eeedebf3f1f2f5eff0f3f6f4f7f9f9faf8f9f8f9f6f7f7f9f7f8f8f8f8f7f8faf9f9fcfbf9fafafcf9f8f9fefaf9f902fefbfe00fdfbfbfcf9fafb00fbfcff020000000807040309050707050607060608090905060809000004090407080a06070a090505070d06080f130d0f14160b0a0c0f0b0c0c101014171a11151a1c0d0d14170f1216180d0e121514171a1c11151b1c14171b1d1313181a1b1a171618161818141517191617191b151817151415141216171a1e1417171b181d1f211718191a14181716161a1c1d1116171825292a2c1c1d19182023201c1b1b1a171d21211e2021201d15161718161415181c1b1c1c121210121210101012100e10110d0a0d13110d0a0d0a0a070703030210100d0a04030100070606060a09070903030405fdfe0003f9fcfd01fbfbf9fb000200fefbfcf9f9fef9f5f6f6f4f3f4fdfdfbfbfefcfafcf8f8f7f8f8f9f8f6f3f2f0eff1eeededf7f5f4f4f4f3eeedf8f3eeecf6f6f3eff8f9f8f4f5f5f2f0f5f3f1eff6f5f0eeedecebeaededeeedebebeaeae9eae9e9ebececeedcdfe4eaf5f0edeaf4f2efeef4f1f2f3f3f3f1f1efeff0efefededecf0eeefefeeeae8ebe5e5e7e9edeae8e8eeefeff0ebeae9eaececeae8f5f4f4f4f4f3f1f1f6f3f1f0f7f7f7f6f7f6f7f7f8f7f6f5f9f8f6f7fe00fefdfbf9f8f7fafafbfdfd0000fe00fffaf7fafbfbfaffff010300fefbfbfffffeff010201000b0803fe0602020008050303090602010907070709090807070401fe0d0d070414110f0f17131315101213151214110e1d1a17101d1b1c1c1a1817181918161419191b1c1e1f211f1d1b1a171e1916181c16131217191a1a1c1c1c1f1c1e1e1c1c1b1b1914171a1d10151a1d1f2123241d25292d252d32311a1b1c1d1617181b1f232626181c1f1f30373c3e1b2327281a1d2021171d21241d2327291b1f2020191a1b1a1c1d1d1c1c1b1818171d1f1e14181a1b101416150f1216160c0f15170404080a04070b0e0c0e0f11000100fe080708060a0a0908060506050505050604060604fe020300fcff0104f9fafafcf6f5f3f3f6f6f6f8fcfbfaf9fdfcfbf9f7f7f9f8f3f1f2f3ebeae7e7edeff0eef4f6f7f5eff1f2eeeaecefeeecebeae8eee9e6e4ebe9e8e7edeae9e7eeece9e7e9e7e9e9eaeaebeceae9e7e7eaeaeaecf1f2f2efedebe9e6eae7e7e6efeeece9f5f2efecf2f0efeef0f0f0efeaecebeaeeeceae9edf0eeebeaeae8e8e9e9e7e6f0efedeaecedecebe8e9ebeaf5f4f4f4f1f2f4f3f1f2f5f7f5f5fafdf6f5f8fcf4f3f7fbf8f7f9fbfefcfaf9f6f7fafdfcfdfcfefafbfc01f6f9fe04fbfc00010200fcfcf9f9fafbfffefefefffffefcfcfcfffc0000020105050402010100020704030306040304fdff02050507090a0b0a09091515120f171614100b0e12120f1012101b1818181717151312131412191615141d191715171515141d201e1a191e1d1a191a1a1b222425221a1a1d1e181c1f1e1e1c19191c191918232122232d2b29262f2f2d2b202324262024232426282a2e1d1e22273c3d3f4527272a2e1f1f1d1e2724211f28272627212324241d201e1e1c1e20221a1d1e1f1e1d1c1f1c1c1d1d131312161817181a1b1e1f1f0f1113101215151314171716feff0001070a0c0e08080c100606090d080a0d1002030306fffd010306070809fcfdfd00f4f4f9fdfafafdfdfafbf9f8f7f7f9f9f5f2f1f1f2edeae9e7e6e5e4edecedecf5f3f1efe9e9e9eaeeeceeede8e8e9e8e6e5e6e6e8e5e6e6e7e7e6e6e7e8eae8ecebe8e6edeceae8e7e6e6e7edeceae8eeedeae7e2e0dedfe6e5e6e6e6e6e9ecececececedecebeaececebecebeeedecebeeeeedebedeeede7eaeae9e7eaeae9e8e8eaeae7e6e7eae9e9eaedf4f4f6f5f3f3f3f3f8f9f9f8fdfdfcfb000100fdfffffffefdfffefdfc0000fd00fffffefeff0001000001040605040802020104feff0103fcfe0005ff04070afcff0308fbfa000500ff000105040302020306060304030204040405050505090a0804040602fefc0a0503040c0704010c0601000d0807061714120e110f0c07110e0b09110e0a0a1514110d1716151116161616181714121a1715141e1915131c1c19141b191818191817171c1b1a17252526272727282828272829211d1b1c2424201e2d2c27282828262346443f3d2c2622211e2223221e21222025252322232120211f212122211d1d1f1e1c1d1d1d1d1e221c1d1d211a1f22251b1d1e1e1d1d1c1d100f0f10110e0f1115141410020304060c0c0c0d12121113101415161212110e080a09070606050609090a070101fefd00fffefdfefbf6f7f9faf9f8f9f8f9fcf2f5f6f8ebeeedeae6e9e9e8ecebecebedefefefe8e8e9e9ebeaeaeae6e8e7e6e5e6e5e5e5e5e6e9e5e3e0e2e7e8e9ece6e9ebedebf0f0f1e9edeeeeeaeef3f3e8ecf3f5dfe2e8ede7e7e6e6e9e7e2e5e9e8e8ebebeff0f1eff4f8f8ebf0f1f4ecf0f1f2eaedeff1e7eaeceee6ebeef1ecf0f1f3eceff0f3eceeeceff2f0eff2f0eeeeeff5f5f4f2fbfcfbf9fbfbf9f8fdfdf9f9fbfbfbfbfafbfbfdfdfefcfefffefbfb0201ff00090703020405050505080a09080b0a080f0d0e0c0a0907080708080b02050709000204060504030400000103030406080a09060305070401fcfefefc0405030201000102fdfcfcfd05060504090806050405060507060404080907040707070a100f0e0e1714141212131414161616151414121212100e0a1714151318181613130f1012231d1a1925201d1c292724221f1b18171f1c1b19292b2c2921201e1c3b393938222224242424241c1f1d1e2023232726211e1e1f23221d1d212223262022201e252524202421211f241e1c1c1f1b1c1d1d1c1f221316171717151615101316170a0d0d0c10100d0d14141111141412100b0a0d10060608090306060606050403fbfdfe00fbfaf9f9f7fafbfdf8fafbfdfcfdfbfef7faf9f8e9eceff1e6e7e9ecebeceeeeedeff1f2e7e9eaede9ebeff2e8edf1f1e6eaedeeebefedede4eaebebeceeedebeceaeae9ebe9eaecedeceaebf0f1f0eff5f5f2f0efefeef0e4e4e5ebe7eaedeeeef0ebe7efeff0f1f8f6fbfdf3f4f3f0f1f0f4f5eff1edebebe9e7e9eeeeedeff0eff2f5f0ededf0ededefeff2f6f7faf0f1f4f7f0eff5f9f6f6fcfdf7f7f8faf8fbfbfcfcfe0000fe01010200030606fd010203020306070405090a0507070209090804080807070f0e0f0f080909070a0a0805090602fc0300fcff0003050805080b0705fef8f8ff000202fdfaf6f4f7f7fc01fdfcfdfe00fef9fbfdfd000201fdfafd0101fdff01fefbfc00fef9fa0003070d0601fcfe0a0300011011121213151112111110141215161607080e141212151a0e0f1016151616151c1a18181f1f1d19221d1a17181716161b1c1c1926201e1c1a14120f3936291a25211e1a1a191d1e22221e1b26211d1d2226251f2125231d231d1a1c1e1b181521201f1f2528292723272724252928242a2b2c281c1d1e1a1f2b30291a1b1f1d0c1521280f151915111212120f10100e10110e0e0d0f0c0a080d0f0f04070d0efffe0004fafafcfffeff00fffdfdfefe0000fefcf9f9fbfbf2f3f5f8eceff0f2efeff0f0f3f4f2f2f0f6f7f5f2f1f3f3f1eeeff2edecebece9e9e5e6e8e7e7e7e8e9ecebeaeaecebecedeeeeeaebececeeeef2f0edeeeeeeefeff0f2ecebeaeaefeeeff1e9eef6f8f2f2f0effbf5f0f0eff1f3f4f4f3f2f1ebf1f1f2ebf1f5f6f1f4f5f5f7f5f3f3f3f6f7f7efeff1f3faf9f9fbf7f6f8fbfbfafafafdfbfbfdfdfdfffffcfdff0100ff00010001030505040404030301000808080a09090d0ffffe030601000407060402020d0a08050808060304060603fbfdffff040808060402000003fffffffafcfe00fffcfcfdf5fafcfe0200ff00fefe0004fafbfd000300fdfe01060a0c02090c0c0005090cfc0002070703050903080e11050a0f12111311111313110f12110e10130f0e0e1614111019130e0d1713100d1515120c1b1b17121815120e191715121918140e1715110b1c1a16140e0d0b080d0603011c18140f1c18130f1c19150d1f1f1d191816100e161211101c1b1c1a17171615201e1a1725231e1a2322221f1f1d1d1d26211f1b1819181a1f1817151c19181927242220100c0d0d131313120d0e10120d0e0e0a090e0c080f100c090f0d0b0a0506030301020303fefd000000fefefffafbfe03fbfbfd01fafbf9f9f3f6f7f7eef0f0f4f3f8fbfdf5f6f7f9f5f7f8f8f4f5f7faf2f7f9fae8eceef2e9eceff4ecebf0f4eaebecf0eeeeeff0ececeef0efebeff1eeeff3f6f3f1f1f2ebe9e7e6f2efefeef9f9f8f8f2f5f4f5f2f4f5f7f4f4f5f6f3f1f1f2f1f1eeedf3f1f0f1f3f4f1f1f5f7f7f8f6f6f5f7f3f5f4f4fbfcfcfdfdfcfaf8fbfcfdfe00010100fffefdff0301000002020403060608070405070700000302080300ff0e09040009090805090a0a0602040504050506060203040502020305000203020709090802020401000001010003070a000307070003080d04090e110b131616080e1114010508091416171311141815101215140d1114130f1013131212121311131211101012121314120e12151411100f0d0a0e0e090310110d040d0c0803060402010a080604050203050f0d08050601000103fffeff0e0602010200ffff00fefaf90b0806050a0a0b0a08040301120907060d0a07020f0c09071712100f120f0a08141311111512110f1a140d0817110e0e15120e0d1918161414111414181714121b1816160a060404100c07040f0a050507050407020103050603030808090a100102050a02030205020102040001010605070c100305070dfaff0106f8fbff01f7faff00fdff0000fafcfcfdfafd0001f9f9fafcf9fcfdfef5f7f8f9f8fcf9f8f7faf9fbf4f7fafaf2f5f7f8f2f5f3f1f3f5f6f7f9f9f6f6f5f5f2f0e7eaeef2eff2f5f6f5f6f7faf5f6f6f8fafefefdf8fafbfcf3f5f5f5eff3f3f3f2f2f2f4f3f4f5f9f9fafcfef8f9fbfbf3f6f6f7ff0000fff8f9fe02feff030400020304fffeff00fffdfbf90100fefc0603030105020000010000fffefdff00fdfdff000200ffff020000000201ff01070908060304030306050304020200ff0705040300fe0002020304060b0a0a090909070313120f0a1213110f1414121117181614090a090b131314141412151413110d0d13110e0e13100b08100c08070d08070611100e0a0c0907060e090501090a06010200fffe010000000000fffcfffdfcfa020000000403010102fffffd00fcfbfc000201000204040401010000fcfdfffe0506070605030204fffdfefc05040303000104050504040009090501060606030e0d0c080c0d0e0d060503010f0d08010c080605110f0a0713100a060f0c0d0e1512111004030000070a0c0a0709080808060504050504050a0a08071213121111121412080b0a0b06090b0908090b0d110e0d0d11131313070c0f100003070a02030404000307090001020202030508ff000204ff00ff00fafbfdfef8f9fafcf9fafcfffbfbfbfcf9fafcfff3f6f9fbf8fafbf9f7f9f9f9f0f2eff1f6fafcfefafe0204fd000202fafcfefffcff0101fe000100f6f8fcfff3f8fe00faff0101fe000000fe000103fe000304f7fafd01fdfbfd0102030306040001050302050902020303fafbfd02fbfafcfe0201010300010000000000ff02050808000204050000fe0002040301030302ff050405030204050604060503fefe00000405090a030504050708080a0d0e0e0e06070708080708080c09090b0f0e0e0d120e0c0c0d0d0b0614130f0a14110b080e0d0d080d0c080408070603080706010502fffc0502fffc0401fdfbfffdfaf7fcf7f6f3fffcf9f3fffaf8f5faf5f1effbfaf8f5fffbf9f5fffdfbf7fcfafbf9fbf9f6f5fcf7f5f60200fdfa0101fffcfcfcf8f60402fffc00fcf9faf9f8f7f6020100fe01fffbf9fefbfbf9fefcfcfa00fdfaf80400fcfa0d08040000fefdfbfefdfdfb0200fefe0402fdfc030101000e0c09050f111112ff0103050c0d0c05060606030406060705070808060708060f0c0a0a100d0a070c0b0b0a0a0707060e0e0d0b0f0f0f0f0f0e0d100f0d0c0d0a06030404030303090b0a0b05070807060606070303020602030608ff0104080004060700020509fdfe040700020407fd000104fafd030afafe050af3f90208fffeffff0301020204020101fefd00020000030600000305010003040203070804060708030508080407080a0406060803040405080a0c0c060804030a0c09070c0d0a0a04020203030505060102030303020002000101030001010205020305060709090105080901040503fdff0203040507080405050600000406000000000b090909050504030b0d0e0e0d0d0c0e090e0c0a080a0907080401000d0c08060c08060602000204080607070607090806030504030302ff020100fffffdfffdfcfdfdfdfbfbfd00f8f8f6f5f5f3f2f2f1eeececf1eeedecf5f5f4f3f1f4f4f3efedededf2f3f2f2f4f0f1f1f3efeff0f4f4f4f1f8f9f8f6f9f9f8f6faf9f6f3f2efeceaf9f6f2f1faf9f8f6f3f2f3f6f8f4f3f7f7f6f6f4f5f2f0eff7f4f2f2f6f5f5f4f9f9f9f6fefaf6f1f9f6f3eff9f8f9f9fcfaf8f7fbfbf9f800fdfaf901fefcfe110f0e0d04010002fffdfcfe00fffefd0706060606030202030200000a090908040100fe0705020107070709090607071111120f121312100c0d0d09080b0d0c070a0e0f090b0d0f0506090e0a0f11120a0f12130d1014130b1014150a0e12160e1012140c0f12140a0f0f10080d0f12111413150e0e0e100d0a0805000102050504060404070c0d0405090d06070907050606080406080c0a09090a0809090a08090a0a0a0e0f0d090d0e0c060606040d0e0c0904040304050707080d0d0b090606090a050405090402030303050506040402020203020105030203070505050706030103020100030201000807050107070604050200010100fffc0a09080a040202040c0603010e0c0808070504050402020000fffe00020202030602fffd02fefbfa0500faf80500fbf801fffefefcf8f8fafbf8f8f9fbf6f6f9fdf9f7f501fffbf6f5f4f3f2f1f0f2f4f0eff0f1edecedf0f3f1f2f3f0eeeeedeef1f3f2f2f4f5f1f1f2f2f1f0f1f1f1eff0f0edf2f2f3f3f3f2f4f7f1f2f2f2ebe9e5e5f1f1eeeef5f4f0f0f3f5f3f2f9fafaf8f4f4f7f6f0f2f1eff1f2f1f0f3f5f5f4f6f6f5f1eff0f0efebe9eaeaf7f6f3f0f7f8f5eff8f8f7f5fafdfdf9020403ff0a0a08060200fcf9fe040404fdfe00000608080603040302ff00020007070705ff01020101050809090a0a08080707070f0e0e0d0c0a0a0a06070a100a090c0f0f0e0d0d0f101010100f0a09101312121414141413121516141211111515141717171616141415141113151515151313161613111011131504050a0f07080807060708080f0f10130d0e0d0e08090b0e090b10100b090709090a090a0b0f100f0908090d0909080f0d0d0f0f060b0e0e0a0c0e1006090c0d080b0e0e090a0c0d0c0f100f0d0d0f0d0404060906060708050707070202030204030404070606050100fffe0000000100010000fefd0001010202030000ff00fcf9fafc0b0a080706050505010000000b0c090707050301000201000203000004050100fefefffcfdfefdf9f9f9f8f8f8f7f9fbfefdfffdfcfdfdfdfbfaf9fafdfcfaf7f4f3f1eff3f1f0eff5f3f2f0f7f6f5f4f1efeef0f2f2eff0f5f2efeeedeceaecf0efefecededebe9eeeae9e5f0eeeceaebeaeaebf1eeececf6f5f2eef1f0eeede3e4e2e1f0f3f2eff0f3f5f5edebebeef7f6f5f6f6f5f4f3edf0f1f1eeeff2f3f2f1f0ededebe8e5edeeeeece7e7e6e7e9e6e6ebe9e8e9e9f2f1efeff3f1efeffcfcf8f302020100f5f5f4f60000ff0000ff000000fefdff00fefcfafefaf9f701fefdfdfefbf9f80602fffe04020100070605030e0c0804080705070f100e0d0f0e0d0a0d0b0d0c10111110080c0e0d100f100f14161615191a191511141412161918171718181711100f12151515161313121111121314151516141312181c060504030a0b0a0713120d0a0e0f11110e111211100e0f100d0f11110d1012120f0f0f1010110f0d1314111013110f0f0f0f0f12131515150d0d0c0c0e0e0e0e0d1011100b09090a0908090c0909080c07040206040404030000020403020101040505040006070602020100ff0001020406090907090a0903070a0900040402070502000300fffd0101010003020101fffffdfd0000ff0000fffdfd00020100fcff0203f7f9f9f8f9fbfaf9fdfefbf9fbf9f9fbfcfaf8f8f9fcfbfcf7f6f6f7eeeeeef0eceef1f6eef0f3f4f6f9faf8f4f8f7f6f1f4f8f7f2f7f8f7eef2f4f3eceaeae9e7e8eaeae8e9edeceaeaeae9ebeaeaeaebebecedeae7e7e9edececece1e4e8e8eeeaebecf4f0efefefeeedeef3efececf0edebecefeeecebefecebeceaebeef0e5eaeef3eaeaedeee8e8e8e8ececedeee8e6e6e6edebeaecefefedecf0f1f2f3fefbfafbf6f4f4f4fefcf9f8fdf9f8fa00fffdfcf9f6f7f5f8f8f9f7fefefcfcf7f6f6f5fdfdfefe0102020001fffefc04060707080808070a0a0a0d0a090a090d0f100d0d0b0e0f090b0f110f11121413120f0f12101011111311101311100f1614131112120f0f161412101313131314141313110e0c0d201f1d1b070c1011070608080a0b0b0b120f0a08100f0d080f0e0e0f11110f0e110e0c0c0b0806080a0806070d0907030e0d0c0a12120d0813110e0a0a0807060a0905040b060200050200ff08030000080500fe070807060202020200fdfcfd010000010201020201000000fbfafc0000fdfefe060502010502030306020000fffcf9f60000fcfbfdfaf8f6fefcfaf8fffdfbfcf9f8f6f8fefcfaf9fcfbfaf8fffdfdf9fffdf9f8f5f5f6f8f5f4f3f4f7f6f6f5fbfafafbf6f5f7f8faf8f9f9f7f7f8f9f3f2f1f0f8f8f8f8f3f2f4f8f6f3f4f4f3f1f0f0f3f1f3f5f4f3f6f7f1eeeff0e9eaeef0e9ebeef3ebeaeaebeaedeff1ededededefeff1f3edf1f4f7eef0f1f3e7e5e4e4eff1f3f0f1f4f4f4f0f0eeebeff2f2f2eff1f3f3ebebecedeef0f1f0f3f3f4f2f4f4f4f2eeedeff2e8e8eaebf1f2f3f3eaedf0efecedeeefedeff1f0f5f6f7f8fe00fffff7f7f8f8faff0101fbfbfaf9fcfcfbfaf7fbfdfef8f9fbfdfe000000f8fc0001ff01030302030402ff03060707070709080a090a101112120a0d0f100b090b0c0f0f1011100e0a0b130f0c0a0e0f0e0e121312100e0e0e0d10121314131313100d0e0d0a1113141212110f0e12100d0c0d0d0d101510090e1113151206090c0c0b0d10100a0e111107070c100f1011140e0f0f0e0c0d0d0a0a0d0e0a08090807000001030703010404010002070201030504040602030306ff000206000304030000ff00fbfcfe000402030201010203fcfbf8fbfffdfcfc0200fffe00fefbfb0200ffff00fefdfdfefcfcff0402010000fffffef3f2f2f5fcfe0000f8fafafaf8f5f6f7fdfffffef9fbfcfbf7f7f8f9f6f6f7f8f7f3f5f7f5f3f4f6f7f7f5f6f6f4f5f4f4f4f5f8fbfbfafafafbfbf9f8f9fafbf9f7fafdf2f3f5f8f6f6f6f7fafbfaf9f6f7f9faf2f5f6f8f6f7f7f7f9fcfcfaf1f4f4f0f4f7f5f3f5f3f1efedeeededf1efeeeef0f1f4f6f4f4f4f6f7f6f4f3f4f2efede2e0dee0eeedededf4f4f2f1eae8e9eaf1f1efeef3f3f2f1ededecedefedeceaf2f0eeebefebe9eaf4f3f0efededeae7f1ede9e7edecece9f1f0eeedeeebeceffcfbf8f4ff00fffff6f6f4f30000fffef8f9fafaf7f8fbfffdfeff00fffffffc020300ff020200fe040301fe00fffefe070603000806030008070505110f0e0d100f0d0a0b0807081313110e0c0c0a07090a0c0d0f100e0d1010100c0a0b09091111100d0e101110090b0e0f0f0f10110e1111130d0f13161619191a151a1f240b090a0e0908090a100c09070f0b080614120f0a13120f0e0e0f0f0f090808070805050306050405050607050504020205060604070a0a06060300fe060400ff060302010302010002040201010305050100010101ffff00fefdfafafdfdfcfbfefdfefdff0000fc00fefcf9fdfefdfc0204030300010301feff0101fbfdfefc00fefcfbfafcfcfbfbfcfdfefefcfbfbfbf8f7f7f8f8f8f9f7f5f6f6fbfaf8f8fafcfdfef7fafafaf7fafbfcf9fafcfdfafaf9f8f7f5f4f3fcf9f8f8fbf8f5f5f8f4f1eff9f8f5f3f9f9f6f2fafdfefffafdfdf9f6f7f7f6f7f8f8fbedeff5f8f2f4f6faf3f8fcfff0f6f9fbeff0f1f2f6f4f3f4f8f9fbfaf3f4f8f8eff2f6f8e3e7eaeaedeeeff0f2f3f4f4eeefefefeeeff0f2eeefeff0eeefefeceaeaebeae9e9ebece9ebeef0e9eaebf0e5e5e6e7e9ebefede6e5e5e8ecedeceeeeeeefeef4f5f4f4ff000000f4f6f8f7fcfbfcfdfafcfd0000000001fefdfe00fcfdff00feff0002f9f8fafefcfcfe00fefe0000fefdff01ff010304060706050b0807070707080b090a0a0a0c0d0d0b050506070c0c0b0d090807090908090a080a0a090907070a0c0b0e0f0e0e10101011111212121314181918191a1a171427231d150e0e0b05090803000808070505060605070402010a0906040c09070409060401040302010505040306060706040506050101020203010203ffffffff00fffefc0201ffff0001000000ff00fe0301ffff0203030202060403fafbfe00fe000403fe000407fbfdfd01fafcfe00fbfcfbfd0301010200fdfe01fdfbfafdfaf6f6f7fcfdff00fafbfe00fffffefffcfc0001f9fcfdfef9fafafafbfcfcfaf9fbfbfbfcfcfbfbf9f8f9f9fbfcfbfbfcfbf9f8f7f9fcfdf3f6f8f9f8f7f9faf6f8f8f9f1f1f2f2f3f4f3f1f2f5f7f5fdfbf6f2f4f1f0f0f5f6f8f6fbfafaf9f8f6f5f5fbfdfdfeffffff02faf8f8faf4f3f4f6f4f5f6f8f9f8f7f8fbfbf9f9f8f7f7f8e9e7e7e7f3f5f4f4f7f9f9fbf0f0f2f3f3f5f6f8f1f3f3f4e9eaedefeaedf0f3eef0f0f1f2f2f1f0f5f6f3eee8ebebebedececedebedeceef1f2f0f0edecedeef5f7f8fafffe0001f7f7f9fa00010201010101000100feff02010002fdfeff0105040301000302ff00020305010205070406080a06080a0e07070706090a0d0a0a0707050906040009090706060706060b0a08070c0908090a090809080607070a0807080d0a090b0e07050610101112161819171b1b1b1914161717171a1a1bfff8f5f7fbf8f5f301fffdf90200fdfc000000000100000001ff00000000fefc0101fffc030402ff050603010404030202030201020202020000fffdfcfdfeffff000000fefefcfdfffffffe000000ff02030303020305040000fffe02000001090808070104050501010303000405040505050403040404ff010102f9fcfbf902020200020404020000fefe03000000fffefbfefafafbfcfbfcfefefd000203fe000203fafafdfffbfdfdfdf8fbfe01fdfe0000fc000101fcfcff00faf9fcfff4f8fafcf2f5f8f9f2f3f7fbf1f3f7f9eff1f1f3f5f2f4f5fafcfdfef6f8fbfefdfefe00040301fffbfaf9faf7f9f8f9fafbfdfbfafcfcfcfbfbfdfcf5f4f4f6e4e3e3e7f3f3f2f1fcfffefaf5f7f8f6f9f9fafaf8f8f8f6f0eff0f1f4f5f5f4f4f6f7f8eff0f3f6ebecf0f3ebebebedf0f1f1f1f1f4f3f4f3f7f8f9f1f2f4f7fbfafcfd04050608f9f8f8fb010000ff00fefefdfefefeff0100ff000304040303050506fcfdff0005020103060607090a090a090f0e090804040407070403030402000000fefcfc060401fe05030201060606060a070707090707090707080a090707090a08090b0809090a100f0d0d130f0e0f15141213171615141e231b15fafdfaf8f1f1f1f0f7f4f2f3faf9f7f800fefbfa00fdf9f7fdfaf7f6faf8f7f8faf6f5f6fbf8f7f8fffefcfcfefbfafbfefcfbfb03020100fcfcfdfffdfdffffff000202ff000002feff0000ffff000001000000030202020000000003030302080809050404050400ff020602000305060807050608080701010202f7f9fc00ffffff0100fdfcfefdff00ff0306040400050404fe000203fdff01010506060503060605fffffe00fefeff0000fdfbfb00000002000103030102030200020303fbfcfd00fbfdfe00fcff0102fd000001f6fbfcfaf8fafbfafefefefefffefcfb00000001fffcfefefbfbfcfaf8f6f8f9faf9f9f9fcfdfcfbfdfbf9fbf8f9f9f9e9eae9e9eef1f2f4f8faf9fbf7f7f9f8fdff00fef6f9fdfef4f6f7f7f4f5f8fbf8f8fafdf9fbfcfbf6f7f9fbf1f2f2f2f2f7f8f9f3f3f4f4f9f7f8f7f8f8f7f6fdfdfdff08080707fe00fffd0100030500010303000404050001020403050304080b0d0d0205080906090b0e0c0f12130e1116140a0f1110070808080505050501fffdfcfcfcfbfbfcfcfbfd0000fefb0603fffd070403040a0705060a0607080a07070a0e0a08090a0906050d0d0a0a0d0a080813100b08110d08060e0a07074300cc000f0000009b9a999796959392918f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d6b6a696766656362615f5e5d5b5a595756555251504e4d4c4a49484645444241403e3d3c3a39383635343231302e2d2c2a29282625242221201e1d1c1a19181615141211100e0d0c0a0908060d7200000ca3100b12208ea21c83d44cd3235915656118a66dd95469d45551d72549d19265d0756d9de6791d3569d9e67999d451228871dec66dd7b6695cb769d5453918f65094f45496c631cc645dd7d43845911800a130 ''') prg.dump_all(enroll_from_logs)