From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Duffek To: kevinb@cygnus.com Cc: gdb-patches@sourceware.cygnus.com Subject: Re: [PATCH RFC] Make GNU/Linux/PPC port work again Date: Sun, 30 Jul 2000 21:32:00 -0000 Message-id: <200007310436.e6V4a5Q09877@rtl.cygnus.com> References: <1000719220642.ZM16166@ocotillo.lan> X-SW-Source: 2000-07/msg00370.html On 19-Jul-2000, Kevin Buettner wrote: >I'd appreciate it if those of you (hi Nick!) affected by this code >would test it before I commit this patch. I don't see any regressions on AIX after applying your change plus the attached patch, which is needed because CORE_ADDR is 64 bits on AIX. Nick Index: gdb/ppc-linux-tdep.c =================================================================== diff -up gdb/ppc-linux-tdep.c gdb/ppc-linux-tdep.c --- gdb/ppc-tdep.h Sun Jul 30 23:54:53 2000 +++ gdb/ppc-tdep.h Sun Jul 30 23:53:02 2000 @@ -20,7 +20,7 @@ Boston, MA 02111-1307, USA. */ /* From ppc-linux-tdep.c... */ -unsigned long ppc_linux_frame_saved_pc (struct frame_info *fi); +CORE_ADDR ppc_linux_frame_saved_pc (struct frame_info *fi); void ppc_linux_init_extra_frame_info (int fromleaf, struct frame_info *); int ppc_linux_frameless_function_invocation (struct frame_info *); void ppc_linux_frame_init_saved_regs (struct frame_info *); @@ -31,7 +31,7 @@ int ppc_linux_memory_remove_breakpoint ( /* From rs6000-tdep.c... */ -unsigned long rs6000_frame_saved_pc (struct frame_info *fi); +CORE_ADDR rs6000_frame_saved_pc (struct frame_info *fi); void rs6000_init_extra_frame_info (int fromleaf, struct frame_info *); int rs6000_frameless_function_invocation (struct frame_info *); void rs6000_frame_init_saved_regs (struct frame_info *); Index: gdb/ppc-linux-tdep.c =================================================================== diff -up gdb/ppc-linux-tdep.c gdb/ppc-linux-tdep.c --- gdb/ppc-linux-tdep.c Sun Jul 30 23:53:20 2000 +++ gdb/ppc-linux-tdep.c Sun Jul 30 23:53:02 2000 @@ -310,7 +310,7 @@ ppc_linux_skip_trampoline_code (CORE_ADD /* The rs6000 version of FRAME_SAVED_PC will almost work for us. The signal handler details are different, so we'll handle those here and call the rs6000 version to do the rest. */ -unsigned long +CORE_ADDR ppc_linux_frame_saved_pc (struct frame_info *fi) { if (fi->signal_handler_caller) >From ac131313@cygnus.com Mon Jul 31 06:46:00 2000 From: Andrew Cagney To: Stephane Carrez Cc: gdb-patches@sourceware.cygnus.com Subject: Re: [Patch 6/7]: 68HC11 port of gdb (sim-misc single step fix) Date: Mon, 31 Jul 2000 06:46:00 -0000 Message-id: <398582F2.10810C5C@cygnus.com> References: <39568A82.A0B2BFEB@free.fr> <3980227F.A6FC263B@cygnus.com> <3982002E.1F34EFF9@worldnet.fr> X-SW-Source: 2000-07/msg00371.html Content-length: 1646 > > > diff -Nrup --exclude-from=gdb-exclude.lst /src/gnu/cygnus/gdb/sim/common/sim-resume.c gdb/sim/common/sim-resume.c > > > --- /src/gnu/cygnus/gdb/sim/common/sim-resume.c Mon Jul 12 13:14:09 1999 > > > +++ gdb/sim/common/sim-resume.c Mon Feb 21 09:00:23 2000 > > > @@ -51,8 +51,6 @@ sim_resume (SIM_DESC sd, > > > sim_events_deschedule (sd, engine->stepper); > > > engine->stepper = NULL; > > > } > > > - if (step) > > > - engine->stepper = sim_events_schedule (sd, 1, has_stepped, sd); > > > > > > sim_module_resume (sd); > > > > > > @@ -69,6 +67,9 @@ sim_resume (SIM_DESC sd, > > > sim_events_preprocess (sd, last_cpu_nr >= nr_cpus, next_cpu_nr >= nr_cpus); > > > if (next_cpu_nr >= nr_cpus) > > > next_cpu_nr = 0; > > > + > > > + if (step) > > > + engine->stepper = sim_events_schedule (sd, 1, has_stepped, sd); > > > > > > /* Only deliver the siggnal ]sic] the first time through - don't > > > re-deliver any siggnal during a restart. */ > > > > Note the comment about siggnals[sic]. > > > > Andrew > > ssignal does not seem to be ever used. It seemed to be ignored in most > simulators (and in sim_engine_run). >From memory, siggnal will be non-zero, if, from the GDB cli, someone enters: (gdb) signal NNNN Most simulators ignore it because most don't allow trapping of system interrupts. > I don't reach that point anyway when the problem occurs. I don't return > from 'sim_events_preprocess' because it calls 'sim_engine_halt' that longjumps > to return (due to single step event we just scheduled). What about a sim_engine_restart()? Andrew >From taylor@cygnus.com Mon Jul 31 07:56:00 2000 From: David Taylor To: gdb-patches@sourceware.cygnus.com Subject: [BUG] print_address_numeric Date: Mon, 31 Jul 2000 07:56:00 -0000 Message-id: <200007311455.KAA22560@texas.cygnus.com> X-SW-Source: 2000-07/msg00372.html Content-length: 3370 In printcmd.c (print_address_numeric), we find the lines: int ptr_bit = TARGET_PTR_BIT; if (ptr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) addr &= ((CORE_ADDR) 1 << ptr_bit) - 1; print_longest (stream, 'x', use_local, (ULONGEST) addr); This code has a bug, namely it assumes that addresses and pointers are the same size. [address == gdb representation; pointer == target representation] For some processors they are different. For the d10v and at least one other processor, the size of a pointer is 2 bytes, but the size of an address is 4 bytes. I propose the creation of a new macro TARGET_ADDR_BIT, the addition of the lines: #if !defined(TARGET_ADDR_BIT) #define TARGET_ADDR_BIT TARGET_PTR_BIT #endif to defs.h, and that the above lines of print_address_numeric be changed to: int addr_bit = TARGET_ADDR_BIT if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) addr & ((CORE_ADDR) 1 << ptr_bit) - 1; print_longest (stream, 'x', use_local, (ULONGEST) addr); Comments? Andrew, Is this: taylor@texas 266: cvs diff -c gdbarch.sh Index: gdbarch.sh =================================================================== RCS file: /cvs/cvsfiles/devo/gdb/gdbarch.sh,v retrieving revision 2.61 diff -c -r2.61 gdbarch.sh *** gdbarch.sh 2000/07/24 15:26:48 2.61 --- gdbarch.sh 2000/07/31 14:43:23 *************** *** 276,281 **** --- 276,282 ---- # v:1:TARGET_BFD_VMA_BIT:int:bfd_vma_bit::::8 * sizeof (void*):TARGET_ARCHITECTURE->bits_per_address::0 v:1:TARGET_PTR_BIT:int:ptr_bit::::8 * sizeof (void*):0 + v:1:TARGET_ADDR_BIT:int:addr_bit::::8 * sizeof (void*):0:gdbarch->ptr_bit #v:1:TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):0 v:1:TARGET_SHORT_BIT:int:short_bit::::8 * sizeof (short):0 v:1:TARGET_INT_BIT:int:int_bit::::8 * sizeof (int):0 *************** *** 471,483 **** /* This file was created with the aid of \`\`gdbarch.sh''. ! The bourn shell script \`\`gdbarch.sh'' creates the files \`\`new-gdbarch.c'' and \`\`new-gdbarch.h and then compares them against the existing \`\`gdbarch.[hc]''. Any differences found being reported. If editing this file, please also run gdbarch.sh and merge any ! changes into that script. Conversely, when makeing sweeping changes to this file, modifying gdbarch.sh and using its output may prove easier. */ --- 472,484 ---- /* This file was created with the aid of \`\`gdbarch.sh''. ! The Bourne shell script \`\`gdbarch.sh'' creates the files \`\`new-gdbarch.c'' and \`\`new-gdbarch.h and then compares them against the existing \`\`gdbarch.[hc]''. Any differences found being reported. If editing this file, please also run gdbarch.sh and merge any ! changes into that script. Conversely, when making sweeping changes to this file, modifying gdbarch.sh and using its output may prove easier. */ the appropriate change to make to gdbarch.sh? [The intent is to have the multi-arch default value be the same as the non multi-arch default value -- namely, the value of TARGET_PTR_BIT. So, it starts out as 0, and if the architecture specific code doesn't change it to something else, then the multi-arch machinery changes it to the value of gdbarch->ptr_bit (and does so AFTER the POSTDEFAULT processing has already occurred for ptr_bit).] David >From ezannoni@cygnus.com Mon Jul 31 09:09:00 2000 From: Elena Zannoni To: Andrew Cagney Cc: Elena Zannoni , gdb-patches@sourceware.cygnus.com Subject: Re: [PATCH] Multiarch DO_REGISTERS_INFO Date: Mon, 31 Jul 2000 09:09:00 -0000 Message-id: <14725.42159.103429.532652@kwikemart.cygnus.com> References: <14721.56903.448617.375558@kwikemart.cygnus.com> <3982464D.92825908@cygnus.com> X-SW-Source: 2000-07/msg00373.html Content-length: 7966 Andrew Cagney writes: > Elena Zannoni wrote: > > > > OK to commit? > > New patch. [Note some extra diffs for gdbarch.c, due to protoizing the generated file, as opposed to the .sh file.] Elena Index: gdbarch.c =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.c,v retrieving revision 1.33 diff -c -u -p -r1.33 gdbarch.c --- gdbarch.c 2000/07/30 01:48:25 1.33 +++ gdbarch.c 2000/07/31 16:03:21 @@ -161,6 +161,7 @@ struct gdbarch gdbarch_register_virtual_size_ftype *register_virtual_size; int max_register_virtual_size; gdbarch_register_virtual_type_ftype *register_virtual_type; + gdbarch_do_registers_info_ftype *do_registers_info; int use_generic_dummy_frames; int call_dummy_location; gdbarch_call_dummy_address_ftype *call_dummy_address; @@ -296,6 +297,7 @@ struct gdbarch startup_gdbarch = 0, 0, 0, + 0, generic_get_saved_register, 0, 0, @@ -381,6 +383,7 @@ gdbarch_alloc (const struct gdbarch_info gdbarch->register_bytes = -1; gdbarch->max_register_raw_size = -1; gdbarch->max_register_virtual_size = -1; + gdbarch->do_registers_info = do_registers_info; gdbarch->use_generic_dummy_frames = -1; gdbarch->call_dummy_start_offset = -1; gdbarch->call_dummy_breakpoint_offset = -1; @@ -523,6 +526,7 @@ verify_gdbarch (struct gdbarch *gdbarch) if ((GDB_MULTI_ARCH >= 2) && (gdbarch->register_virtual_type == 0)) internal_error ("gdbarch: verify_gdbarch: register_virtual_type invalid"); + /* Skip verify of do_registers_info, invalid_p == 0 */ if ((GDB_MULTI_ARCH >= 1) && (gdbarch->use_generic_dummy_frames == -1)) internal_error ("gdbarch: verify_gdbarch: use_generic_dummy_frames invalid"); @@ -869,6 +873,13 @@ gdbarch_dump (struct gdbarch *gdbarch, s "REGISTER_VIRTUAL_TYPE(reg_nr)", XSTRING (REGISTER_VIRTUAL_TYPE (reg_nr))); #endif +#if defined (DO_REGISTERS_INFO) && GDB_MULTI_ARCH + /* Macro might contain `[{}]' when not multi-arch */ + fprintf_unfiltered (file, + "gdbarch_dump: %s # %s\n", + "DO_REGISTERS_INFO(reg_nr, fpregs)", + XSTRING (DO_REGISTERS_INFO (reg_nr, fpregs))); +#endif #ifdef USE_GENERIC_DUMMY_FRAMES fprintf_unfiltered (file, "gdbarch_dump: USE_GENERIC_DUMMY_FRAMES # %s\n", @@ -1466,6 +1477,13 @@ gdbarch_dump (struct gdbarch *gdbarch, s (long) current_gdbarch->register_virtual_type /*REGISTER_VIRTUAL_TYPE ()*/); #endif +#ifdef DO_REGISTERS_INFO + if (GDB_MULTI_ARCH) + fprintf_unfiltered (file, + "gdbarch_dump: DO_REGISTERS_INFO = 0x%08lx\n", + (long) current_gdbarch->do_registers_info + /*DO_REGISTERS_INFO ()*/); +#endif #ifdef USE_GENERIC_DUMMY_FRAMES fprintf_unfiltered (file, "gdbarch_dump: USE_GENERIC_DUMMY_FRAMES = %ld\n", @@ -2483,6 +2501,23 @@ set_gdbarch_register_virtual_type (struc gdbarch->register_virtual_type = register_virtual_type; } +void +gdbarch_do_registers_info (struct gdbarch *gdbarch, int reg_nr, int fpregs) +{ + if (gdbarch->do_registers_info == 0) + internal_error ("gdbarch: gdbarch_do_registers_info invalid"); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_do_registers_info called\n"); + gdbarch->do_registers_info (reg_nr, fpregs); +} + +void +set_gdbarch_do_registers_info (struct gdbarch *gdbarch, + gdbarch_do_registers_info_ftype do_registers_info) +{ + gdbarch->do_registers_info = do_registers_info; +} + int gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch) { @@ -3693,7 +3728,8 @@ init_gdbarch_data (struct gdbarch *gdbar data-pointer. */ void * -gdbarch_data (struct gdbarch_data *data) +gdbarch_data (data) + struct gdbarch_data *data; { if (data->index >= current_gdbarch->nr_data) internal_error ("gdbarch_data: request for non-existant data."); @@ -4085,7 +4121,7 @@ disassemble_info tm_print_insn_info; extern void _initialize_gdbarch (void); void -_initialize_gdbarch (void) +_initialize_gdbarch () { struct cmd_list_element *c; Index: gdbarch.h =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.h,v retrieving revision 1.26 diff -c -u -p -r1.26 gdbarch.h --- gdbarch.h 2000/07/27 04:01:24 1.26 +++ gdbarch.h 2000/07/31 16:03:22 @@ -389,6 +389,20 @@ extern void set_gdbarch_register_virtual #endif #endif +/* Default (function) for non- multi-arch platforms. */ +#if (!GDB_MULTI_ARCH) && !defined (DO_REGISTERS_INFO) +#define DO_REGISTERS_INFO(reg_nr, fpregs) (do_registers_info (reg_nr, fpregs)) +#endif + +typedef void (gdbarch_do_registers_info_ftype) (int reg_nr, int fpregs); +extern void gdbarch_do_registers_info (struct gdbarch *gdbarch, int reg_nr, int fpregs); +extern void set_gdbarch_do_registers_info (struct gdbarch *gdbarch, gdbarch_do_registers_info_ftype *do_registers_info); +#if GDB_MULTI_ARCH +#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DO_REGISTERS_INFO) +#define DO_REGISTERS_INFO(reg_nr, fpregs) (gdbarch_do_registers_info (current_gdbarch, reg_nr, fpregs)) +#endif +#endif + extern int gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch); extern void set_gdbarch_use_generic_dummy_frames (struct gdbarch *gdbarch, int use_generic_dummy_frames); #if GDB_MULTI_ARCH Index: gdbarch.sh =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.sh,v retrieving revision 1.32 diff -c -u -p -r1.32 gdbarch.sh --- gdbarch.sh 2000/07/27 04:01:24 1.32 +++ gdbarch.sh 2000/07/31 16:03:22 @@ -314,6 +314,7 @@ v:2:MAX_REGISTER_RAW_SIZE:int:max_regist f:2:REGISTER_VIRTUAL_SIZE:int:register_virtual_size:int reg_nr:reg_nr::0:0 v:2:MAX_REGISTER_VIRTUAL_SIZE:int:max_register_virtual_size::::0:-1 f:2:REGISTER_VIRTUAL_TYPE:struct type *:register_virtual_type:int reg_nr:reg_nr::0:0 +f:2:DO_REGISTERS_INFO:void:do_registers_info:int reg_nr, int fpregs:reg_nr, fpregs:::do_registers_info::0 # v:1:USE_GENERIC_DUMMY_FRAMES:int:use_generic_dummy_frames::::0:-1 v:2:CALL_DUMMY_LOCATION:int:call_dummy_location::::0:0 Index: infcmd.c =================================================================== RCS file: /cvs/src/src/gdb/infcmd.c,v retrieving revision 1.9 diff -c -u -p -r1.9 infcmd.c --- infcmd.c 2000/07/30 01:48:25 1.9 +++ infcmd.c 2000/07/31 16:03:22 @@ -72,10 +72,6 @@ static void detach_command (char *, int) static void interrupt_target_command (char *args, int from_tty); -#if !defined (DO_REGISTERS_INFO) -static void do_registers_info (int, int); -#endif - static void unset_environment_command (char *, int); static void set_environment_command (char *, int); @@ -1444,12 +1440,8 @@ char *gdb_register_names[] = REGISTER_NA lots of regs), or there is an existing convention for showing all the registers, define the macro DO_REGISTERS_INFO(regnum, fp) to provide that format. */ - -#if !defined (DO_REGISTERS_INFO) -#define DO_REGISTERS_INFO(regnum, fp) do_registers_info(regnum, fp) - -static void +void do_registers_info (int regnum, int fpregs) { register int i; @@ -1552,7 +1544,6 @@ do_registers_info (int regnum, int fpreg printf_filtered ("\n"); } } -#endif /* no DO_REGISTERS_INFO. */ void registers_info (char *addr_exp, int fpregs) Index: inferior.h =================================================================== RCS file: /cvs/src/src/gdb/inferior.h,v retrieving revision 1.10 diff -c -u -p -r1.10 inferior.h --- inferior.h 2000/07/24 14:29:23 1.10 +++ inferior.h 2000/07/31 16:03:23 @@ -186,6 +186,8 @@ extern void resume (int, enum target_sig /* From misc files */ +extern void do_registers_info (int, int); + extern void store_inferior_registers (int); extern void fetch_inferior_registers (int); >From ezannoni@cygnus.com Mon Jul 31 09:26:00 2000 From: Elena Zannoni To: gdb-patches@sources.redhat.com Subject: [PATCH] Misc compiler errors Date: Mon, 31 Jul 2000 09:26:00 -0000 Message-id: <14725.43161.689376.990906@kwikemart.cygnus.com> X-SW-Source: 2000-07/msg00374.html Content-length: 2002 Just checked in. A couple of things that came about after the protoization: 2000-07-31 Elena Zannoni * sh-tdep.c (sh_push_arguments): Make header match prototype. * remote-e7000.c (e7000_start_remote): Use void *, not char * as parameter to avoid compiler warning. (fetch_regs_from_dump): Call get_hex() with the correct number of parameters. Index: sh-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sh-tdep.c,v retrieving revision 1.13 diff -c -u -p -r1.13 sh-tdep.c cvs server: conflicting specifications of output style --- sh-tdep.c 2000/07/30 01:48:27 1.13 +++ sh-tdep.c 2000/07/31 16:21:06 @@ -920,8 +920,8 @@ sh_pop_frame (void) to R7. */ static CORE_ADDR -sh_push_arguments (int nargs, value_ptr *args, CORE_ADDR sp, - unsigned char struct_return, CORE_ADDR struct_addr) +sh_push_arguments (int nargs, struct value **args, CORE_ADDR sp, + int struct_return, CORE_ADDR struct_addr) { int stack_offset, stack_alloc; int argreg; Index: remote-e7000.c =================================================================== RCS file: /cvs/src/src/gdb/remote-e7000.c,v retrieving revision 1.6 diff -c -u -p -r1.6 remote-e7000.c cvs server: conflicting specifications of output style --- remote-e7000.c 2000/07/30 01:48:26 1.6 +++ remote-e7000.c 2000/07/31 16:22:15 @@ -562,7 +562,7 @@ or \t\ttarget e7000 pc\n"); /* Stub for catch_errors. */ static int -e7000_start_remote (char *dummy) +e7000_start_remote (void *dummy) { int loop; int sync; @@ -895,7 +895,7 @@ fetch_regs_from_dump (nextchar, want) } store_signed_integer (buf, REGISTER_RAW_SIZE (regno), - (LONGEST) get_hex (&thischar, nextchar)); + (LONGEST) get_hex (&thischar)); supply_register (regno, buf); break; } >From scottb@netwinder.org Mon Jul 31 09:30:00 2000 From: Scott Bambrough To: GDB Patches Mail List Subject: RFC: changes to configure.in and configure Date: Mon, 31 Jul 2000 09:30:00 -0000 Message-id: <3985A85C.C246C623@netwinder.org> X-SW-Source: 2000-07/msg00375.html Content-type: multipart/mixed; boundary="----------=_1583534355-29877-16" This is a multi-part message in MIME format... ------------=_1583534355-29877-16 Content-length: 601 Hello, I noticed last week that gdbserver was not building on my ARM Linux box automatically even though it was specified in configdirs in configure.tgt. It seems none of the modifications to configdirs in configure.tgt were being applied. I'd like to apply the following patch to configure.in which fixes this problem if no on has any objections. The changes to configure are the diffs after configure was regenerated using autoconf 2.13 as Andrew suggested. Scott -- Scott Bambrough - Software Engineer REBEL.COM http://www.rebel.com NetWinder http://www.netwinder.org gdbconfig.patch ------------=_1583534355-29877-16 Content-Type: text/x-diff; charset=us-ascii; name="gdbconfig.patch" Content-Disposition: inline; filename="gdbconfig.patch" Content-Transfer-Encoding: base64 Content-Length: 144652 SW5kZXg6IGdkYi9jb25maWd1cmUNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2NvbmZpZ3VyZSx2DQpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMzgNCmRpZmYgLXUgLXAgLXIxLjM4IGNvbmZp Z3VyZQ0KLS0tIGNvbmZpZ3VyZQkyMDAwLzA3LzI3IDA0OjAxOjI0CTEuMzgN CisrKyBjb25maWd1cmUJMjAwMC8wNy8zMSAxNTo1OTo1OA0KQEAgLTczLDcg KzczLDYgQEAgcHJvZ3JhbV9zdWZmaXg9Tk9ORQ0KIHByb2dyYW1fdHJhbnNm b3JtX25hbWU9cyx4LHgsDQogc2lsZW50PQ0KIHNpdGU9DQotc2l0ZWZpbGU9 DQogc3JjZGlyPQ0KIHRhcmdldD1OT05FDQogdmVyYm9zZT0NCkBAIC0xODgs NyArMTg3LDYgQEAgQ29uZmlndXJhdGlvbjoNCiAgIC0taGVscCAgICAgICAg ICAgICAgICAgIHByaW50IHRoaXMgbWVzc2FnZQ0KICAgLS1uby1jcmVhdGUg ICAgICAgICAgICAgZG8gbm90IGNyZWF0ZSBvdXRwdXQgZmlsZXMNCiAgIC0t cXVpZXQsIC0tc2lsZW50ICAgICAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5n Li4uJyBtZXNzYWdlcw0KLSAgLS1zaXRlLWZpbGU9RklMRSAgICAgICAgdXNl IEZJTEUgYXMgdGhlIHNpdGUgZmlsZQ0KICAgLS12ZXJzaW9uICAgICAgICAg ICAgICAgcHJpbnQgdGhlIHZlcnNpb24gb2YgYXV0b2NvbmYgdGhhdCBjcmVh dGVkIGNvbmZpZ3VyZQ0KIERpcmVjdG9yeSBhbmQgZmlsZSBuYW1lczoNCiAg IC0tcHJlZml4PVBSRUZJWCAgICAgICAgIGluc3RhbGwgYXJjaGl0ZWN0dXJl LWluZGVwZW5kZW50IGZpbGVzIGluIFBSRUZJWA0KQEAgLTM1OSwxMSArMzU3 LDYgQEAgRU9GDQogICAtc2l0ZT0qIHwgLS1zaXRlPSogfCAtLXNpdD0qKQ0K ICAgICBzaXRlPSIkYWNfb3B0YXJnIiA7Ow0KIA0KLSAgLXNpdGUtZmlsZSB8 IC0tc2l0ZS1maWxlIHwgLS1zaXRlLWZpbCB8IC0tc2l0ZS1maSB8IC0tc2l0 ZS1mKQ0KLSAgICBhY19wcmV2PXNpdGVmaWxlIDs7DQotICAtc2l0ZS1maWxl PSogfCAtLXNpdGUtZmlsZT0qIHwgLS1zaXRlLWZpbD0qIHwgLS1zaXRlLWZp PSogfCAtLXNpdGUtZj0qKQ0KLSAgICBzaXRlZmlsZT0iJGFjX29wdGFyZyIg OzsNCi0NCiAgIC1zcmNkaXIgfCAtLXNyY2RpciB8IC0tc3JjZGkgfCAtLXNy Y2QgfCAtLXNyYyB8IC0tc3IpDQogICAgIGFjX3ByZXY9c3JjZGlyIDs7DQog ICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNk PSogfCAtLXNyYz0qIHwgLS1zcj0qKQ0KQEAgLTUyOSwxNiArNTIyLDEyIEBA IGZpDQogc3JjZGlyPWBlY2hvICIke3NyY2Rpcn0iIHwgc2VkICdzJVwoW14v XVwpLyokJVwxJSdgDQogDQogIyBQcmVmZXIgZXhwbGljaXRseSBzZWxlY3Rl ZCBmaWxlIHRvIGF1dG9tYXRpY2FsbHkgc2VsZWN0ZWQgb25lcy4NCi1pZiB0 ZXN0IC16ICIkc2l0ZWZpbGUiOyB0aGVuDQotICBpZiB0ZXN0IC16ICIkQ09O RklHX1NJVEUiOyB0aGVuDQotICAgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4 Tk9ORTsgdGhlbg0KLSAgICAgIENPTkZJR19TSVRFPSIkcHJlZml4L3NoYXJl L2NvbmZpZy5zaXRlICRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlIg0KLSAgICBl bHNlDQotICAgICAgQ09ORklHX1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9z aGFyZS9jb25maWcuc2l0ZSAkYWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZp Zy5zaXRlIg0KLSAgICBmaQ0KK2lmIHRlc3QgLXogIiRDT05GSUdfU0lURSI7 IHRoZW4NCisgIGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbg0K KyAgICBDT05GSUdfU0lURT0iJHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAk cHJlZml4L2V0Yy9jb25maWcuc2l0ZSINCisgIGVsc2UNCisgICAgQ09ORklH X1NJVEU9IiRhY19kZWZhdWx0X3ByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAk YWNfZGVmYXVsdF9wcmVmaXgvZXRjL2NvbmZpZy5zaXRlIg0KICAgZmkNCi1l bHNlDQotICBDT05GSUdfU0lURT0iJHNpdGVmaWxlIg0KIGZpDQogZm9yIGFj X3NpdGVfZmlsZSBpbiAkQ09ORklHX1NJVEU7IGRvDQogICBpZiB0ZXN0IC1y ICIkYWNfc2l0ZV9maWxlIjsgdGhlbg0KQEAgLTU3OSw3ICs1NjgsNyBAQCBm aQ0KIA0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdG8gZW5h YmxlIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVz IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6NTgzOiBjaGVj a2luZyB3aGV0aGVyIHRvIGVuYWJsZSBtYWludGFpbmVyLXNwZWNpZmljIHBv cnRpb25zIG9mIE1ha2VmaWxlcyIgPiY1DQorZWNobyAiY29uZmlndXJlOjU3 MjogY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVj aWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiID4mNQ0KICAgICAjIENoZWNr IHdoZXRoZXIgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlIG9yIC0tZGlzYWJs ZS1tYWludGFpbmVyLW1vZGUgd2FzIGdpdmVuLg0KIGlmIHRlc3QgIiR7ZW5h YmxlX21haW50YWluZXJfbW9kZStzZXR9IiA9IHNldDsgdGhlbg0KICAgZW5h YmxldmFsPSIkZW5hYmxlX21haW50YWluZXJfbW9kZSINCkBAIC02MDUsNyAr NTk0LDcgQEAgZmkNCiAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdj YyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQog c2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMg0KIGVjaG8gJGFjX24gImNoZWNr aW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29u ZmlndXJlOjYwOTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCitlY2hv ICJjb25maWd1cmU6NTk4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0K IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX0NDJytz ZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQp ICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTYzNSw3ICs2MjQsNyBAQCBpZiB0 ZXN0IC16ICIkQ0MiOyB0aGVuDQogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdv cmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4NCiBzZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDINCiBlY2hvICRhY19u ICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNg0KLWVj aG8gImNvbmZpZ3VyZTo2Mzk6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1 DQorZWNobyAiY29uZmlndXJlOjYyODogY2hlY2tpbmcgZm9yICRhY193b3Jk IiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJv Z19DQycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIo Y2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCkBAIC02ODYsNyArNjc1LDcg QEAgZmkNCiAgICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNs Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCiBz ZXQgZHVtbXkgY2w7IGFjX3dvcmQ9JDINCiBlY2hvICRhY19uICJjaGVja2lu ZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZp Z3VyZTo2OTA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorZWNobyAi Y29uZmlndXJlOjY3OTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiBp ZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19DQycrc2V0 fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAk YWNfYyIgMT4mNg0KIGVsc2UNCkBAIC03MTgsNyArNzA3LDcgQEAgZmkNCiBm aQ0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29t cGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSB3b3JrcyIiLi4uICRhY19j IiAxPiY2DQotZWNobyAiY29uZmlndXJlOjcyMjogY2hlY2tpbmcgd2hldGhl ciB0aGUgQyBjb21waWxlciAoJENDICRDRkxBR1MgJExERkxBR1MpIHdvcmtz IiA+JjUNCitlY2hvICJjb25maWd1cmU6NzExOiBjaGVja2luZyB3aGV0aGVy IHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgd29ya3Mi ID4mNQ0KIA0KIGFjX2V4dD1jDQogIyBDRkxBR1MgaXMgbm90IGluIGFjX2Nw cCBiZWNhdXNlIC1nLCAtTywgZXRjLiBhcmUgbm90IHZhbGlkIGNwcCBvcHRp b25zLg0KQEAgLTcyOSwxMiArNzE4LDEyIEBAIGNyb3NzX2NvbXBpbGluZz0k YWNfY3ZfcHJvZ19jY19jcm9zcw0KIA0KIGNhdCA+IGNvbmZ0ZXN0LiRhY19l eHQgPDwgRU9GDQogDQotI2xpbmUgNzMzICJjb25maWd1cmUiDQorI2xpbmUg NzIyICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQog bWFpbigpe3JldHVybigwKTt9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTo3Mzg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xp bmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsg dGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzI3OiBcIiRhY19s aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3Qg LXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCiAgIGFjX2N2X3Byb2df Y2Nfd29ya3M9eWVzDQogICAjIElmIHdlIGNhbid0IHJ1biBhIHRyaXZpYWwg cHJvZ3JhbSwgd2UgYXJlIHByb2JhYmx5IHVzaW5nIGEgY3Jvc3MgY29tcGls ZXIuDQogICBpZiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGw7IHRo ZW4NCkBAIC03NjAsMTIgKzc0OSwxMiBAQCBpZiB0ZXN0ICRhY19jdl9wcm9n X2NjX3dvcmtzID0gbm87IHRoZW4NCiAgIHsgZWNobyAiY29uZmlndXJlOiBl cnJvcjogaW5zdGFsbGF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gcHJvYmxlbTog QyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzLiIgMT4mMjsg ZXhpdCAxOyB9DQogZmkNCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVy IHRoZSBDIGNvbXBpbGVyICgkQ0MgJENGTEFHUyAkTERGTEFHUykgaXMgYSBj cm9zcy1jb21waWxlciIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmln dXJlOjc2NDogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciAoJEND ICRDRkxBR1MgJExERkxBR1MpIGlzIGEgY3Jvc3MtY29tcGlsZXIiID4mNQ0K K2VjaG8gImNvbmZpZ3VyZTo3NTM6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMg Y29tcGlsZXIgKCRDQyAkQ0ZMQUdTICRMREZMQUdTKSBpcyBhIGNyb3NzLWNv bXBpbGVyIiA+JjUNCiBlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfY2NfY3Jv c3MiIDE+JjYNCiBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jv c3MNCiANCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1 c2luZyBHTlUgQyIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJl Ojc2OTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgR05VIEMiID4m NQ0KK2VjaG8gImNvbmZpZ3VyZTo3NTg6IGNoZWNraW5nIHdoZXRoZXIgd2Ug YXJlIHVzaW5nIEdOVSBDIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8g JyQnJ3snYWNfY3ZfcHJvZ19nY2MnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0K ICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpA QCAtNzc0LDcgKzc2Myw3IEBAIGVsc2UNCiAgIHllczsNCiAjZW5kaWYNCiBF T0YNCi1pZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29uZnRlc3QuYyc7IHsg KGV2YWwgZWNobyBjb25maWd1cmU6Nzc4OiBcIiRhY190cnlcIikgMT4mNTsg KGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfSB8IGVncmVwIHllcyA+L2Rldi9u dWxsIDI+JjE7IHRoZW4NCitpZiB7IGFjX3RyeT0nJHtDQy1jY30gLUUgY29u ZnRlc3QuYyc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzY3OiBcIiRhY190 cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfSB8IGVncmVw IHllcyA+L2Rldi9udWxsIDI+JjE7IHRoZW4NCiAgIGFjX2N2X3Byb2dfZ2Nj PXllcw0KIGVsc2UNCiAgIGFjX2N2X3Byb2dfZ2NjPW5vDQpAQCAtNzkzLDcg Kzc4Miw3IEBAIGFjX3Rlc3RfQ0ZMQUdTPSIke0NGTEFHUytzZXR9Ig0KIGFj X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIg0KIENGTEFHUz0NCiBlY2hvICRhY19u ICJjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLWciIi4uLiAk YWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo3OTc6IGNoZWNraW5nIHdo ZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtZyIgPiY1DQorZWNobyAiY29uZmln dXJlOjc4NjogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1n IiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJv Z19jY19nJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24g IihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTgyNSw3ICs4MTQs NyBAQCBlbHNlDQogZmkNCiANCiBlY2hvICRhY19uICJjaGVja2luZyBob3cg dG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvciIiLi4uICRhY19jIiAxPiY2DQot ZWNobyAiY29uZmlndXJlOjgyOTogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUg QyBwcmVwcm9jZXNzb3IiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo4MTg6IGNo ZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUNCiAj IE9uIFN1bnMsIHNvbWV0aW1lcyAkQ1BQIG5hbWVzIGEgZGlyZWN0b3J5Lg0K IGlmIHRlc3QgLW4gIiRDUFAiICYmIHRlc3QgLWQgIiRDUFAiOyB0aGVuDQog ICBDUFA9DQpAQCAtODQwLDEzICs4MjksMTMgQEAgZWxzZQ0KICAgIyBPbiB0 aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21w aWxlcidzIHBhcnNlciwNCiAgICMgbm90IGp1c3QgdGhyb3VnaCBjcHAuDQog ICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgODQ0ICJj b25maWd1cmUiDQorI2xpbmUgODMzICJjb25maWd1cmUiDQogI2luY2x1ZGUg ImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPGFzc2VydC5oPg0KIFN5bnRheCBF cnJvcg0KIEVPRg0KIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0 ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiDQoteyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTo4NTA6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5 KSAyPiY1OyB9DQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4Mzk6IFwiJGFj X3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9DQogYWNfZXJy PWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29u ZnRlc3QuJHthY19leHR9XCQiYA0KIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0 aGVuDQogICA6DQpAQCAtODU3LDEzICs4NDYsMTMgQEAgZWxzZQ0KICAgcm0g LXJmIGNvbmZ0ZXN0Kg0KICAgQ1BQPSIke0NDLWNjfSAtRSAtdHJhZGl0aW9u YWwtY3BwIg0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNs aW5lIDg2MSAiY29uZmlndXJlIg0KKyNsaW5lIDg1MCAiY29uZmlndXJlIg0K ICNpbmNsdWRlICJjb25mZGVmcy5oIg0KICNpbmNsdWRlIDxhc3NlcnQuaD4N CiBTeW50YXggRXJyb3INCiBFT0YNCiBhY190cnk9IiRhY19jcHAgY29uZnRl c3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Ig0KLXsgKGV2 YWwgZWNobyBjb25maWd1cmU6ODY3OiBcIiRhY190cnlcIikgMT4mNTsgKGV2 YWwgJGFjX3RyeSkgMj4mNTsgfQ0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6 ODU2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsg fQ0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3Jl cCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImANCiBpZiB0ZXN0IC16ICIk YWNfZXJyIjsgdGhlbg0KICAgOg0KQEAgLTg3NCwxMyArODYzLDEzIEBAIGVs c2UNCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIENQUD0iJHtDQy1jY30gLW5v bG9nbyAtRSINCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0j bGluZSA4NzggImNvbmZpZ3VyZSINCisjbGluZSA4NjcgImNvbmZpZ3VyZSIN CiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+ DQogU3ludGF4IEVycm9yDQogRU9GDQogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0 ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCINCi17IChl dmFsIGVjaG8gY29uZmlndXJlOjg4NDogXCIkYWNfdHJ5XCIpIDE+JjU7IChl dmFsICRhY190cnkpIDI+JjU7IH0NCit7IChldmFsIGVjaG8gY29uZmlndXJl Ojg3MzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7 IH0NCiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdy ZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgDQogaWYgdGVzdCAteiAi JGFjX2VyciI7IHRoZW4NCiAgIDoNCkBAIC05MDUsOSArODk0LDkgQEAgZmkN CiBlY2hvICIkYWNfdCIiJENQUCIgMT4mNg0KIA0KIGVjaG8gJGFjX24gImNo ZWNraW5nIGZvciBBSVgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZp Z3VyZTo5MDk6IGNoZWNraW5nIGZvciBBSVgiID4mNQ0KK2VjaG8gImNvbmZp Z3VyZTo4OTg6IGNoZWNraW5nIGZvciBBSVgiID4mNQ0KIGNhdCA+IGNvbmZ0 ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSA5MTEgImNvbmZpZ3VyZSINCisj bGluZSA5MDAgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIN CiAjaWZkZWYgX0FJWA0KICAgeWVzDQpAQCAtOTI5LDcgKzkxOCw3IEBAIHJt IC1mIGNvbmZ0ZXN0Kg0KIA0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZv ciBQT1NJWGl6ZWQgSVNDIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25m aWd1cmU6OTMzOiBjaGVja2luZyBmb3IgUE9TSVhpemVkIElTQyIgPiY1DQor ZWNobyAiY29uZmlndXJlOjkyMjogY2hlY2tpbmcgZm9yIFBPU0lYaXplZCBJ U0MiID4mNQ0KIGlmIHRlc3QgLWQgL2V0Yy9jb25mL2tjb25maWcuZCAmJg0K ICAgZ3JlcCBfUE9TSVhfVkVSU0lPTiAvdXNyL2luY2x1ZGUvc3lzL3VuaXN0 ZC5oID4vZGV2L251bGwgMj4mMQ0KIHRoZW4NCkBAIC05NTMsNyArOTQyLDcg QEAgZmkNCiANCiANCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJHtDQy1j Y30gb3B0aW9uIHRvIGFjY2VwdCBBTlNJIEMiIi4uLiAkYWNfYyIgMT4mNg0K LWVjaG8gImNvbmZpZ3VyZTo5NTc6IGNoZWNraW5nIGZvciAke0NDLWNjfSBv cHRpb24gdG8gYWNjZXB0IEFOU0kgQyIgPiY1DQorZWNobyAiY29uZmlndXJl Ojk0NjogY2hlY2tpbmcgZm9yICR7Q0MtY2N9IG9wdGlvbiB0byBhY2NlcHQg QU5TSSBDIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYW1f Y3ZfcHJvZ19jY19zdGRjJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVj aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTk2 OSw3ICs5NTgsNyBAQCBmb3IgYWNfYXJnIGluICIiIC1xbGFuZ2x2bD1hbnNp IC1zdGQxICItDQogZG8NCiAgIENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIg0K ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDk3MyAi Y29uZmlndXJlIg0KKyNsaW5lIDk2MiAiY29uZmlndXJlIg0KICNpbmNsdWRl ICJjb25mZGVmcy5oIg0KICNpbmNsdWRlIDxzdGRhcmcuaD4NCiAjaW5jbHVk ZSA8c3RkaW8uaD4NCkBAIC0xMDA2LDcgKzk5NSw3IEBAIHJldHVybiBmIChl LCBhcmd2LCAwKSAhPSBhcmd2WzBdICB8fCAgZiANCiANCiA7IHJldHVybiAw OyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDEwOiBc IiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1 OyB9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5OTk6IFwi JGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7 IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGFtX2N2X3Byb2df Y2Nfc3RkYz0iJGFjX2FyZyI7IGJyZWFrDQogZWxzZQ0KQEAgLTEwNzcsNyAr MTA2Niw3IEBAIGVsc2UgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBjYW4g bm90IHINCiBmaQ0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIGhvc3Qgc3lz dGVtIHR5cGUiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTox MDgxOiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUNCitlY2hvICJj b25maWd1cmU6MTA3MDogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1 DQogDQogaG9zdF9hbGlhcz0kaG9zdA0KIGNhc2UgIiRob3N0X2FsaWFzIiBp bg0KQEAgLTEwOTgsNyArMTA4Nyw3IEBAIGhvc3Rfb3M9YGVjaG8gJGhvc3Qg fCBzZWQgJ3MvXlwoW14tXSpcKS0NCiBlY2hvICIkYWNfdCIiJGhvc3QiIDE+ JjYNCiANCiBlY2hvICRhY19uICJjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5 cGUiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToxMTAyOiBj aGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQ0KK2VjaG8gImNvbmZp Z3VyZToxMDkxOiBjaGVja2luZyB0YXJnZXQgc3lzdGVtIHR5cGUiID4mNQ0K IA0KIHRhcmdldF9hbGlhcz0kdGFyZ2V0DQogY2FzZSAiJHRhcmdldF9hbGlh cyIgaW4NCkBAIC0xMTE2LDcgKzExMDUsNyBAQCB0YXJnZXRfb3M9YGVjaG8g JHRhcmdldCB8IHNlZCAncy9eXChbXi1dDQogZWNobyAiJGFjX3QiIiR0YXJn ZXQiIDE+JjYNCiANCiBlY2hvICRhY19uICJjaGVja2luZyBidWlsZCBzeXN0 ZW0gdHlwZSIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjEx MjA6IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUNCitlY2hvICJj b25maWd1cmU6MTEwOTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4m NQ0KIA0KIGJ1aWxkX2FsaWFzPSRidWlsZA0KIGNhc2UgIiRidWlsZF9hbGlh cyIgaW4NCkBAIC0xMTQxLDcgKzExMzAsNyBAQCB0ZXN0ICIkaG9zdF9hbGlh cyIgIT0gIiR0YXJnZXRfYWxpYXMiICYmDQogDQogQUxMX0xJTkdVQVM9DQog ZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0 cyBcJHtNQUtFfSIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJl OjExNDU6IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7 TUFLRX0iID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToxMTM0OiBjaGVja2luZyB3 aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwke01BS0V9IiA+JjUNCiBzZXQg ZHVtbXkgJHtNQUtFLW1ha2V9OyBhY19tYWtlPWBlY2hvICIkMiIgfCBzZWQg J3klLi8rLSVfX3BfJSdgDQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7 J2FjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCcrc2V0fSdgXCIgPSBz ZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4m Ng0KQEAgLTExNzAsNyArMTE1OSw3IEBAIGZpDQogIyBFeHRyYWN0IHRoZSBm aXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt IG5hbWUgd2l0aCBhcmdzLg0KIHNldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9 JDINCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAk YWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToxMTc0OiBjaGVja2luZyBm b3IgJGFjX3dvcmQiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToxMTYzOiBjaGVj a2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNo byAnJCcneydhY19jdl9wcm9nX1JBTkxJQicrc2V0fSdgXCIgPSBzZXQiOyB0 aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVs c2UNCkBAIC0xMTk4LDEyICsxMTg3LDEyIEBAIGVsc2UNCiBmaQ0KIA0KIGVj aG8gJGFjX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiIu Li4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MTIwMjogY2hlY2tp bmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQ0KK2VjaG8gImNvbmZp Z3VyZToxMTkxOiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIg PiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRl cl9zdGRjJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24g IihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRl c3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDEyMDcgImNvbmZpZ3VyZSINCisj bGluZSAxMTk2ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgi DQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KICNpbmNsdWRlIDxzdGRhcmcuaD4N CkBAIC0xMjExLDcgKzEyMDAsNyBAQCBlbHNlDQogI2luY2x1ZGUgPGZsb2F0 Lmg+DQogRU9GDQogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQg Pi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCINCi17IChldmFsIGVjaG8gY29u ZmlndXJlOjEyMTU6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5 KSAyPiY1OyB9DQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjA0OiBcIiRh Y190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KIGFjX2Vy cj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNv bmZ0ZXN0LiR7YWNfZXh0fVwkImANCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsg dGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KQEAgLTEyMjgsNyArMTIxNyw3 IEBAIHJtIC1mIGNvbmZ0ZXN0Kg0KIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9z dGRjID0geWVzOyB0aGVuDQogICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2Vz IG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuDQogY2F0ID4g Y29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDEyMzIgImNvbmZpZ3Vy ZSINCisjbGluZSAxMjIxICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZk ZWZzLmgiDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KIEVPRg0KQEAgLTEyNDYs NyArMTIzNSw3IEBAIGZpDQogaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMg PSB5ZXM7IHRoZW4NCiAgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90 IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4NCiBjYXQgPiBjb25m dGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMTI1MCAiY29uZmlndXJlIg0K KyNsaW5lIDEyMzkgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMu aCINCiAjaW5jbHVkZSA8c3RkbGliLmg+DQogRU9GDQpAQCAtMTI2Nyw3ICsx MjU2LDcgQEAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRo ZW4NCiAgIDoNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8 RU9GDQotI2xpbmUgMTI3MSAiY29uZmlndXJlIg0KKyNsaW5lIDEyNjAgImNv bmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8 Y3R5cGUuaD4NCiAjZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYg KGMpIDw9ICd6JykNCkBAIC0xMjc4LDcgKzEyNjcsNyBAQCBpZiAoWE9SIChp c2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpIHx8IHRvDQogZXhpdCAoMCk7IH0N CiANCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyODI6IFwi JGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsg ZXhpdCkgMj4vZGV2L251bGwNCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl OjEyNzE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+ JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9j b25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwNCiB0aGVuDQogICA6DQogZWxz ZQ0KQEAgLTEzMDIsMTIgKzEyOTEsMTIgQEAgRU9GDQogZmkNCiANCiBlY2hv ICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIiLi4uICRhY19j IiAxPiY2DQotZWNobyAiY29uZmlndXJlOjEzMDY6IGNoZWNraW5nIGZvciB3 b3JraW5nIGNvbnN0IiA+JjUNCitlY2hvICJjb25maWd1cmU6MTI5NTogY2hl Y2tpbmcgZm9yIHdvcmtpbmcgY29uc3QiID4mNQ0KIGlmIGV2YWwgInRlc3Qg XCJgZWNobyAnJCcneydhY19jdl9jX2NvbnN0JytzZXR9J2BcIiA9IHNldCI7 IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQog ZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5l IDEzMTEgImNvbmZpZ3VyZSINCisjbGluZSAxMzAwICJjb25maWd1cmUiDQog I2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQogaW50IG1haW4oKSB7DQpAQCAt MTM1Niw3ICsxMzQ1LDcgQEAgY2NwID0gKGNoYXIgY29uc3QgKmNvbnN0ICop IHA7DQogDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6MTM2MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZh bCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6MTM0OTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZh bCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0 ZXN0Kg0KICAgYWNfY3ZfY19jb25zdD15ZXMNCiBlbHNlDQpAQCAtMTM3Nywy MSArMTM2NiwyMSBAQCBFT0YNCiBmaQ0KIA0KIGVjaG8gJGFjX24gImNoZWNr aW5nIGZvciBpbmxpbmUiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZp Z3VyZToxMzgxOiBjaGVja2luZyBmb3IgaW5saW5lIiA+JjUNCitlY2hvICJj b25maWd1cmU6MTM3MDogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1DQogaWYg ZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfaW5saW5lJytzZXR9 J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRh Y19jIiAxPiY2DQogZWxzZQ0KICAgYWNfY3ZfY19pbmxpbmU9bm8NCiBmb3Ig YWNfa3cgaW4gaW5saW5lIF9faW5saW5lX18gX19pbmxpbmU7IGRvDQogICBj YXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMTM4OCAiY29u ZmlndXJlIg0KKyNsaW5lIDEzNzcgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAi Y29uZmRlZnMuaCINCiANCiBpbnQgbWFpbigpIHsNCiB9ICRhY19rdyBmb28o KSB7DQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBj b25maWd1cmU6MTM5NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAk YWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBj b25maWd1cmU6MTM4NDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAk YWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0 Kg0KICAgYWNfY3ZfY19pbmxpbmU9JGFjX2t3OyBicmVhaw0KIGVsc2UNCkBA IC0xNDE3LDEyICsxNDA2LDEyIEBAIEVPRg0KIGVzYWMNCiANCiBlY2hvICRh Y19uICJjaGVja2luZyBmb3Igb2ZmX3QiIi4uLiAkYWNfYyIgMT4mNg0KLWVj aG8gImNvbmZpZ3VyZToxNDIxOiBjaGVja2luZyBmb3Igb2ZmX3QiID4mNQ0K K2VjaG8gImNvbmZpZ3VyZToxNDEwOiBjaGVja2luZyBmb3Igb2ZmX3QiID4m NQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX29m Zl90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihj YWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3Qu JGFjX2V4dCA8PEVPRg0KLSNsaW5lIDE0MjYgImNvbmZpZ3VyZSINCisjbGlu ZSAxNDE1ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQog I2luY2x1ZGUgPHN5cy90eXBlcy5oPg0KICNpZiBTVERDX0hFQURFUlMNCkBA IC0xNDUwLDEyICsxNDM5LDEyIEBAIEVPRg0KIGZpDQogDQogZWNobyAkYWNf biAiY2hlY2tpbmcgZm9yIHNpemVfdCIiLi4uICRhY19jIiAxPiY2DQotZWNo byAiY29uZmlndXJlOjE0NTQ6IGNoZWNraW5nIGZvciBzaXplX3QiID4mNQ0K K2VjaG8gImNvbmZpZ3VyZToxNDQzOiBjaGVja2luZyBmb3Igc2l6ZV90IiA+ JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9z aXplX3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAi KGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVz dC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMTQ1OSAiY29uZmlndXJlIg0KKyNs aW5lIDE0NDggImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIN CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+DQogI2lmIFNURENfSEVBREVSUw0K QEAgLTE0ODUsMTkgKzE0NzQsMTkgQEAgZmkNCiAjIFRoZSBVbHRyaXggNC4y IG1pcHMgYnVpbHRpbiBhbGxvY2EgZGVjbGFyZWQgYnkgYWxsb2NhLmggb25s eSB3b3Jrcw0KICMgZm9yIGNvbnN0YW50IGFyZ3VtZW50cy4gIFVzZWxlc3Mh DQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgi Ii4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToxNDg5OiBjaGVj a2luZyBmb3Igd29ya2luZyBhbGxvY2EuaCIgPiY1DQorZWNobyAiY29uZmln dXJlOjE0Nzg6IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUN CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyX2Fs bG9jYV9oJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24g IihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRl c3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDE0OTQgImNvbmZpZ3VyZSINCisj bGluZSAxNDgzICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgi DQogI2luY2x1ZGUgPGFsbG9jYS5oPg0KIGludCBtYWluKCkgew0KIGNoYXIg KnAgPSBhbGxvY2EoMiAqIHNpemVvZihpbnQpKTsNCiA7IHJldHVybiAwOyB9 DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNTAxOiBcIiRh Y19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRl c3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCitpZiB7IChldmFs IGVjaG8gY29uZmlndXJlOjE0OTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2 YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf ZXhlZXh0fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgYWNfY3Zf aGVhZGVyX2FsbG9jYV9oPXllcw0KIGVsc2UNCkBAIC0xNTE4LDEyICsxNTA3 LDEyIEBAIEVPRg0KIGZpDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9y IGFsbG9jYSIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjE1 MjI6IGNoZWNraW5nIGZvciBhbGxvY2EiID4mNQ0KK2VjaG8gImNvbmZpZ3Vy ZToxNTExOiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUNCiBpZiBldmFsICJ0 ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MnK3Nl dH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkg JGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0 IDw8RU9GDQotI2xpbmUgMTUyNyAiY29uZmlndXJlIg0KKyNsaW5lIDE1MTYg ImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiANCiAjaWZk ZWYgX19HTlVDX18NCkBAIC0xNTUxLDcgKzE1NDAsNyBAQCBpbnQgbWFpbigp IHsNCiBjaGFyICpwID0gKGNoYXIgKikgYWxsb2NhKDEpOw0KIDsgcmV0dXJu IDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE1NTU6 IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0g JiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsg KGV2YWwgZWNobyBjb25maWd1cmU6MTU0NDogXCIkYWNfbGlua1wiKSAxPiY1 OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0 JHthY19leGVleHR9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBh Y19jdl9mdW5jX2FsbG9jYV93b3Jrcz15ZXMNCiBlbHNlDQpAQCAtMTU4Mywx MiArMTU3MiwxMiBAQCBFT0YNCiANCiANCiBlY2hvICRhY19uICJjaGVja2lu ZyB3aGV0aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiIuLi4gJGFjX2Mi IDE+JjYNCi1lY2hvICJjb25maWd1cmU6MTU4NzogY2hlY2tpbmcgd2hldGhl ciBhbGxvY2EgbmVlZHMgQ3JheSBob29rcyIgPiY1DQorZWNobyAiY29uZmln dXJlOjE1NzY6IGNoZWNraW5nIHdoZXRoZXIgYWxsb2NhIG5lZWRzIENyYXkg aG9va3MiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j dl9vc19jcmF5JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFj X24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29u ZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDE1OTIgImNvbmZpZ3VyZSIN CisjbGluZSAxNTgxICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZz LmgiDQogI2lmIGRlZmluZWQoQ1JBWSkgJiYgISBkZWZpbmVkKENSQVkyKQ0K IHdlYmVjcmF5DQpAQCAtMTYxMywxMiArMTYwMiwxMiBAQCBlY2hvICIkYWNf dCIiJGFjX2N2X29zX2NyYXkiIDE+JjYNCiBpZiB0ZXN0ICRhY19jdl9vc19j cmF5ID0geWVzOyB0aGVuDQogZm9yIGFjX2Z1bmMgaW4gX2dldGI2NyBHRVRC NjcgZ2V0YjY3OyBkbw0KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRh Y19mdW5jIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MTYx NzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUNCitlY2hvICJjb25maWd1 cmU6MTYwNjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUNCiBpZiBldmFs ICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0 fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAk YWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg PDxFT0YNCi0jbGluZSAxNjIyICJjb25maWd1cmUiDQorI2xpbmUgMTYxMSAi Y29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5oIg0KIC8qIFN5c3Rl bSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxs eSBmZXcgcHJvdG90eXBlcywNCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdp dGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovDQpAQCAtMTY0MSw3ICsx NjMwLDcgQEAgJGFjX2Z1bmMoKTsNCiANCiA7IHJldHVybiAwOyB9DQogRU9G DQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNjQ1OiBcIiRhY19saW5r XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg Y29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8g Y29uZmlndXJlOjE2MzQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0 fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgZXZhbCAiYWNfY3Zf ZnVuY18kYWNfZnVuYz15ZXMiDQogZWxzZQ0KQEAgLTE2NjgsNyArMTY1Nyw3 IEBAIGRvbmUNCiBmaQ0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIHN0YWNr IGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiIi4uLiAkYWNfYyIgMT4mNg0KLWVj aG8gImNvbmZpZ3VyZToxNjcyOiBjaGVja2luZyBzdGFjayBkaXJlY3Rpb24g Zm9yIEMgYWxsb2NhIiA+JjUNCitlY2hvICJjb25maWd1cmU6MTY2MTogY2hl Y2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZvciBDIGFsbG9jYSIgPiY1DQogaWYg ZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Nfc3RhY2tfZGlyZWN0 aW9uJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihj YWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTE2NzYsNyArMTY2NSw3 IEBAIGVsc2UNCiAgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTANCiBlbHNl DQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMTY4 MCAiY29uZmlndXJlIg0KKyNsaW5lIDE2NjkgImNvbmZpZ3VyZSINCiAjaW5j bHVkZSAiY29uZmRlZnMuaCINCiBmaW5kX3N0YWNrX2RpcmVjdGlvbiAoKQ0K IHsNCkBAIC0xNjk1LDcgKzE2ODQsNyBAQCBtYWluICgpDQogICBleGl0IChm aW5kX3N0YWNrX2RpcmVjdGlvbigpIDwgMCk7DQogfQ0KIEVPRg0KLWlmIHsg KGV2YWwgZWNobyBjb25maWd1cmU6MTY5OTogXCIkYWNfbGlua1wiKSAxPiY1 OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0 JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVs bA0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTY4ODogXCIkYWNfbGlu a1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1z IGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAy Pi9kZXYvbnVsbA0KIHRoZW4NCiAgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9u PTENCiBlbHNlDQpAQCAtMTcyMCwxNyArMTcwOSwxNyBAQCBmb3IgYWNfaGRy IGluIHVuaXN0ZC5oDQogZG8NCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8 IHNlZCAneSUuLystJV9fcF8lJ2ANCiBlY2hvICRhY19uICJjaGVja2luZyBm b3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJl OjE3MjQ6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUNCitlY2hvICJjb25m aWd1cmU6MTcxMzogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQ0KIGlmIGV2 YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUn K3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hl ZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNf ZXh0IDw8RU9GDQotI2xpbmUgMTcyOSAiY29uZmlndXJlIg0KKyNsaW5lIDE3 MTggImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5j bHVkZSA8JGFjX2hkcj4NCiBFT0YNCiBhY190cnk9IiRhY19jcHAgY29uZnRl c3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Ig0KLXsgKGV2 YWwgZWNobyBjb25maWd1cmU6MTczNDogXCIkYWNfdHJ5XCIpIDE+JjU7IChl dmFsICRhY190cnkpIDI+JjU7IH0NCit7IChldmFsIGVjaG8gY29uZmlndXJl OjE3MjM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1 OyB9DQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBn cmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KIGlmIHRlc3QgLXog IiRhY19lcnIiOyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQpAQCAtMTc1 OSwxMiArMTc0OCwxMiBAQCBkb25lDQogZm9yIGFjX2Z1bmMgaW4gZ2V0cGFn ZXNpemUNCiBkbw0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVu YyIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjE3NjM6IGNo ZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1DQorZWNobyAiY29uZmlndXJlOjE3 NTI6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1DQogaWYgZXZhbCAidGVz dCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwi ID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi IDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G DQotI2xpbmUgMTc2OCAiY29uZmlndXJlIg0KKyNsaW5lIDE3NTcgImNvbmZp Z3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAvKiBTeXN0ZW0gaGVh ZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3 IHByb3RvdHlwZXMsDQogICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNo YXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLw0KQEAgLTE3ODcsNyArMTc3Niw3 IEBAICRhY19mdW5jKCk7DQogDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlm IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTc5MTogXCIkYWNfbGlua1wiKSAx PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0 ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZp Z3VyZToxNzgwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRo ZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGV2YWwgImFjX2N2X2Z1bmNf JGFjX2Z1bmM9eWVzIg0KIGVsc2UNCkBAIC0xODEyLDcgKzE4MDEsNyBAQCBm aQ0KIGRvbmUNCiANCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2lu ZyBtbWFwIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MTgx NjogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcCIgPiY1DQorZWNobyAiY29u ZmlndXJlOjE4MDU6IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAiID4mNQ0K IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX21tYXBf Zml4ZWRfbWFwcGVkJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8g JGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTE4MjAs NyArMTgwOSw3IEBAIGVsc2UNCiAgIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9t YXBwZWQ9bm8NCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8 RU9GDQotI2xpbmUgMTgyNCAiY29uZmlndXJlIg0KKyNsaW5lIDE4MTMgImNv bmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiANCiAvKiBUaGFu a3MgdG8gTWlrZSBIYWVydGVsIGFuZCBKaW0gQXZlcmEgZm9yIHRoaXMgdGVz dC4NCkBAIC0xOTYwLDcgKzE5NDksNyBAQCBtYWluKCkNCiB9DQogDQogRU9G DQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxOTY0OiBcIiRhY19saW5r XCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMg Y29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+ L2Rldi9udWxsDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxOTUzOiBc IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYm IHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7 IGV4aXQpIDI+L2Rldi9udWxsDQogdGhlbg0KICAgYWNfY3ZfZnVuY19tbWFw X2ZpeGVkX21hcHBlZD15ZXMNCiBlbHNlDQpAQCAtMTk4OCwxNyArMTk3Nywx NyBAQCB1bmlzdGQuaCB2YWx1ZXMuaCBzeXMvcGFyYW0uaA0KIGRvDQogYWNf c2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgDQog ZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIg MT4mNg0KLWVjaG8gImNvbmZpZ3VyZToxOTkyOiBjaGVja2luZyBmb3IgJGFj X2hkciIgPiY1DQorZWNobyAiY29uZmlndXJlOjE5ODE6IGNoZWNraW5nIGZv ciAkYWNfaGRyIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn YWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4N CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0K ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDE5OTcg ImNvbmZpZ3VyZSINCisjbGluZSAxOTg2ICJjb25maWd1cmUiDQogI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPCRhY19oZHI+DQogRU9GDQog YWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAy PmNvbmZ0ZXN0Lm91dCINCi17IChldmFsIGVjaG8gY29uZmlndXJlOjIwMDI6 IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9DQor eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxOTkxOiBcIiRhY190cnlcIikgMT4m NTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KIGFjX2Vycj1gZ3JlcCAtdiAn XiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNf ZXh0fVwkImANCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbg0KICAgcm0g LXJmIGNvbmZ0ZXN0Kg0KQEAgLTIwMjgsMTIgKzIwMTcsMTIgQEAgZG9uZQ0K IF9fYXJnel9jb3VudCBfX2FyZ3pfc3RyaW5naWZ5IF9fYXJnel9uZXh0DQog ZG8NCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAk YWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToyMDMyOiBjaGVja2luZyBm b3IgJGFjX2Z1bmMiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyMDIxOiBjaGVj a2luZyBmb3IgJGFjX2Z1bmMiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNo byAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7 IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQog ZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5l IDIwMzcgImNvbmZpZ3VyZSINCisjbGluZSAyMDI2ICJjb25maWd1cmUiDQog I2luY2x1ZGUgImNvbmZkZWZzLmgiDQogLyogU3lzdGVtIGhlYWRlciB0byBk ZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5 cGVzLA0KICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19m dW5jKCk7IGJlbG93LiAgKi8NCkBAIC0yMDU2LDcgKzIwNDUsNyBAQCAkYWNf ZnVuYygpOw0KIA0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFs IGVjaG8gY29uZmlndXJlOjIwNjA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2 YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf ZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjA0 OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQogICBy bSAtcmYgY29uZnRlc3QqDQogICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5j PXllcyINCiBlbHNlDQpAQCAtMjA4NSwxMiArMjA3NCwxMiBAQCBkb25lDQog ICAgICBmb3IgYWNfZnVuYyBpbiBzdHBjcHkNCiBkbw0KIGVjaG8gJGFjX24g ImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2DQotZWNo byAiY29uZmlndXJlOjIwODk6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1 DQorZWNobyAiY29uZmlndXJlOjIwNzg6IGNoZWNraW5nIGZvciAkYWNfZnVu YyIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1 bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAk YWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBj b25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMjA5NCAiY29uZmlndXJl Ig0KKyNsaW5lIDIwODMgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRl ZnMuaCINCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFj cm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsDQogICAgIHdoaWNo IGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAq Lw0KQEAgLTIxMTMsNyArMjEwMiw3IEBAICRhY19mdW5jKCk7DQogDQogOyBy ZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6 MjExNzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4m NTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQor aWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMTA2OiBcIiRhY19saW5rXCIp IDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29u ZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoN CiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIg0KIGVsc2UNCkBA IC0yMTQ3LDE5ICsyMTM2LDE5IEBAIEVPRg0KIA0KICAgIGlmIHRlc3QgJGFj X2N2X2hlYWRlcl9sb2NhbGVfaCA9IHllczsgdGhlbg0KICAgICBlY2hvICRh Y19uICJjaGVja2luZyBmb3IgTENfTUVTU0FHRVMiIi4uLiAkYWNfYyIgMT4m Ng0KLWVjaG8gImNvbmZpZ3VyZToyMTUxOiBjaGVja2luZyBmb3IgTENfTUVT U0FHRVMiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyMTQwOiBjaGVja2luZyBm b3IgTENfTUVTU0FHRVMiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAn JCcneydhbV9jdl92YWxfTENfTUVTU0FHRVMnK3NldH0nYFwiID0gc2V0Ijsg dGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBl bHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUg MjE1NiAiY29uZmlndXJlIg0KKyNsaW5lIDIxNDUgImNvbmZpZ3VyZSINCiAj aW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8bG9jYWxlLmg+DQog aW50IG1haW4oKSB7DQogcmV0dXJuIExDX01FU1NBR0VTDQogOyByZXR1cm4g MDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjE2Mzog XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAo ZXZhbCBlY2hvIGNvbmZpZ3VyZToyMTUyOiBcIiRhY19saW5rXCIpIDE+JjU7 IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk e2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGFt X2N2X3ZhbF9MQ19NRVNTQUdFUz15ZXMNCiBlbHNlDQpAQCAtMjE4MCw3ICsy MTY5LDcgQEAgRU9GDQogICAgIGZpDQogICBmaQ0KICAgIGVjaG8gJGFjX24g ImNoZWNraW5nIHdoZXRoZXIgTkxTIGlzIHJlcXVlc3RlZCIiLi4uICRhY19j IiAxPiY2DQotZWNobyAiY29uZmlndXJlOjIxODQ6IGNoZWNraW5nIHdoZXRo ZXIgTkxTIGlzIHJlcXVlc3RlZCIgPiY1DQorZWNobyAiY29uZmlndXJlOjIx NzM6IGNoZWNraW5nIHdoZXRoZXIgTkxTIGlzIHJlcXVlc3RlZCIgPiY1DQog ICAgICAgICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmxzIG9yIC0tZGlz YWJsZS1ubHMgd2FzIGdpdmVuLg0KIGlmIHRlc3QgIiR7ZW5hYmxlX25scytz ZXR9IiA9IHNldDsgdGhlbg0KICAgZW5hYmxldmFsPSIkZW5hYmxlX25scyIN CkBAIC0yMjAwLDcgKzIxODksNyBAQCBmaQ0KIEVPRg0KIA0KICAgICAgIGVj aG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgaW5jbHVkZWQgZ2V0dGV4dCBp cyByZXF1ZXN0ZWQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3Vy ZToyMjA0OiBjaGVja2luZyB3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMg cmVxdWVzdGVkIiA+JjUNCitlY2hvICJjb25maWd1cmU6MjE5MzogY2hlY2tp bmcgd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZCIgPiY1 DQogICAgICAgIyBDaGVjayB3aGV0aGVyIC0td2l0aC1pbmNsdWRlZC1nZXR0 ZXh0IG9yIC0td2l0aG91dC1pbmNsdWRlZC1nZXR0ZXh0IHdhcyBnaXZlbi4N CiBpZiB0ZXN0ICIke3dpdGhfaW5jbHVkZWRfZ2V0dGV4dCtzZXR9IiA9IHNl dDsgdGhlbg0KICAgd2l0aHZhbD0iJHdpdGhfaW5jbHVkZWRfZ2V0dGV4dCIN CkBAIC0yMjE5LDE3ICsyMjA4LDE3IEBAIGZpDQogDQogCWFjX3NhZmU9YGVj aG8gImxpYmludGwuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgDQogZWNobyAk YWNfbiAiY2hlY2tpbmcgZm9yIGxpYmludGwuaCIiLi4uICRhY19jIiAxPiY2 DQotZWNobyAiY29uZmlndXJlOjIyMjM6IGNoZWNraW5nIGZvciBsaWJpbnRs LmgiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyMjEyOiBjaGVja2luZyBmb3Ig bGliaW50bC5oIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn YWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4N CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0K ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDIyMjgg ImNvbmZpZ3VyZSINCisjbGluZSAyMjE3ICJjb25maWd1cmUiDQogI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPGxpYmludGwuaD4NCiBFT0YN CiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxs IDI+Y29uZnRlc3Qub3V0Ig0KLXsgKGV2YWwgZWNobyBjb25maWd1cmU6MjIz MzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0N Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjIyMjI6IFwiJGFjX3RyeVwiKSAx PiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9DQogYWNfZXJyPWBncmVwIC12 ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHth Y19leHR9XCQiYA0KIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuDQogICBy bSAtcmYgY29uZnRlc3QqDQpAQCAtMjI0NiwxOSArMjIzNSwxOSBAQCBmaQ0K IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3Nh ZmVgXCIgPSB5ZXMiOyB0aGVuDQogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2 DQogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZ2V0dGV4dCBpbiBsaWJj IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MjI1MDogY2hl Y2tpbmcgZm9yIGdldHRleHQgaW4gbGliYyIgPiY1DQorZWNobyAiY29uZmln dXJlOjIyMzk6IGNoZWNraW5nIGZvciBnZXR0ZXh0IGluIGxpYmMiID4mNQ0K IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydndF9jdl9mdW5jX2dldHRl eHRfbGliYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19u ICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+IGNvbmZ0 ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAyMjU1ICJjb25maWd1cmUiDQor I2xpbmUgMjI0NCAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5o Ig0KICNpbmNsdWRlIDxsaWJpbnRsLmg+DQogaW50IG1haW4oKSB7DQogcmV0 dXJuIChpbnQpIGdldHRleHQgKCIiKQ0KIDsgcmV0dXJuIDA7IH0NCiBFT0YN Ci1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIyNjI6IFwiJGFjX2xpbmtc IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBj b25maWd1cmU6MjI1MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNf bGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9 OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBndF9jdl9mdW5jX2dl dHRleHRfbGliYz15ZXMNCiBlbHNlDQpAQCAtMjI3NCw3ICsyMjYzLDcgQEAg ZWNobyAiJGFjX3QiIiRndF9jdl9mdW5jX2dldHRleHRfbGliYyIgMQ0KIA0K IAkgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nZXR0ZXh0X2xpYmMiICE9ICJ5 ZXMiOyB0aGVuDQogCSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGJp bmR0ZXh0ZG9tYWluIGluIC1saW50bCIiLi4uICRhY19jIiAxPiY2DQotZWNo byAiY29uZmlndXJlOjIyNzg6IGNoZWNraW5nIGZvciBiaW5kdGV4dGRvbWFp biBpbiAtbGludGwiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyMjY3OiBjaGVj a2luZyBmb3IgYmluZHRleHRkb21haW4gaW4gLWxpbnRsIiA+JjUNCiBhY19s aWJfdmFyPWBlY2hvIGludGwnXydiaW5kdGV4dGRvbWFpbiB8IHNlZCAneSUu LystJV9fcF8lJ2ANCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNf Y3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAg IGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQpAQCAtMjI4Miw3 ICsyMjcxLDcgQEAgZWxzZQ0KICAgYWNfc2F2ZV9MSUJTPSIkTElCUyINCiBM SUJTPSItbGludGwgICRMSUJTIg0KIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQg PDxFT0YNCi0jbGluZSAyMjg2ICJjb25maWd1cmUiDQorI2xpbmUgMjI3NSAi Y29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5oIg0KIC8qIE92ZXJy aWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBl cnJvci4gICovDQogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQg bWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMg0KQEAgLTIyOTMsNyAr MjI4Miw3IEBAIGludCBtYWluKCkgew0KIGJpbmR0ZXh0ZG9tYWluKCkNCiA7 IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy ZToyMjk3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4N CitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIyODY6IFwiJGFjX2xpbmtc IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0 Kg0KICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyINCiBlbHNl DQpAQCAtMjMwOSwxOSArMjI5OCwxOSBAQCBmaQ0KIGlmIGV2YWwgInRlc3Qg XCJgZWNobyAnJGFjX2N2X2xpYl8nJGFjX2xpYl92YXJgXCIgPSB5ZXMiOyB0 aGVuDQogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2DQogICBlY2hvICRhY19u ICJjaGVja2luZyBmb3IgZ2V0dGV4dCBpbiBsaWJpbnRsIiIuLi4gJGFjX2Mi IDE+JjYNCi1lY2hvICJjb25maWd1cmU6MjMxMzogY2hlY2tpbmcgZm9yIGdl dHRleHQgaW4gbGliaW50bCIgPiY1DQorZWNobyAiY29uZmlndXJlOjIzMDI6 IGNoZWNraW5nIGZvciBnZXR0ZXh0IGluIGxpYmludGwiID4mNQ0KIGlmIGV2 YWwgInRlc3QgXCJgZWNobyAnJCcneydndF9jdl9mdW5jX2dldHRleHRfbGli aW50bCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIo Y2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+IGNvbmZ0ZXN0 LiRhY19leHQgPDxFT0YNCi0jbGluZSAyMzE4ICJjb25maWd1cmUiDQorI2xp bmUgMjMwNyAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5oIg0K IA0KIGludCBtYWluKCkgew0KIHJldHVybiAoaW50KSBnZXR0ZXh0ICgiIikN CiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZp Z3VyZToyMzI1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRo ZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIzMTQ6IFwiJGFjX2xp bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt cyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0 ZXN0Kg0KICAgZ3RfY3ZfZnVuY19nZXR0ZXh0X2xpYmludGw9eWVzDQogZWxz ZQ0KQEAgLTIzNDksNyArMjMzOCw3IEBAIEVPRg0KIAkgICAgICAjIEV4dHJh Y3QgdGhlIGZpcnN0IHdvcmQgb2YgIm1zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBh IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQogc2V0IGR1bW15IG1zZ2ZtdDsg YWNfd29yZD0kMg0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29y ZCIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjIzNTM6IGNo ZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQorZWNobyAiY29uZmlndXJlOjIz NDI6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQogaWYgZXZhbCAidGVz dCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfTVNHRk1UJytzZXR9J2BcIiA9 IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx PiY2DQogZWxzZQ0KQEAgLTIzODMsMTIgKzIzNzIsMTIgQEAgZmkNCiAJCWZv ciBhY19mdW5jIGluIGRjZ2V0dGV4dA0KIGRvDQogZWNobyAkYWNfbiAiY2hl Y2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJj b25maWd1cmU6MjM4NzogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUNCitl Y2hvICJjb25maWd1cmU6MjM3NjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+ JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18k YWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19u ICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+IGNvbmZ0 ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAyMzkyICJjb25maWd1cmUiDQor I2xpbmUgMjM4MSAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5o Ig0KIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3Mg YW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywNCiAgICAgd2hpY2ggY2Fu IGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovDQpA QCAtMjQxMSw3ICsyNDAwLDcgQEAgJGFjX2Z1bmMoKTsNCiANCiA7IHJldHVy biAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNDE1 OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9 ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCitpZiB7 IChldmFsIGVjaG8gY29uZmlndXJlOjI0MDQ6IFwiJGFjX2xpbmtcIikgMT4m NTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz dCR7YWNfZXhlZXh0fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAg ZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiDQogZWxzZQ0KQEAgLTI0 MzgsNyArMjQyNyw3IEBAIGRvbmUNCiAJCSMgRXh0cmFjdCB0aGUgZmlyc3Qg d29yZCBvZiAiZ21zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZSB3aXRoIGFyZ3MuDQogc2V0IGR1bW15IGdtc2dmbXQ7IGFjX3dvcmQ9JDIN CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNf YyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToyNDQyOiBjaGVja2luZyBmb3Ig JGFjX3dvcmQiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyNDMxOiBjaGVja2lu ZyBmb3IgJGFjX3dvcmQiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAn JCcneydhY19jdl9wYXRoX0dNU0dGTVQnK3NldH0nYFwiID0gc2V0IjsgdGhl bg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNl DQpAQCAtMjQ3NCw3ICsyNDYzLDcgQEAgZmkNCiAJCSMgRXh0cmFjdCB0aGUg Zmlyc3Qgd29yZCBvZiAieGdldHRleHQiLCBzbyBpdCBjYW4gYmUgYSBwcm9n cmFtIG5hbWUgd2l0aCBhcmdzLg0KIHNldCBkdW1teSB4Z2V0dGV4dDsgYWNf d29yZD0kMg0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIi Li4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjI0Nzg6IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1DQorZWNobyAiY29uZmlndXJlOjI0Njc6 IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1DQogaWYgZXZhbCAidGVzdCBc ImBlY2hvICckJyd7J2FjX2N2X3BhdGhfWEdFVFRFWFQnK3NldH0nYFwiID0g c2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+ JjYNCiBlbHNlDQpAQCAtMjUwNiw3ICsyNDk1LDcgQEAgZWxzZQ0KIGZpDQog DQogCQljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMjUx MCAiY29uZmlndXJlIg0KKyNsaW5lIDI0OTkgImNvbmZpZ3VyZSINCiAjaW5j bHVkZSAiY29uZmRlZnMuaCINCiANCiBpbnQgbWFpbigpIHsNCkBAIC0yNTE0 LDcgKzI1MDMsNyBAQCBleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7DQog CQkJICAgICAgIHJldHVybiBfbmxfbXNnX2NhdF9jbnRyDQogOyByZXR1cm4g MDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjUxODog XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAo ZXZhbCBlY2hvIGNvbmZpZ3VyZToyNTA3OiBcIiRhY19saW5rXCIpIDE+JjU7 IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk e2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIENB VE9CSkVYVD0uZ21vDQogCQkgICBEQVRBRElSTkFNRT1zaGFyZQ0KQEAgLTI1 NDYsNyArMjUzNSw3IEBAIGZpDQogICAgICAgICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgIm1zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoIGFyZ3MuDQogc2V0IGR1bW15IG1zZ2ZtdDsgYWNfd29yZD0k Mg0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRh Y19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjI1NTA6IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1DQorZWNobyAiY29uZmlndXJlOjI1Mzk6IGNoZWNr aW5nIGZvciAkYWNfd29yZCIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hv ICckJyd7J2FjX2N2X3BhdGhfTVNHRk1UJytzZXR9J2BcIiA9IHNldCI7IHRo ZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxz ZQ0KQEAgLTI1ODAsNyArMjU2OSw3IEBAIGZpDQogICAgICAgICAjIEV4dHJh Y3QgdGhlIGZpcnN0IHdvcmQgb2YgImdtc2dmbXQiLCBzbyBpdCBjYW4gYmUg YSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KIHNldCBkdW1teSBnbXNnZm10 OyBhY193b3JkPSQyDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193 b3JkIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MjU4NDog Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCitlY2hvICJjb25maWd1cmU6 MjU3MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiBpZiBldmFsICJ0 ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9HTVNHRk1UJytzZXR9J2Bc IiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19j IiAxPiY2DQogZWxzZQ0KQEAgLTI2MTYsNyArMjYwNSw3IEBAIGZpDQogICAg ICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInhnZXR0ZXh0Iiwg c28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4NCiBzZXQg ZHVtbXkgeGdldHRleHQ7IGFjX3dvcmQ9JDINCiBlY2hvICRhY19uICJjaGVj a2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNv bmZpZ3VyZToyNjIwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KK2Vj aG8gImNvbmZpZ3VyZToyNjA5OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4m NQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX1hH RVRURVhUJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24g IihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTI3MDYsNyArMjY5 NSw3IEBAIGZpDQogICAgICAgIExJTkdVQVM9DQogICAgICBlbHNlDQogICAg ICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjYXRhbG9ncyB0byBiZSBp bnN0YWxsZWQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToy NzEwOiBjaGVja2luZyBmb3IgY2F0YWxvZ3MgdG8gYmUgaW5zdGFsbGVkIiA+ JjUNCitlY2hvICJjb25maWd1cmU6MjY5OTogY2hlY2tpbmcgZm9yIGNhdGFs b2dzIHRvIGJlIGluc3RhbGxlZCIgPiY1DQogICAgICAgIE5FV19MSU5HVUFT PQ0KICAgICAgICBmb3IgbGFuZyBpbiAke0xJTkdVQVM9JEFMTF9MSU5HVUFT fTsgZG8NCiAgICAgICAgICBjYXNlICIkQUxMX0xJTkdVQVMiIGluDQpAQCAt MjczNCwxNyArMjcyMywxNyBAQCBlY2hvICJjb25maWd1cmU6MjcxMDogY2hl Y2tpbmcgZm9yIGNhdGFsDQogICAgICAgaWYgdGVzdCAiJENBVE9CSkVYVCIg PSAiLmNhdCI7IHRoZW4NCiAJIGFjX3NhZmU9YGVjaG8gImxpbnV4L3ZlcnNp b24uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgDQogZWNobyAkYWNfbiAiY2hl Y2tpbmcgZm9yIGxpbnV4L3ZlcnNpb24uaCIiLi4uICRhY19jIiAxPiY2DQot ZWNobyAiY29uZmlndXJlOjI3Mzg6IGNoZWNraW5nIGZvciBsaW51eC92ZXJz aW9uLmgiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyNzI3OiBjaGVja2luZyBm b3IgbGludXgvdmVyc2lvbi5oIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVj aG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNl dCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2 DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNs aW5lIDI3NDMgImNvbmZpZ3VyZSINCisjbGluZSAyNzMyICJjb25maWd1cmUi DQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPGxpbnV4L3Zl cnNpb24uaD4NCiBFT0YNCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFj X2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0Ig0KLXsgKGV2YWwgZWNo byBjb25maWd1cmU6Mjc0ODogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRh Y190cnkpIDI+JjU7IH0NCit7IChldmFsIGVjaG8gY29uZmlndXJlOjI3Mzc6 IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9DQog YWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12 ICJeY29uZnRlc3QuJHthY19leHR9XCQiYA0KIGlmIHRlc3QgLXogIiRhY19l cnIiOyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQpAQCAtMjg2MSwxMiAr Mjg1MCwxMiBAQCBFT0YNCiANCiBmaQ0KIA0KLWZvciBhY19wcm9nIGluIG1h d2sgZ2F3ayBuYXdrIGF3aw0KK2ZvciBhY19wcm9nIGluIGdhd2sgbWF3ayBu YXdrIGF3aw0KIGRvDQogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIk YWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy Z3MuDQogc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyDQogZWNobyAk YWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYN Ci1lY2hvICJjb25maWd1cmU6Mjg3MDogY2hlY2tpbmcgZm9yICRhY193b3Jk IiA+JjUNCitlY2hvICJjb25maWd1cmU6Mjg1OTogY2hlY2tpbmcgZm9yICRh Y193b3JkIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNf Y3ZfcHJvZ19BV0snK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAk YWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtMjkwNyw3 ICsyODk2LDcgQEAgZG9uZQ0KICMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3 aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFm ZiINCiAjIC4vaW5zdGFsbCwgd2hpY2ggY2FuIGJlIGVycm9uZW91c2x5IGNy ZWF0ZWQgYnkgbWFrZSBmcm9tIC4vaW5zdGFsbC5zaC4NCiBlY2hvICRhY19u ICJjaGVja2luZyBmb3IgYSBCU0QgY29tcGF0aWJsZSBpbnN0YWxsIiIuLi4g JGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MjkxMTogY2hlY2tpbmcg Zm9yIGEgQlNEIGNvbXBhdGlibGUgaW5zdGFsbCIgPiY1DQorZWNobyAiY29u ZmlndXJlOjI5MDA6IGNoZWNraW5nIGZvciBhIEJTRCBjb21wYXRpYmxlIGlu c3RhbGwiID4mNQ0KIGlmIHRlc3QgLXogIiRJTlNUQUxMIjsgdGhlbg0KIGlm IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX2luc3RhbGwn K3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hl ZCkgJGFjX2MiIDE+JjYNCkBAIC0yOTY4LDcgKzI5NTcsNyBAQCBmaQ0KICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1h ciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQog c2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDINCiBl Y2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIg MT4mNg0KLWVjaG8gImNvbmZpZ3VyZToyOTcyOiBjaGVja2luZyBmb3IgJGFj X3dvcmQiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZToyOTYxOiBjaGVja2luZyBm b3IgJGFjX3dvcmQiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcn eydhY19jdl9wcm9nX0FSJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVj aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTMw MDAsNyArMjk4OSw3IEBAIGZpDQogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk IG9mICIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIsIHNvIGl0IGNhbiBiZSBh IHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuDQogc2V0IGR1bW15ICR7YWNfdG9v bF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyDQogZWNobyAkYWNfbiAiY2hl Y2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJj b25maWd1cmU6MzAwNDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCitl Y2hvICJjb25maWd1cmU6Mjk5MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+ JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19S QU5MSUInK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAi KGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtMzAzMiw3ICszMDIx LDcgQEAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbg0KICAg IyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJyYW5saWIiLCBzbyBpdCBj YW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0KIHNldCBkdW1teSBy YW5saWI7IGFjX3dvcmQ9JDINCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Ig JGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToz MDM2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KK2VjaG8gImNvbmZp Z3VyZTozMDI1OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KIGlmIGV2 YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wcm9nX1JBTkxJQicrc2V0 fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAk YWNfYyIgMT4mNg0KIGVsc2UNCkBAIC0zMDY3LDcgKzMwNTYsNyBAQCBmaQ0K ICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZp eH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4NCiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBh Y193b3JkPSQyDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3Jk IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MzA3MTogY2hl Y2tpbmcgZm9yICRhY193b3JkIiA+JjUNCitlY2hvICJjb25maWd1cmU6MzA2 MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiBpZiBldmFsICJ0ZXN0 IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19ETExUT09MJytzZXR9J2BcIiA9 IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx PiY2DQogZWxzZQ0KQEAgLTMwOTksNyArMzA4OCw3IEBAIGZpDQogIyBFeHRy YWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXdpbmRy ZXMiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLg0K IHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXdpbmRyZXM7IGFjX3dvcmQ9 JDINCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAk YWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTozMTAzOiBjaGVja2luZyBm b3IgJGFjX3dvcmQiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTozMDkyOiBjaGVj a2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNo byAnJCcneydhY19jdl9wcm9nX1dJTkRSRVMnK3NldH0nYFwiID0gc2V0Ijsg dGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBl bHNlDQpAQCAtMzEzMyw3ICszMTIyLDcgQEAgZG8NCiAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJv Z3JhbSBuYW1lIHdpdGggYXJncy4NCiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFj X3dvcmQ9JDINCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQi Ii4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTozMTM3OiBjaGVj a2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTozMTI2 OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQ0KIGlmIGV2YWwgInRlc3Qg XCJgZWNobyAnJCcneydhY19jdl9wcm9nX1lBQ0MnK3NldH0nYFwiID0gc2V0 IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYN CiBlbHNlDQpAQCAtMzE2Nyw3ICszMTU2LDcgQEAgdGVzdCAtbiAiJFlBQ0Mi IHx8IFlBQ0M9InlhY2MiDQogIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9m ICIke2FjX3Rvb2xfcHJlZml4fW1pZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dy YW0gbmFtZSB3aXRoIGFyZ3MuDQogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVm aXh9bWlnOyBhY193b3JkPSQyDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9y ICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6 MzE3MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCitlY2hvICJjb25m aWd1cmU6MzE2MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUNCiBpZiBl dmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19NSUcnK3NldH0n YFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFj X2MiIDE+JjYNCiBlbHNlDQpAQCAtMzIxOCwxMiArMzIwNywxMiBAQCB0ZXN0 ICIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgPSAiIiAmJiBwDQogDQogDQog ZWNobyAkYWNfbiAiY2hlY2tpbmcgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhh bmRsZXJzIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6MzIy MjogY2hlY2tpbmcgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIiA+ JjUNCitlY2hvICJjb25maWd1cmU6MzIxMTogY2hlY2tpbmcgcmV0dXJuIHR5 cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwi YGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9zaWduYWwnK3NldH0nYFwiID0gc2V0 IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYN CiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xp bmUgMzIyNyAiY29uZmlndXJlIg0KKyNsaW5lIDMyMTYgImNvbmZpZ3VyZSIN CiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8c3lzL3R5cGVz Lmg+DQogI2luY2x1ZGUgPHNpZ25hbC5oPg0KQEAgLTMyNDAsNyArMzIyOSw3 IEBAIGludCBtYWluKCkgew0KIGludCBpOw0KIDsgcmV0dXJuIDA7IH0NCiBF T0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyNDQ6IFwiJGFjX2Nv bXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRo ZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyMzM6IFwiJGFjX2Nv bXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRo ZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGFjX2N2X3R5cGVfc2lnbmFs PXZvaWQNCiBlbHNlDQpAQCAtMzI2MCwxMiArMzI0OSwxMiBAQCBFT0YNCiAN CiANCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBm aWxlcyIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjMyNjQ6 IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUNCitlY2hv ICJjb25maWd1cmU6MzI1MzogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIg ZmlsZXMiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j dl9oZWFkZXJfc3RkYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hv ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+ IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAzMjY5ICJjb25maWd1 cmUiDQorI2xpbmUgMzI1OCAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25m ZGVmcy5oIg0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCiAjaW5jbHVkZSA8c3Rk YXJnLmg+DQpAQCAtMzI3Myw3ICszMjYyLDcgQEAgZWxzZQ0KICNpbmNsdWRl IDxmbG9hdC5oPg0KIEVPRg0KIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4k YWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiDQoteyAoZXZhbCBl Y2hvIGNvbmZpZ3VyZTozMjc3OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwg JGFjX3RyeSkgMj4mNTsgfQ0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6MzI2 NjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0N CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAg LXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgDQogaWYgdGVzdCAteiAiJGFj X2VyciI7IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCkBAIC0zMjkwLDcg KzMyNzksNyBAQCBybSAtZiBjb25mdGVzdCoNCiBpZiB0ZXN0ICRhY19jdl9o ZWFkZXJfc3RkYyA9IHllczsgdGhlbg0KICAgIyBTdW5PUyA0Lnggc3RyaW5n LmggZG9lcyBub3QgZGVjbGFyZSBtZW0qLCBjb250cmFyeSB0byBBTlNJLg0K IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAzMjk0ICJj b25maWd1cmUiDQorI2xpbmUgMzI4MyAiY29uZmlndXJlIg0KICNpbmNsdWRl ICJjb25mZGVmcy5oIg0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiBFT0YNCkBA IC0zMzA4LDcgKzMyOTcsNyBAQCBmaQ0KIGlmIHRlc3QgJGFjX2N2X2hlYWRl cl9zdGRjID0geWVzOyB0aGVuDQogICAjIElTQyAyLjAuMiBzdGRsaWIuaCBk b2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuDQogY2F0 ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDMzMTIgImNvbmZp Z3VyZSINCisjbGluZSAzMzAxICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNv bmZkZWZzLmgiDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KIEVPRg0KQEAgLTMz MjksNyArMzMxOCw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0g eWVzOyB0aGVuDQogICA6DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFj X2V4dCA8PEVPRg0KLSNsaW5lIDMzMzMgImNvbmZpZ3VyZSINCisjbGluZSAz MzIyICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogI2lu Y2x1ZGUgPGN0eXBlLmg+DQogI2RlZmluZSBJU0xPV0VSKGMpICgnYScgPD0g KGMpICYmIChjKSA8PSAneicpDQpAQCAtMzM0MCw3ICszMzI5LDcgQEAgaWYg KFhPUiAoaXNsb3dlciAoaSksIElTTE9XRVIgKGkpKSB8fCB0bw0KIGV4aXQg KDApOyB9DQogDQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToz MzQ0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1 OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29u ZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsDQoraWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTozMzMzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0g JiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsDQogdGhlbg0KICAg Og0KIGVsc2UNCkBAIC0zMzg0LDE3ICszMzczLDE3IEBAIGZvciBhY19oZHIg aW4gY3R5cGUuaCBlbmRpYW4uaCBsaW5rLmggdGgNCiBkbw0KIGFjX3NhZmU9 YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYA0KIGVjaG8g JGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYN Ci1lY2hvICJjb25maWd1cmU6MzM4ODogY2hlY2tpbmcgZm9yICRhY19oZHIi ID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTozMzc3OiBjaGVja2luZyBmb3IgJGFj X2hkciIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2 X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBl Y2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNh dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAzMzkzICJjb25m aWd1cmUiDQorI2xpbmUgMzM4MiAiY29uZmlndXJlIg0KICNpbmNsdWRlICJj b25mZGVmcy5oIg0KICNpbmNsdWRlIDwkYWNfaGRyPg0KIEVPRg0KIGFjX3Ry eT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25m dGVzdC5vdXQiDQoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzk4OiBcIiRh Y190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KK3sgKGV2 YWwgZWNobyBjb25maWd1cmU6MzM4NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChl dmFsICRhY190cnkpIDI+JjU7IH0NCiBhY19lcnI9YGdyZXAgLXYgJ14gKisn IGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1c JCJgDQogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4NCiAgIHJtIC1yZiBj b25mdGVzdCoNCkBAIC0zNDIxLDEyICszNDEwLDEyIEBAIGZpDQogZG9uZQ0K IA0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgc3RhdCBmaWxlLW1v ZGUgbWFjcm9zIGFyZSBicm9rZW4iIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8g ImNvbmZpZ3VyZTozNDI1OiBjaGVja2luZyB3aGV0aGVyIHN0YXQgZmlsZS1t b2RlIG1hY3JvcyBhcmUgYnJva2VuIiA+JjUNCitlY2hvICJjb25maWd1cmU6 MzQxNDogY2hlY2tpbmcgd2hldGhlciBzdGF0IGZpbGUtbW9kZSBtYWNyb3Mg YXJlIGJyb2tlbiIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7 J2FjX2N2X2hlYWRlcl9zdGF0X2Jyb2tlbicrc2V0fSdgXCIgPSBzZXQiOyB0 aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVs c2UNCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAz NDMwICJjb25maWd1cmUiDQorI2xpbmUgMzQxOSAiY29uZmlndXJlIg0KICNp bmNsdWRlICJjb25mZGVmcy5oIg0KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4N CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4NCkBAIC0zNDc4LDEyICszNDY3LDEy IEBAIGZpDQogDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdvcmtp bmcgY29uc3QiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToz NDgyOiBjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIgPiY1DQorZWNobyAi Y29uZmlndXJlOjM0NzE6IGNoZWNraW5nIGZvciB3b3JraW5nIGNvbnN0IiA+ JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY19jb25z dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2Fj aGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+IGNvbmZ0ZXN0LiRh Y19leHQgPDxFT0YNCi0jbGluZSAzNDg3ICJjb25maWd1cmUiDQorI2xpbmUg MzQ3NiAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5oIg0KIA0K IGludCBtYWluKCkgew0KQEAgLTM1MzIsNyArMzUyMSw3IEBAIGNjcCA9IChj aGFyIGNvbnN0ICpjb25zdCAqKSBwOw0KIA0KIDsgcmV0dXJuIDA7IH0NCiBF T0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1MzY6IFwiJGFjX2Nv bXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRo ZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1MjU6IFwiJGFjX2Nv bXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRo ZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGFjX2N2X2NfY29uc3Q9eWVz DQogZWxzZQ0KQEAgLTM1NTYsMTIgKzM1NDUsMTIgQEAgZmkNCiBmb3IgYWNf ZnVuYyBpbiBzZXRwZ2lkIHNicmsgc2lnYWN0aW9uIGlzYXNjaWkgYnplcm8g YmNvcHkgYnRvd2MgcG9sbCBzaWdwcm9jbWFzaw0KIGRvDQogZWNobyAkYWNf biAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYNCi1l Y2hvICJjb25maWd1cmU6MzU2MDogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+ JjUNCitlY2hvICJjb25maWd1cmU6MzU0OTogY2hlY2tpbmcgZm9yICRhY19m dW5jIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zf ZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hv ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+ IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAzNTY1ICJjb25maWd1 cmUiDQorI2xpbmUgMzU1NCAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25m ZGVmcy5oIg0KIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBt YWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywNCiAgICAgd2hp Y2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4g ICovDQpAQCAtMzU4NCw3ICszNTczLDcgQEAgJGFjX2Z1bmMoKTsNCiANCiA7 IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy ZTozNTg4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4N CitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1Nzc6IFwiJGFjX2xpbmtc IikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBj b25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0 Kg0KICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiDQogZWxzZQ0K QEAgLTM2MTEsMTkgKzM2MDAsMTkgQEAgZG9uZQ0KICMgVGhlIFVsdHJpeCA0 LjIgbWlwcyBidWlsdGluIGFsbG9jYSBkZWNsYXJlZCBieSBhbGxvY2EuaCBv bmx5IHdvcmtzDQogIyBmb3IgY29uc3RhbnQgYXJndW1lbnRzLiAgVXNlbGVz cyENCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd29ya2luZyBhbGxvY2Eu aCIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjM2MTU6IGNo ZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUNCitlY2hvICJjb25m aWd1cmU6MzYwNDogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiID4m NQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJf YWxsb2NhX2gnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNf biAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25m dGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMzYyMCAiY29uZmlndXJlIg0K KyNsaW5lIDM2MDkgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMu aCINCiAjaW5jbHVkZSA8YWxsb2NhLmg+DQogaW50IG1haW4oKSB7DQogY2hh ciAqcCA9IGFsbG9jYSgyICogc2l6ZW9mKGludCkpOw0KIDsgcmV0dXJuIDA7 IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM2Mjc6IFwi JGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2 YWwgZWNobyBjb25maWd1cmU6MzYxNjogXCIkYWNfbGlua1wiKSAxPiY1OyAo ZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHth Y19leGVleHR9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBhY19j dl9oZWFkZXJfYWxsb2NhX2g9eWVzDQogZWxzZQ0KQEAgLTM2NDQsMTIgKzM2 MzMsMTIgQEAgRU9GDQogZmkNCiANCiBlY2hvICRhY19uICJjaGVja2luZyBm b3IgYWxsb2NhIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6 MzY0ODogY2hlY2tpbmcgZm9yIGFsbG9jYSIgPiY1DQorZWNobyAiY29uZmln dXJlOjM2Mzc6IGNoZWNraW5nIGZvciBhbGxvY2EiID4mNQ0KIGlmIGV2YWwg InRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2FsbG9jYV93b3Jrcycr c2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVk KSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19l eHQgPDxFT0YNCi0jbGluZSAzNjUzICJjb25maWd1cmUiDQorI2xpbmUgMzY0 MiAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5oIg0KIA0KICNp ZmRlZiBfX0dOVUNfXw0KQEAgLTM2NzcsNyArMzY2Niw3IEBAIGludCBtYWlu KCkgew0KIGNoYXIgKnAgPSAoY2hhciAqKSBhbGxvY2EoMSk7DQogOyByZXR1 cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzY4 MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYg eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNjcwOiBcIiRhY19saW5rXCIpIDE+ JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl c3Qke2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAg IGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzPXllcw0KIGVsc2UNCkBAIC0zNzA5 LDEyICszNjk4LDEyIEBAIEVPRg0KIA0KIA0KIGVjaG8gJGFjX24gImNoZWNr aW5nIHdoZXRoZXIgYWxsb2NhIG5lZWRzIENyYXkgaG9va3MiIi4uLiAkYWNf YyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTozNzEzOiBjaGVja2luZyB3aGV0 aGVyIGFsbG9jYSBuZWVkcyBDcmF5IGhvb2tzIiA+JjUNCitlY2hvICJjb25m aWd1cmU6MzcwMjogY2hlY2tpbmcgd2hldGhlciBhbGxvY2EgbmVlZHMgQ3Jh eSBob29rcyIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2Fj X2N2X29zX2NyYXknK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAk YWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBj b25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMzcxOCAiY29uZmlndXJl Ig0KKyNsaW5lIDM3MDcgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRl ZnMuaCINCiAjaWYgZGVmaW5lZChDUkFZKSAmJiAhIGRlZmluZWQoQ1JBWTIp DQogd2ViZWNyYXkNCkBAIC0zNzM5LDEyICszNzI4LDEyIEBAIGVjaG8gIiRh Y190IiIkYWNfY3Zfb3NfY3JheSIgMT4mNg0KIGlmIHRlc3QgJGFjX2N2X29z X2NyYXkgPSB5ZXM7IHRoZW4NCiBmb3IgYWNfZnVuYyBpbiBfZ2V0YjY3IEdF VEI2NyBnZXRiNjc7IGRvDQogICBlY2hvICRhY19uICJjaGVja2luZyBmb3Ig JGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZToz NzQzOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQ0KK2VjaG8gImNvbmZp Z3VyZTozNzMyOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQ0KIGlmIGV2 YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytz ZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQp ICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4 dCA8PEVPRg0KLSNsaW5lIDM3NDggImNvbmZpZ3VyZSINCisjbGluZSAzNzM3 ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogLyogU3lz dGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1 bGx5IGZldyBwcm90b3R5cGVzLA0KICAgICB3aGljaCBjYW4gY29uZmxpY3Qg d2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8NCkBAIC0zNzY3LDcg KzM3NTYsNyBAQCAkYWNfZnVuYygpOw0KIA0KIDsgcmV0dXJuIDA7IH0NCiBF T0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3NzE6IFwiJGFjX2xp bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt cyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6Mzc2MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl eHR9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBldmFsICJhY19j dl9mdW5jXyRhY19mdW5jPXllcyINCiBlbHNlDQpAQCAtMzc5NCw3ICszNzgz LDcgQEAgZG9uZQ0KIGZpDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgc3Rh Y2sgZGlyZWN0aW9uIGZvciBDIGFsbG9jYSIiLi4uICRhY19jIiAxPiY2DQot ZWNobyAiY29uZmlndXJlOjM3OTg6IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlv biBmb3IgQyBhbGxvY2EiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTozNzg3OiBj aGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUNCiBp ZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY19zdGFja19kaXJl Y3Rpb24nK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAi KGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtMzgwMiw3ICszNzkx LDcgQEAgZWxzZQ0KICAgYWNfY3ZfY19zdGFja19kaXJlY3Rpb249MA0KIGVs c2UNCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSAz ODA2ICJjb25maWd1cmUiDQorI2xpbmUgMzc5NSAiY29uZmlndXJlIg0KICNp bmNsdWRlICJjb25mZGVmcy5oIg0KIGZpbmRfc3RhY2tfZGlyZWN0aW9uICgp DQogew0KQEAgLTM4MjEsNyArMzgxMCw3IEBAIG1haW4gKCkNCiAgIGV4aXQg KGZpbmRfc3RhY2tfZGlyZWN0aW9uKCkgPCAwKTsNCiB9DQogRU9GDQotaWYg eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODI1OiBcIiRhY19saW5rXCIpIDE+ JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl c3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9u dWxsDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODE0OiBcIiRhY19s aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3Qg LXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQp IDI+L2Rldi9udWxsDQogdGhlbg0KICAgYWNfY3ZfY19zdGFja19kaXJlY3Rp b249MQ0KIGVsc2UNCkBAIC0zODQ2LDE5ICszODM1LDE5IEBAIGZpDQogIyBT ZWUgaWYgbWFjaGluZS9yZWcuaCBzdXBwb3J0cyB0aGUgJWZzIGFuZCAlZ3Mg aTM4NiBzZWdtZW50IHJlZ2lzdGVycy4NCiAjIE9sZGVyIGkzODYgQlNEJ3Mg ZG9uJ3QgaGF2ZSB0aGUgcl9mcyBhbmQgcl9ncyBtZW1iZXJzIG9mIGBzdHJ1 Y3QgcmVnJy4NCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igcl9mcyBpbiBz dHJ1Y3QgcmVnIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6 Mzg1MDogY2hlY2tpbmcgZm9yIHJfZnMgaW4gc3RydWN0IHJlZyIgPiY1DQor ZWNobyAiY29uZmlndXJlOjM4Mzk6IGNoZWNraW5nIGZvciByX2ZzIGluIHN0 cnVjdCByZWciID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydn ZGJfY3Zfc3RydWN0X3JlZ19yX2ZzJytzZXR9J2BcIiA9IHNldCI7IHRoZW4N CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0K ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDM4NTUg ImNvbmZpZ3VyZSINCisjbGluZSAzODQ0ICJjb25maWd1cmUiDQogI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPG1hY2hpbmUvcmVnLmg+DQog aW50IG1haW4oKSB7DQogc3RydWN0IHJlZyByOyByLnJfZnM7DQogOyByZXR1 cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg2 MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkg Mj4mNTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzg1 MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkg Mj4mNTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgZ2RiX2N2 X3N0cnVjdF9yZWdfcl9mcz15ZXMNCiBlbHNlDQpAQCAtMzg3OCwxOSArMzg2 NywxOSBAQCBFT0YNCiANCiBmaQ0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZv ciByX2dzIGluIHN0cnVjdCByZWciIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8g ImNvbmZpZ3VyZTozODgyOiBjaGVja2luZyBmb3Igcl9ncyBpbiBzdHJ1Y3Qg cmVnIiA+JjUNCitlY2hvICJjb25maWd1cmU6Mzg3MTogY2hlY2tpbmcgZm9y IHJfZ3MgaW4gc3RydWN0IHJlZyIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBl Y2hvICckJyd7J2dkYl9jdl9zdHJ1Y3RfcmVnX3JfZ3MnK3NldH0nYFwiID0g c2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+ JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQot I2xpbmUgMzg4NyAiY29uZmlndXJlIg0KKyNsaW5lIDM4NzYgImNvbmZpZ3Vy ZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8bWFjaGlu ZS9yZWcuaD4NCiBpbnQgbWFpbigpIHsNCiBzdHJ1Y3QgcmVnIHI7IHIucl9n czsNCiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTozODk0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRh Y19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTozODgzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRh Y19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3Qq DQogICBnZGJfY3Zfc3RydWN0X3JlZ19yX2dzPXllcw0KIGVsc2UNCkBAIC0z OTExLDE5ICszOTAwLDE5IEBAIEVPRg0KIGZpDQogDQogZWNobyAkYWNfbiAi Y2hlY2tpbmcgZm9yIFBUUkFDRV9HRVRSRUdTIiIuLi4gJGFjX2MiIDE+JjYN Ci1lY2hvICJjb25maWd1cmU6MzkxNTogY2hlY2tpbmcgZm9yIFBUUkFDRV9H RVRSRUdTIiA+JjUNCitlY2hvICJjb25maWd1cmU6MzkwNDogY2hlY2tpbmcg Zm9yIFBUUkFDRV9HRVRSRUdTIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVj aG8gJyQnJ3snZ2RiX2N2X2hhdmVfcHRyYWNlX2dldHJlZ3MnK3NldH0nYFwi ID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi IDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G DQotI2xpbmUgMzkyMCAiY29uZmlndXJlIg0KKyNsaW5lIDM5MDkgImNvbmZp Z3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8c3lz L3B0cmFjZS5oPg0KIGludCBtYWluKCkgew0KIFBUUkFDRV9HRVRSRUdTOw0K IDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjM5Mjc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+JjU7IH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjM5MTY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAg IGdkYl9jdl9oYXZlX3B0cmFjZV9nZXRyZWdzPXllcw0KIGVsc2UNCkBAIC0z OTQ0LDE5ICszOTMzLDE5IEBAIEVPRg0KIGZpDQogDQogZWNobyAkYWNfbiAi Y2hlY2tpbmcgZm9yIFBUUkFDRV9HRVRYRlBSRUdTIiIuLi4gJGFjX2MiIDE+ JjYNCi1lY2hvICJjb25maWd1cmU6Mzk0ODogY2hlY2tpbmcgZm9yIFBUUkFD RV9HRVRYRlBSRUdTIiA+JjUNCitlY2hvICJjb25maWd1cmU6MzkzNzogY2hl Y2tpbmcgZm9yIFBUUkFDRV9HRVRYRlBSRUdTIiA+JjUNCiBpZiBldmFsICJ0 ZXN0IFwiYGVjaG8gJyQnJ3snZ2RiX2N2X2hhdmVfcHRyYWNlX2dldHhmcHJl Z3MnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNh Y2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4k YWNfZXh0IDw8RU9GDQotI2xpbmUgMzk1MyAiY29uZmlndXJlIg0KKyNsaW5l IDM5NDIgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAj aW5jbHVkZSA8c3lzL3B0cmFjZS5oPg0KIGludCBtYWluKCkgew0KIFBUUkFD RV9HRVRYRlBSRUdTOw0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChl dmFsIGVjaG8gY29uZmlndXJlOjM5NjA6IFwiJGFjX2NvbXBpbGVcIikgMT4m NTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCitpZiB7IChl dmFsIGVjaG8gY29uZmlndXJlOjM5NDk6IFwiJGFjX2NvbXBpbGVcIikgMT4m NTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgIHJtIC1y ZiBjb25mdGVzdCoNCiAgIGdkYl9jdl9oYXZlX3B0cmFjZV9nZXR4ZnByZWdz PXllcw0KIGVsc2UNCkBAIC0zOTc3LDcgKzM5NjYsNyBAQCBFT0YNCiBmaQ0K IA0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzb2NrZXRwYWlyIGluIC1s c29ja2V0IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6Mzk4 MTogY2hlY2tpbmcgZm9yIHNvY2tldHBhaXIgaW4gLWxzb2NrZXQiID4mNQ0K K2VjaG8gImNvbmZpZ3VyZTozOTcwOiBjaGVja2luZyBmb3Igc29ja2V0cGFp ciBpbiAtbHNvY2tldCIgPiY1DQogYWNfbGliX3Zhcj1gZWNobyBzb2NrZXQn Xydzb2NrZXRwYWlyIHwgc2VkICd5JS4vKy0lX19wXyUnYA0KIGlmIGV2YWwg InRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3Nl dH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkg JGFjX2MiIDE+JjYNCkBAIC0zOTg1LDcgKzM5NzQsNyBAQCBlbHNlDQogICBh Y19zYXZlX0xJQlM9IiRMSUJTIg0KIExJQlM9Ii1sc29ja2V0ICAkTElCUyIN CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgMzk4OSAi Y29uZmlndXJlIg0KKyNsaW5lIDM5NzggImNvbmZpZ3VyZSINCiAjaW5jbHVk ZSAiY29uZmRlZnMuaCINCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5h bCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLw0KIC8qIFdlIHVz ZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlw ZSBvZiBhIGdjYzINCkBAIC0zOTk2LDcgKzM5ODUsNyBAQCBpbnQgbWFpbigp IHsNCiBzb2NrZXRwYWlyKCkNCiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYg eyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MDAwOiBcIiRhY19saW5rXCIpIDE+ JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRl c3Qke2FjX2V4ZWV4dH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjM5ODk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmsp IDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhl bg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgZXZhbCAiYWNfY3ZfbGliXyRh Y19saWJfdmFyPXllcyINCiBlbHNlDQpAQCAtNDAyNiwxMiArNDAxNSwxMiBA QCBmaQ0KIGZvciBhY19mdW5jIGluIHNvY2tldHBhaXINCiBkbw0KIGVjaG8g JGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2 DQotZWNobyAiY29uZmlndXJlOjQwMzA6IGNoZWNraW5nIGZvciAkYWNfZnVu YyIgPiY1DQorZWNobyAiY29uZmlndXJlOjQwMTk6IGNoZWNraW5nIGZvciAk YWNfZnVuYyIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2Fj X2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAg ZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBj YXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNDAzNSAiY29u ZmlndXJlIg0KKyNsaW5lIDQwMjQgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAi Y29uZmRlZnMuaCINCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0 dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsDQogICAg IHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVs b3cuICAqLw0KQEAgLTQwNTQsNyArNDA0Myw3IEBAICRhY19mdW5jKCk7DQog DQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25m aWd1cmU6NDA1ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu aykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0 aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0MDQ3OiBcIiRhY19s aW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3Qg LXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25m dGVzdCoNCiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIg0KIGVs c2UNCkBAIC00MDgxLDEyICs0MDcwLDEyIEBAIGRvbmUNCiANCiANCiBlY2hv ICRhY19uICJjaGVja2luZyB3aGV0aGVyIG1hbGxvYyBtdXN0IGJlIGRlY2xh cmVkIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6NDA4NTog Y2hlY2tpbmcgd2hldGhlciBtYWxsb2MgbXVzdCBiZSBkZWNsYXJlZCIgPiY1 DQorZWNobyAiY29uZmlndXJlOjQwNzQ6IGNoZWNraW5nIHdoZXRoZXIgbWFs bG9jIG11c3QgYmUgZGVjbGFyZWQiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJg ZWNobyAnJCcneydiZmRfY3ZfZGVjbF9uZWVkZWRfbWFsbG9jJytzZXR9J2Bc IiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19j IiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP Rg0KLSNsaW5lIDQwOTAgImNvbmZpZ3VyZSINCisjbGluZSA0MDc5ICJjb25m aWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQogI2luY2x1ZGUg PHN0ZGlvLmg+DQpAQCAtNDEwNyw3ICs0MDk2LDcgQEAgaW50IG1haW4oKSB7 DQogY2hhciAqKCpwZm4pID0gKGNoYXIgKigqKSkgbWFsbG9jDQogOyByZXR1 cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDEx MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkg Mj4mNTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDEw MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkg Mj4mNTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgYmZkX2N2 X2RlY2xfbmVlZGVkX21hbGxvYz1ubw0KIGVsc2UNCkBAIC00MTI4LDEyICs0 MTE3LDEyIEBAIEVPRg0KIGZpDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcg d2hldGhlciByZWFsbG9jIG11c3QgYmUgZGVjbGFyZWQiIi4uLiAkYWNfYyIg MT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0MTMyOiBjaGVja2luZyB3aGV0aGVy IHJlYWxsb2MgbXVzdCBiZSBkZWNsYXJlZCIgPiY1DQorZWNobyAiY29uZmln dXJlOjQxMjE6IGNoZWNraW5nIHdoZXRoZXIgcmVhbGxvYyBtdXN0IGJlIGRl Y2xhcmVkIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZk X2N2X2RlY2xfbmVlZGVkX3JlYWxsb2MnK3NldH0nYFwiID0gc2V0IjsgdGhl bg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNl DQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNDEz NyAiY29uZmlndXJlIg0KKyNsaW5lIDQxMjYgImNvbmZpZ3VyZSINCiAjaW5j bHVkZSAiY29uZmRlZnMuaCINCiANCiAjaW5jbHVkZSA8c3RkaW8uaD4NCkBA IC00MTU0LDcgKzQxNDMsNyBAQCBpbnQgbWFpbigpIHsNCiBjaGFyICooKnBm bikgPSAoY2hhciAqKCopKSByZWFsbG9jDQogOyByZXR1cm4gMDsgfQ0KIEVP Rg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDE1ODogXCIkYWNfY29t cGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhl bg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDE0NzogXCIkYWNfY29t cGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhl bg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgYmZkX2N2X2RlY2xfbmVlZGVk X3JlYWxsb2M9bm8NCiBlbHNlDQpAQCAtNDE3NSwxMiArNDE2NCwxMiBAQCBF T0YNCiBmaQ0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgZnJl ZSBtdXN0IGJlIGRlY2xhcmVkIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJj b25maWd1cmU6NDE3OTogY2hlY2tpbmcgd2hldGhlciBmcmVlIG11c3QgYmUg ZGVjbGFyZWQiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo0MTY4OiBjaGVja2lu ZyB3aGV0aGVyIGZyZWUgbXVzdCBiZSBkZWNsYXJlZCIgPiY1DQogaWYgZXZh bCAidGVzdCBcImBlY2hvICckJyd7J2JmZF9jdl9kZWNsX25lZWRlZF9mcmVl JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNo ZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFj X2V4dCA8PEVPRg0KLSNsaW5lIDQxODQgImNvbmZpZ3VyZSINCisjbGluZSA0 MTczICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQog I2luY2x1ZGUgPHN0ZGlvLmg+DQpAQCAtNDIwMSw3ICs0MTkwLDcgQEAgaW50 IG1haW4oKSB7DQogY2hhciAqKCpwZm4pID0gKGNoYXIgKigqKSkgZnJlZQ0K IDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjQyMDU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+JjU7IH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjQxOTQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAg IGJmZF9jdl9kZWNsX25lZWRlZF9mcmVlPW5vDQogZWxzZQ0KQEAgLTQyMjIs MTIgKzQyMTEsMTIgQEAgRU9GDQogZmkNCiANCiBlY2hvICRhY19uICJjaGVj a2luZyB3aGV0aGVyIHN0cmVycm9yIG11c3QgYmUgZGVjbGFyZWQiIi4uLiAk YWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0MjI2OiBjaGVja2luZyB3 aGV0aGVyIHN0cmVycm9yIG11c3QgYmUgZGVjbGFyZWQiID4mNQ0KK2VjaG8g ImNvbmZpZ3VyZTo0MjE1OiBjaGVja2luZyB3aGV0aGVyIHN0cmVycm9yIG11 c3QgYmUgZGVjbGFyZWQiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJgZWNobyAn JCcneydiZmRfY3ZfZGVjbF9uZWVkZWRfc3RyZXJyb3InK3NldH0nYFwiID0g c2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+ JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQot I2xpbmUgNDIzMSAiY29uZmlndXJlIg0KKyNsaW5lIDQyMjAgImNvbmZpZ3Vy ZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiANCiAjaW5jbHVkZSA8c3Rk aW8uaD4NCkBAIC00MjQ4LDcgKzQyMzcsNyBAQCBpbnQgbWFpbigpIHsNCiBj aGFyICooKnBmbikgPSAoY2hhciAqKCopKSBzdHJlcnJvcg0KIDsgcmV0dXJu IDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQyNTI6 IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+ JjU7IH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQyNDE6 IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+ JjU7IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGJmZF9jdl9k ZWNsX25lZWRlZF9zdHJlcnJvcj1ubw0KIGVsc2UNCkBAIC00MjY5LDEyICs0 MjU4LDEyIEBAIEVPRg0KIGZpDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcg d2hldGhlciBzdHJkdXAgbXVzdCBiZSBkZWNsYXJlZCIiLi4uICRhY19jIiAx PiY2DQotZWNobyAiY29uZmlndXJlOjQyNzM6IGNoZWNraW5nIHdoZXRoZXIg c3RyZHVwIG11c3QgYmUgZGVjbGFyZWQiID4mNQ0KK2VjaG8gImNvbmZpZ3Vy ZTo0MjYyOiBjaGVja2luZyB3aGV0aGVyIHN0cmR1cCBtdXN0IGJlIGRlY2xh cmVkIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2 X2RlY2xfbmVlZGVkX3N0cmR1cCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQog ICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCiAg IGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSA0Mjc4ICJj b25maWd1cmUiDQorI2xpbmUgNDI2NyAiY29uZmlndXJlIg0KICNpbmNsdWRl ICJjb25mZGVmcy5oIg0KIA0KICNpbmNsdWRlIDxzdGRpby5oPg0KQEAgLTQy OTUsNyArNDI4NCw3IEBAIGludCBtYWluKCkgew0KIGNoYXIgKigqcGZuKSA9 IChjaGFyICooKikpIHN0cmR1cA0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1p ZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQyOTk6IFwiJGFjX2NvbXBpbGVc IikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCitp ZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQyODg6IFwiJGFjX2NvbXBpbGVc IikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCiAg IHJtIC1yZiBjb25mdGVzdCoNCiAgIGJmZF9jdl9kZWNsX25lZWRlZF9zdHJk dXA9bm8NCiBlbHNlDQpAQCAtNDMxNiwxMiArNDMwNSwxMiBAQCBFT0YNCiBm aQ0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgc3Ryc3RyIG11 c3QgYmUgZGVjbGFyZWQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZp Z3VyZTo0MzIwOiBjaGVja2luZyB3aGV0aGVyIHN0cnN0ciBtdXN0IGJlIGRl Y2xhcmVkIiA+JjUNCitlY2hvICJjb25maWd1cmU6NDMwOTogY2hlY2tpbmcg d2hldGhlciBzdHJzdHIgbXVzdCBiZSBkZWNsYXJlZCIgPiY1DQogaWYgZXZh bCAidGVzdCBcImBlY2hvICckJyd7J2JmZF9jdl9kZWNsX25lZWRlZF9zdHJz dHInK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNh Y2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4k YWNfZXh0IDw8RU9GDQotI2xpbmUgNDMyNSAiY29uZmlndXJlIg0KKyNsaW5l IDQzMTQgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAN CiAjaW5jbHVkZSA8c3RkaW8uaD4NCkBAIC00MzQyLDcgKzQzMzEsNyBAQCBp bnQgbWFpbigpIHsNCiBjaGFyICooKnBmbikgPSAoY2hhciAqKCopKSBzdHJz dHINCiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTo0MzQ2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRh Y19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTo0MzM1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRh Y19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3Qq DQogICBiZmRfY3ZfZGVjbF9uZWVkZWRfc3Ryc3RyPW5vDQogZWxzZQ0KQEAg LTQzNjksOSArNDM1OCw5IEBAIGZpDQogIyBjb3VsZCBiZSBleHB1bmdlZC4g LS1qc20gMTk5OS0wMy0yMg0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZv ciBIUFVYIHNhdmVfc3RhdGUgc3RydWN0dXJlIiIuLi4gJGFjX2MiIDE+JjYN Ci1lY2hvICJjb25maWd1cmU6NDM3MzogY2hlY2tpbmcgZm9yIEhQVVggc2F2 ZV9zdGF0ZSBzdHJ1Y3R1cmUiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo0MzYy OiBjaGVja2luZyBmb3IgSFBVWCBzYXZlX3N0YXRlIHN0cnVjdHVyZSIgPiY1 DQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDQzNzUg ImNvbmZpZ3VyZSINCisjbGluZSA0MzY0ICJjb25maWd1cmUiDQogI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPG1hY2hpbmUvc2F2ZV9zdGF0 ZS5oPg0KIEVPRg0KQEAgLTQzODYsNyArNDM3NSw3IEBAIGZpDQogcm0gLWYg Y29uZnRlc3QqDQogDQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0K LSNsaW5lIDQzOTAgImNvbmZpZ3VyZSINCisjbGluZSA0Mzc5ICJjb25maWd1 cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPG1hY2hp bmUvc2F2ZV9zdGF0ZS5oPg0KIEVPRg0KQEAgLTQ0NTAsMTkgKzQ0MzksMTkg QEAgZmkNCiANCiBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3N5c19wcm9jZnNf aCIgPSB5ZXM7IHRoZW4NCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBw c3RhdHVzX3QgaW4gc3lzL3Byb2Nmcy5oIiIuLi4gJGFjX2MiIDE+JjYNCi1l Y2hvICJjb25maWd1cmU6NDQ1NDogY2hlY2tpbmcgZm9yIHBzdGF0dXNfdCBp biBzeXMvcHJvY2ZzLmgiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo0NDQzOiBj aGVja2luZyBmb3IgcHN0YXR1c190IGluIHN5cy9wcm9jZnMuaCIgPiY1DQog IGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydiZmRfY3ZfaGF2ZV9zeXNf cHJvY2ZzX3R5cGVfcHN0YXR1c190JytzZXR9J2BcIiA9IHNldCI7IHRoZW4N CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0K ICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDQ0NTkg ImNvbmZpZ3VyZSINCisjbGluZSA0NDQ4ICJjb25maWd1cmUiDQogI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4NCiBp bnQgbWFpbigpIHsNCiBwc3RhdHVzX3QgYXZhcg0KIDsgcmV0dXJuIDA7IH0N CiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ0NjY6IFwiJGFj X2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07 IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ0NTU6IFwiJGFj X2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07 IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGJmZF9jdl9oYXZlX3N5 c19wcm9jZnNfdHlwZV9wc3RhdHVzX3Q9eWVzDQogZWxzZQ0KQEAgLTQ0ODQs MTkgKzQ0NzMsMTkgQEAgRU9GDQogIGVjaG8gIiRhY190IiIkYmZkX2N2X2hh dmVfc3lzX3Byb2Nmc190eXBlX3BzdGF0dXNfdCIgMT4mNg0KIA0KICAgZWNo byAkYWNfbiAiY2hlY2tpbmcgZm9yIHBycnVuX3QgaW4gc3lzL3Byb2Nmcy5o IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6NDQ4ODogY2hl Y2tpbmcgZm9yIHBycnVuX3QgaW4gc3lzL3Byb2Nmcy5oIiA+JjUNCitlY2hv ICJjb25maWd1cmU6NDQ3NzogY2hlY2tpbmcgZm9yIHBycnVuX3QgaW4gc3lz L3Byb2Nmcy5oIiA+JjUNCiAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7 J2JmZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9wcnJ1bl90JytzZXR9J2Bc IiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19j IiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP Rg0KLSNsaW5lIDQ0OTMgImNvbmZpZ3VyZSINCisjbGluZSA0NDgyICJjb25m aWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPHN5 cy9wcm9jZnMuaD4NCiBpbnQgbWFpbigpIHsNCiBwcnJ1bl90IGF2YXINCiA7 IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy ZTo0NTAwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21w aWxlKSAyPiY1OyB9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy ZTo0NDg5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21w aWxlKSAyPiY1OyB9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBi ZmRfY3ZfaGF2ZV9zeXNfcHJvY2ZzX3R5cGVfcHJydW5fdD15ZXMNCiBlbHNl DQpAQCAtNDUxOCwxOSArNDUwNywxOSBAQCBFT0YNCiAgZWNobyAiJGFjX3Qi IiRiZmRfY3ZfaGF2ZV9zeXNfcHJvY2ZzX3R5cGVfcHJydW5fdCIgMT4mNg0K IA0KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdyZWdzZXRfdCBpbiBz eXMvcHJvY2ZzLmgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3Vy ZTo0NTIyOiBjaGVja2luZyBmb3IgZ3JlZ3NldF90IGluIHN5cy9wcm9jZnMu aCIgPiY1DQorZWNobyAiY29uZmlndXJlOjQ1MTE6IGNoZWNraW5nIGZvciBn cmVnc2V0X3QgaW4gc3lzL3Byb2Nmcy5oIiA+JjUNCiAgaWYgZXZhbCAidGVz dCBcImBlY2hvICckJyd7J2JmZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9n cmVnc2V0X3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNf biAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25m dGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNDUyNyAiY29uZmlndXJlIg0K KyNsaW5lIDQ1MTYgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMu aCINCiAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPg0KIGludCBtYWluKCkgew0K IGdyZWdzZXRfdCBhdmFyDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsg KGV2YWwgZWNobyBjb25maWd1cmU6NDUzNDogXCIkYWNfY29tcGlsZVwiKSAx PiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KK2lmIHsg KGV2YWwgZWNobyBjb25maWd1cmU6NDUyMzogXCIkYWNfY29tcGlsZVwiKSAx PiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICAgcm0g LXJmIGNvbmZ0ZXN0Kg0KICAgYmZkX2N2X2hhdmVfc3lzX3Byb2Nmc190eXBl X2dyZWdzZXRfdD15ZXMNCiBlbHNlDQpAQCAtNDU1MiwxOSArNDU0MSwxOSBA QCBFT0YNCiAgZWNobyAiJGFjX3QiIiRiZmRfY3ZfaGF2ZV9zeXNfcHJvY2Zz X3R5cGVfZ3JlZ3NldF90IiAxPiY2DQogDQogICBlY2hvICRhY19uICJjaGVj a2luZyBmb3IgZnByZWdzZXRfdCBpbiBzeXMvcHJvY2ZzLmgiIi4uLiAkYWNf YyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0NTU2OiBjaGVja2luZyBmb3Ig ZnByZWdzZXRfdCBpbiBzeXMvcHJvY2ZzLmgiID4mNQ0KK2VjaG8gImNvbmZp Z3VyZTo0NTQ1OiBjaGVja2luZyBmb3IgZnByZWdzZXRfdCBpbiBzeXMvcHJv Y2ZzLmgiID4mNQ0KICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZk X2N2X2hhdmVfc3lzX3Byb2Nmc190eXBlX2ZwcmVnc2V0X3QnK3NldH0nYFwi ID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi IDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G DQotI2xpbmUgNDU2MSAiY29uZmlndXJlIg0KKyNsaW5lIDQ1NTAgImNvbmZp Z3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8c3lz L3Byb2Nmcy5oPg0KIGludCBtYWluKCkgew0KIGZwcmVnc2V0X3QgYXZhcg0K IDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjQ1Njg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+JjU7IH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmln dXJlOjQ1NTc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2Nv bXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAg IGJmZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9mcHJlZ3NldF90PXllcw0K IGVsc2UNCkBAIC00NTg2LDE5ICs0NTc1LDE5IEBAIEVPRg0KICBlY2hvICIk YWNfdCIiJGJmZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9mcHJlZ3NldF90 IiAxPiY2DQogDQogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHJncmVn c2V0X3QgaW4gc3lzL3Byb2Nmcy5oIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hv ICJjb25maWd1cmU6NDU5MDogY2hlY2tpbmcgZm9yIHByZ3JlZ3NldF90IGlu IHN5cy9wcm9jZnMuaCIgPiY1DQorZWNobyAiY29uZmlndXJlOjQ1Nzk6IGNo ZWNraW5nIGZvciBwcmdyZWdzZXRfdCBpbiBzeXMvcHJvY2ZzLmgiID4mNQ0K ICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2X2hhdmVfc3lz X3Byb2Nmc190eXBlX3ByZ3JlZ3NldF90JytzZXR9J2BcIiA9IHNldCI7IHRo ZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxz ZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDQ1 OTUgImNvbmZpZ3VyZSINCisjbGluZSA0NTg0ICJjb25maWd1cmUiDQogI2lu Y2x1ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4N CiBpbnQgbWFpbigpIHsNCiBwcmdyZWdzZXRfdCBhdmFyDQogOyByZXR1cm4g MDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDYwMjog XCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4m NTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDU5MTog XCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4m NTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgYmZkX2N2X2hh dmVfc3lzX3Byb2Nmc190eXBlX3ByZ3JlZ3NldF90PXllcw0KIGVsc2UNCkBA IC00NjIwLDE5ICs0NjA5LDE5IEBAIEVPRg0KICBlY2hvICIkYWNfdCIiJGJm ZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9wcmdyZWdzZXRfdCIgMT4mNg0K IA0KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHByZnByZWdzZXRfdCBp biBzeXMvcHJvY2ZzLmgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZp Z3VyZTo0NjI0OiBjaGVja2luZyBmb3IgcHJmcHJlZ3NldF90IGluIHN5cy9w cm9jZnMuaCIgPiY1DQorZWNobyAiY29uZmlndXJlOjQ2MTM6IGNoZWNraW5n IGZvciBwcmZwcmVnc2V0X3QgaW4gc3lzL3Byb2Nmcy5oIiA+JjUNCiAgaWYg ZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2JmZF9jdl9oYXZlX3N5c19wcm9j ZnNfdHlwZV9wcmZwcmVnc2V0X3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0K ICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQog ICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNDYyOSAi Y29uZmlndXJlIg0KKyNsaW5lIDQ2MTggImNvbmZpZ3VyZSINCiAjaW5jbHVk ZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPg0KIGlu dCBtYWluKCkgew0KIHByZnByZWdzZXRfdCBhdmFyDQogOyByZXR1cm4gMDsg fQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDYzNjogXCIk YWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsg fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDYyNTogXCIk YWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsg fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgYmZkX2N2X2hhdmVf c3lzX3Byb2Nmc190eXBlX3ByZnByZWdzZXRfdD15ZXMNCiBlbHNlDQpAQCAt NDY1NCwxOSArNDY0MywxOSBAQCBFT0YNCiAgZWNobyAiJGFjX3QiIiRiZmRf Y3ZfaGF2ZV9zeXNfcHJvY2ZzX3R5cGVfcHJmcHJlZ3NldF90IiAxPiY2DQog DQogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbHdwaWRfdCBpbiBzeXMv cHJvY2ZzLmgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0 NjU4OiBjaGVja2luZyBmb3IgbHdwaWRfdCBpbiBzeXMvcHJvY2ZzLmgiID4m NQ0KK2VjaG8gImNvbmZpZ3VyZTo0NjQ3OiBjaGVja2luZyBmb3IgbHdwaWRf dCBpbiBzeXMvcHJvY2ZzLmgiID4mNQ0KICBpZiBldmFsICJ0ZXN0IFwiYGVj aG8gJyQnJ3snYmZkX2N2X2hhdmVfc3lzX3Byb2Nmc190eXBlX2x3cGlkX3Qn K3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hl ZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNf ZXh0IDw8RU9GDQotI2xpbmUgNDY2MyAiY29uZmlndXJlIg0KKyNsaW5lIDQ2 NTIgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5j bHVkZSA8c3lzL3Byb2Nmcy5oPg0KIGludCBtYWluKCkgew0KIGx3cGlkX3Qg YXZhcg0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8g Y29uZmlndXJlOjQ2NzA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwg JGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8g Y29uZmlndXJlOjQ2NTk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwg JGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVz dCoNCiAgIGJmZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9sd3BpZF90PXll cw0KIGVsc2UNCkBAIC00Njg4LDE5ICs0Njc3LDE5IEBAIEVPRg0KICBlY2hv ICIkYWNfdCIiJGJmZF9jdl9oYXZlX3N5c19wcm9jZnNfdHlwZV9sd3BpZF90 IiAxPiY2DQogDQogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHNhZGRy X3QgaW4gc3lzL3Byb2Nmcy5oIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJj b25maWd1cmU6NDY5MjogY2hlY2tpbmcgZm9yIHBzYWRkcl90IGluIHN5cy9w cm9jZnMuaCIgPiY1DQorZWNobyAiY29uZmlndXJlOjQ2ODE6IGNoZWNraW5n IGZvciBwc2FkZHJfdCBpbiBzeXMvcHJvY2ZzLmgiID4mNQ0KICBpZiBldmFs ICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYmZkX2N2X2hhdmVfc3lzX3Byb2Nmc190 eXBlX3BzYWRkcl90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8g JGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4g Y29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDQ2OTcgImNvbmZpZ3Vy ZSINCisjbGluZSA0Njg2ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZk ZWZzLmgiDQogI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4NCiBpbnQgbWFpbigp IHsNCiBwc2FkZHJfdCBhdmFyDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlm IHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDcwNDogXCIkYWNfY29tcGlsZVwi KSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KK2lm IHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDY5MzogXCIkYWNfY29tcGlsZVwi KSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICAg cm0gLXJmIGNvbmZ0ZXN0Kg0KICAgYmZkX2N2X2hhdmVfc3lzX3Byb2Nmc190 eXBlX3BzYWRkcl90PXllcw0KIGVsc2UNCkBAIC00NzI2LDcgKzQ3MTUsNyBA QCBFT0YNCiAgICAgICAgIA0KICAgaWYgdGVzdCAkYmZkX2N2X2hhdmVfc3lz X3Byb2Nmc190eXBlX3ByZnByZWdzZXRfdCA9IHllczsgdGhlbg0KICAgICBl Y2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHByZnByZWdzZXRfdCB0eXBl IGlzIGJyb2tlbiIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJl OjQ3MzA6IGNoZWNraW5nIHdoZXRoZXIgcHJmcHJlZ3NldF90IHR5cGUgaXMg YnJva2VuIiA+JjUNCitlY2hvICJjb25maWd1cmU6NDcxOTogY2hlY2tpbmcg d2hldGhlciBwcmZwcmVnc2V0X3QgdHlwZSBpcyBicm9rZW4iID4mNQ0KICAg ICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snZ2RiX2N2X3ByZnByZWdz ZXRfdF9icm9rZW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAk YWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtNDczNCw3 ICs0NzIzLDcgQEAgZWxzZQ0KICAgZ2RiX2N2X3ByZnByZWdzZXRfdF9icm9r ZW49eWVzDQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVP Rg0KLSNsaW5lIDQ3MzggImNvbmZpZ3VyZSINCisjbGluZSA0NzI3ICJjb25m aWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPHN5 cy9wcm9jZnMuaD4NCiAgICAgICAgaW50IG1haW4gKCkNCkBAIC00NzQ0LDcg KzQ3MzMsNyBAQCBlbHNlDQogICAgICAgICAgcmV0dXJuIDA7DQogICAgICAg IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ3NDg6IFwi JGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYg dGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsg ZXhpdCkgMj4vZGV2L251bGwNCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl OjQ3Mzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+ JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9j b25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwNCiB0aGVuDQogICBnZGJfY3Zf cHJmcHJlZ3NldF90X2Jyb2tlbj1ubw0KIGVsc2UNCkBAIC00NzY5LDEyICs0 NzU4LDEyIEBAIEVPRg0KIA0KICAgDQogICBlY2hvICRhY19uICJjaGVja2lu ZyBmb3IgUElPQ1NFVCBpb2N0bCBlbnRyeSBpbiBzeXMvcHJvY2ZzLmgiIi4u LiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0NzczOiBjaGVja2lu ZyBmb3IgUElPQ1NFVCBpb2N0bCBlbnRyeSBpbiBzeXMvcHJvY2ZzLmgiID4m NQ0KK2VjaG8gImNvbmZpZ3VyZTo0NzYyOiBjaGVja2luZyBmb3IgUElPQ1NF VCBpb2N0bCBlbnRyeSBpbiBzeXMvcHJvY2ZzLmgiID4mNQ0KICAgaWYgZXZh bCAidGVzdCBcImBlY2hvICckJyd7J2dkYl9jdl9oYXZlX3Byb2Nmc19waW9j c2V0JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihj YWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3Qu JGFjX2V4dCA8PEVPRg0KLSNsaW5lIDQ3NzggImNvbmZpZ3VyZSINCisjbGlu ZSA0NzY3ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQog I2luY2x1ZGUgPHVuaXN0ZC5oPg0KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4N CkBAIC00Nzg3LDcgKzQ3NzYsNyBAQCBpbnQgbWFpbigpIHsNCiAgIA0KIDsg cmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJl OjQ3OTE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBp bGUpIDI+JjU7IH07IHRoZW4NCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJl OjQ3ODA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBp bGUpIDI+JjU7IH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGdk Yl9jdl9oYXZlX3Byb2Nmc19waW9jc2V0PXllcw0KIGVsc2UNCkBAIC00ODA5 LDcgKzQ3OTgsNyBAQCBFT0YNCiBmaQ0KIA0KIGVjaG8gJGFjX24gImNoZWNr aW5nIGZvciBtYWluIGluIC1sbSIiLi4uICRhY19jIiAxPiY2DQotZWNobyAi Y29uZmlndXJlOjQ4MTM6IGNoZWNraW5nIGZvciBtYWluIGluIC1sbSIgPiY1 DQorZWNobyAiY29uZmlndXJlOjQ4MDI6IGNoZWNraW5nIGZvciBtYWluIGlu IC1sbSIgPiY1DQogYWNfbGliX3Zhcj1gZWNobyBtJ18nbWFpbiB8IHNlZCAn eSUuLystJV9fcF8lJ2ANCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn YWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4N CiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQpAQCAtNDgx NywxNCArNDgwNiwxNCBAQCBlbHNlDQogICBhY19zYXZlX0xJQlM9IiRMSUJT Ig0KIExJQlM9Ii1sbSAgJExJQlMiDQogY2F0ID4gY29uZnRlc3QuJGFjX2V4 dCA8PEVPRg0KLSNsaW5lIDQ4MjEgImNvbmZpZ3VyZSINCisjbGluZSA0ODEw ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQogaW50 IG1haW4oKSB7DQogbWFpbigpDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlm IHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDgyODogXCIkYWNfbGlua1wiKSAx PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0 ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZp Z3VyZTo0ODE3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRo ZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGV2YWwgImFjX2N2X2xpYl8k YWNfbGliX3Zhcj15ZXMiDQogZWxzZQ0KQEAgLTQ4NTMsNyArNDg0Miw3IEBA IGZpDQogDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHdjdHlwZSBp biAtbGMiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0ODU3 OiBjaGVja2luZyBmb3Igd2N0eXBlIGluIC1sYyIgPiY1DQorZWNobyAiY29u ZmlndXJlOjQ4NDY6IGNoZWNraW5nIGZvciB3Y3R5cGUgaW4gLWxjIiA+JjUN CiBhY19saWJfdmFyPWBlY2hvIGMnXyd3Y3R5cGUgfCBzZWQgJ3klLi8rLSVf X3BfJSdgDQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xp Yl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hv ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KQEAgLTQ4NjEsNyArNDg1 MCw3IEBAIGVsc2UNCiAgIGFjX3NhdmVfTElCUz0iJExJQlMiDQogTElCUz0i LWxjICAkTElCUyINCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQot I2xpbmUgNDg2NSAiY29uZmlndXJlIg0KKyNsaW5lIDQ4NTQgImNvbmZpZ3Vy ZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAvKiBPdmVycmlkZSBhbnkg Z2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAq Lw0KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo ZSByZXR1cm4gdHlwZSBvZiBhIGdjYzINCkBAIC00ODcyLDcgKzQ4NjEsNyBA QCBpbnQgbWFpbigpIHsNCiB3Y3R5cGUoKQ0KIDsgcmV0dXJuIDA7IH0NCiBF T0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ4NzY6IFwiJGFjX2xp bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt cyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6NDg2NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl eHR9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBldmFsICJhY19j dl9saWJfJGFjX2xpYl92YXI9eWVzIg0KIGVsc2UNCkBAIC00ODkxLDcgKzQ4 ODAsNyBAQCBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyRhY19jdl9saWJfJyRh Y19sDQogZWxzZQ0KICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2DQogZWNobyAk YWNfbiAiY2hlY2tpbmcgZm9yIHdjdHlwZSBpbiAtbHciIi4uLiAkYWNfYyIg MT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0ODk1OiBjaGVja2luZyBmb3Igd2N0 eXBlIGluIC1sdyIgPiY1DQorZWNobyAiY29uZmlndXJlOjQ4ODQ6IGNoZWNr aW5nIGZvciB3Y3R5cGUgaW4gLWx3IiA+JjUNCiBhY19saWJfdmFyPWBlY2hv IHcnXyd3Y3R5cGUgfCBzZWQgJ3klLi8rLSVfX3BfJSdgDQogaWYgZXZhbCAi dGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0 fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hvICRhY19uICIoY2FjaGVkKSAk YWNfYyIgMT4mNg0KQEAgLTQ4OTksNyArNDg4OCw3IEBAIGVsc2UNCiAgIGFj X3NhdmVfTElCUz0iJExJQlMiDQogTElCUz0iLWx3ICAkTElCUyINCiBjYXQg PiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNDkwMyAiY29uZmln dXJlIg0KKyNsaW5lIDQ4OTIgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29u ZmRlZnMuaCINCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90 b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLw0KIC8qIFdlIHVzZSBjaGFy IGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBh IGdjYzINCkBAIC00OTEwLDcgKzQ4OTksNyBAQCBpbnQgbWFpbigpIHsNCiB3 Y3R5cGUoKQ0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVj aG8gY29uZmlndXJlOjQ5MTQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwg JGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhl ZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDkwMzog XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQogICBybSAt cmYgY29uZnRlc3QqDQogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9 eWVzIg0KIGVsc2UNCkBAIC00OTQyLDEyICs0OTMxLDEyIEBAIGZpDQogDQog DQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBzdXBwb3J0 IGluIGNvbXBpbGVyIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1 cmU6NDk0NjogY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBzdXBwb3J0IGluIGNv bXBpbGVyIiA+JjUNCitlY2hvICJjb25maWd1cmU6NDkzNTogY2hlY2tpbmcg Zm9yIGxvbmcgbG9uZyBzdXBwb3J0IGluIGNvbXBpbGVyIiA+JjUNCiBpZiBl dmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snZ2RiX2N2X2NfbG9uZ19sb25nJytz ZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQp ICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4 dCA8PEVPRg0KLSNsaW5lIDQ5NTEgImNvbmZpZ3VyZSINCisjbGluZSA0OTQw ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQogaW50 IG1haW4oKSB7DQpAQCAtNDk1Nyw3ICs0OTQ2LDcgQEAgaW50IG1haW4oKSB7 DQogDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBj b25maWd1cmU6NDk2MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAk YWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBj b25maWd1cmU6NDk1MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAk YWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0 Kg0KICAgZ2RiX2N2X2NfbG9uZ19sb25nPXllcw0KIGVsc2UNCkBAIC00OTc5 LDcgKzQ5NjgsNyBAQCBmaQ0KIA0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5n IGZvciBsb25nIGxvbmcgc3VwcG9ydCBpbiBwcmludGYiIi4uLiAkYWNfYyIg MT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo0OTgzOiBjaGVja2luZyBmb3IgbG9u ZyBsb25nIHN1cHBvcnQgaW4gcHJpbnRmIiA+JjUNCitlY2hvICJjb25maWd1 cmU6NDk3MjogY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBzdXBwb3J0IGluIHBy aW50ZiIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2dkYl9j dl9wcmludGZfaGFzX2xvbmdfbG9uZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVu DQogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UN CkBAIC00OTg3LDcgKzQ5NzYsNyBAQCBlbHNlDQogICBnZGJfY3ZfcHJpbnRm X2hhc19sb25nX2xvbmc9bm8NCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4k YWNfZXh0IDw8RU9GDQotI2xpbmUgNDk5MSAiY29uZmlndXJlIg0KKyNsaW5l IDQ5ODAgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAN CiBpbnQgbWFpbiAoKSB7DQpAQCAtNTAwMSw3ICs0OTkwLDcgQEAgaW50IG1h aW4gKCkgew0KICAgcmV0dXJuIChzdHJjbXAgKCIweDAxMjM0NTY3ODlhYmNk ZWYiLCBidWYpKTsNCiB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZp Z3VyZTo1MDA1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5r KSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYg KC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsDQoraWYgeyAoZXZhbCBl Y2hvIGNvbmZpZ3VyZTo0OTk0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFs ICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4 ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsDQogdGhl bg0KICAgZ2RiX2N2X3ByaW50Zl9oYXNfbG9uZ19sb25nPXllcw0KIGVsc2UN CkBAIC01MDI1LDE5ICs1MDE0LDE5IEBAIGVjaG8gIiRhY190IiIkZ2RiX2N2 X3ByaW50Zl9oYXNfbG9uZ19sb24NCiANCiANCiBlY2hvICRhY19uICJjaGVj a2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCBpbiBjb21waWxlciIiLi4u ICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjUwMjk6IGNoZWNraW5n IGZvciBsb25nIGRvdWJsZSBzdXBwb3J0IGluIGNvbXBpbGVyIiA+JjUNCitl Y2hvICJjb25maWd1cmU6NTAxODogY2hlY2tpbmcgZm9yIGxvbmcgZG91Ymxl IHN1cHBvcnQgaW4gY29tcGlsZXIiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJg ZWNobyAnJCcneydhY19jdl9jX2xvbmdfZG91YmxlJytzZXR9J2BcIiA9IHNl dCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2 DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNs aW5lIDUwMzQgImNvbmZpZ3VyZSINCisjbGluZSA1MDIzICJjb25maWd1cmUi DQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQogaW50IG1haW4oKSB7DQog bG9uZyBkb3VibGUgZm9vOw0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7 IChldmFsIGVjaG8gY29uZmlndXJlOjUwNDE6IFwiJGFjX2NvbXBpbGVcIikg MT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCitpZiB7 IChldmFsIGVjaG8gY29uZmlndXJlOjUwMzA6IFwiJGFjX2NvbXBpbGVcIikg MT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4NCiAgIHJt IC1yZiBjb25mdGVzdCoNCiAgIGFjX2N2X2NfbG9uZ19kb3VibGU9eWVzDQog ZWxzZQ0KQEAgLTUwNTksNyArNTA0OCw3IEBAIGZpDQogDQogDQogZWNobyAk YWNfbiAiY2hlY2tpbmcgZm9yIGxvbmcgZG91YmxlIHN1cHBvcnQgaW4gcHJp bnRmIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6NTA2Mzog Y2hlY2tpbmcgZm9yIGxvbmcgZG91YmxlIHN1cHBvcnQgaW4gcHJpbnRmIiA+ JjUNCitlY2hvICJjb25maWd1cmU6NTA1MjogY2hlY2tpbmcgZm9yIGxvbmcg ZG91YmxlIHN1cHBvcnQgaW4gcHJpbnRmIiA+JjUNCiBpZiBldmFsICJ0ZXN0 IFwiYGVjaG8gJyQnJ3snZ2RiX2N2X3ByaW50Zl9oYXNfbG9uZ19kb3VibGUn K3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hl ZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtNTA2Nyw3ICs1MDU2LDcgQEAg ZWxzZQ0KICAgZ2RiX2N2X3ByaW50Zl9oYXNfbG9uZ19kb3VibGU9bm8NCiBl bHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUg NTA3MSAiY29uZmlndXJlIg0KKyNsaW5lIDUwNjAgImNvbmZpZ3VyZSINCiAj aW5jbHVkZSAiY29uZmRlZnMuaCINCiANCiBpbnQgbWFpbiAoKSB7DQpAQCAt NTA3Nyw3ICs1MDY2LDcgQEAgaW50IG1haW4gKCkgew0KICAgcmV0dXJuIChz dHJuY21wICgiMy4xNDE1OSIsIGJ1ZiwgNykpOw0KIH0NCiBFT0YNCi1pZiB7 IChldmFsIGVjaG8gY29uZmlndXJlOjUwODE6IFwiJGFjX2xpbmtcIikgMT4m NTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVz dCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251 bGwNCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUwNzA6IFwiJGFjX2xp bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt cyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkg Mj4vZGV2L251bGwNCiB0aGVuDQogICBnZGJfY3ZfcHJpbnRmX2hhc19sb25n X2RvdWJsZT15ZXMNCiBlbHNlDQpAQCAtNTEwMSw3ICs1MDkwLDcgQEAgZWNo byAiJGFjX3QiIiRnZGJfY3ZfcHJpbnRmX2hhc19sb25nX2RvdQ0KIA0KIA0K IGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0 IGluIHNjYW5mIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6 NTEwNTogY2hlY2tpbmcgZm9yIGxvbmcgZG91YmxlIHN1cHBvcnQgaW4gc2Nh bmYiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo1MDk0OiBjaGVja2luZyBmb3Ig bG9uZyBkb3VibGUgc3VwcG9ydCBpbiBzY2FuZiIgPiY1DQogaWYgZXZhbCAi dGVzdCBcImBlY2hvICckJyd7J2dkYl9jdl9zY2FuZl9oYXNfbG9uZ19kb3Vi bGUnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNh Y2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtNTEwOSw3ICs1MDk4LDcg QEAgZWxzZQ0KICAgZ2RiX2N2X3NjYW5mX2hhc19sb25nX2RvdWJsZT1ubw0K IGVsc2UNCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGlu ZSA1MTEzICJjb25maWd1cmUiDQorI2xpbmUgNTEwMiAiY29uZmlndXJlIg0K ICNpbmNsdWRlICJjb25mZGVmcy5oIg0KIA0KIGludCBtYWluICgpIHsNCkBA IC01MTE5LDcgKzUxMDgsNyBAQCBpbnQgbWFpbiAoKSB7DQogICByZXR1cm4g IShmID4gMy4xNDE1OSAmJiBmIDwgMy4xNDE2MCk7DQogfQ0KIEVPRg0KLWlm IHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTEyMzogXCIkYWNfbGlua1wiKSAx PiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0 ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYv bnVsbA0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTExMjogXCIkYWNf bGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0 IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0 KSAyPi9kZXYvbnVsbA0KIHRoZW4NCiAgIGdkYl9jdl9zY2FuZl9oYXNfbG9u Z19kb3VibGU9eWVzDQogZWxzZQ0KQEAgLTUxNDUsMTcgKzUxMzQsMTcgQEAg Zm9yIGFjX2hkciBpbiB1bmlzdGQuaA0KIGRvDQogYWNfc2FmZT1gZWNobyAi JGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgDQogZWNobyAkYWNfbiAi Y2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8g ImNvbmZpZ3VyZTo1MTQ5OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1DQor ZWNobyAiY29uZmlndXJlOjUxMzg6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+ JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVy XyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFj X24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29u ZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDUxNTQgImNvbmZpZ3VyZSIN CisjbGluZSA1MTQzICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZz LmgiDQogI2luY2x1ZGUgPCRhY19oZHI+DQogRU9GDQogYWNfdHJ5PSIkYWNf Y3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91 dCINCi17IChldmFsIGVjaG8gY29uZmlndXJlOjUxNTk6IFwiJGFjX3RyeVwi KSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9DQoreyAoZXZhbCBlY2hv IGNvbmZpZ3VyZTo1MTQ4OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFj X3RyeSkgMj4mNTsgfQ0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRl c3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImANCiBp ZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0 Kg0KQEAgLTUxODQsMTIgKzUxNzMsMTIgQEAgZG9uZQ0KIGZvciBhY19mdW5j IGluIGdldHBhZ2VzaXplDQogZG8NCiBlY2hvICRhY19uICJjaGVja2luZyBm b3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3Vy ZTo1MTg4OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQ0KK2VjaG8gImNv bmZpZ3VyZTo1MTc3OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQ0KIGlm IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5j JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNo ZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFj X2V4dCA8PEVPRg0KLSNsaW5lIDUxOTMgImNvbmZpZ3VyZSINCisjbGluZSA1 MTgyICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogLyog U3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9w ZWZ1bGx5IGZldyBwcm90b3R5cGVzLA0KICAgICB3aGljaCBjYW4gY29uZmxp Y3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8NCkBAIC01MjEy LDcgKzUyMDEsNyBAQCAkYWNfZnVuYygpOw0KIA0KIDsgcmV0dXJuIDA7IH0N CiBFT0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUyMTY6IFwiJGFj X2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVz dCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwg ZWNobyBjb25maWd1cmU6NTIwNTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l eGVleHR9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBldmFsICJh Y19jdl9mdW5jXyRhY19mdW5jPXllcyINCiBlbHNlDQpAQCAtNTIzNyw3ICs1 MjI2LDcgQEAgZmkNCiBkb25lDQogDQogZWNobyAkYWNfbiAiY2hlY2tpbmcg Zm9yIHdvcmtpbmcgbW1hcCIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29u ZmlndXJlOjUyNDE6IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAiID4mNQ0K K2VjaG8gImNvbmZpZ3VyZTo1MjMwOiBjaGVja2luZyBmb3Igd29ya2luZyBt bWFwIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zf ZnVuY19tbWFwX2ZpeGVkX21hcHBlZCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVu DQogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UN CkBAIC01MjQ1LDcgKzUyMzQsNyBAQCBlbHNlDQogICBhY19jdl9mdW5jX21t YXBfZml4ZWRfbWFwcGVkPW5vDQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3Qu JGFjX2V4dCA8PEVPRg0KLSNsaW5lIDUyNDkgImNvbmZpZ3VyZSINCisjbGlu ZSA1MjM4ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQog DQogLyogVGhhbmtzIHRvIE1pa2UgSGFlcnRlbCBhbmQgSmltIEF2ZXJhIGZv ciB0aGlzIHRlc3QuDQpAQCAtNTM4NSw3ICs1Mzc0LDcgQEAgbWFpbigpDQog fQ0KIA0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTM4OTog XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0 OyBleGl0KSAyPi9kZXYvbnVsbA0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1 cmU6NTM3ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykg Mj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICgu L2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbA0KIHRoZW4NCiAgIGFjX2N2 X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzDQogZWxzZQ0KQEAgLTU0MTQs NyArNTQwMyw3IEBAIGlmIHRlc3QgJHtidWlsZH0gPSAke2hvc3R9IC1hICR7 aG9zdH0gPSANCiAgICBjYXNlICR7aG9zdF9vc30gaW4NCiAgICBocHV4KikN CiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgSFBVWC9PU0YgdGhy ZWFkIHN1cHBvcnQiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3Vy ZTo1NDE4OiBjaGVja2luZyBmb3IgSFBVWC9PU0YgdGhyZWFkIHN1cHBvcnQi ID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo1NDA3OiBjaGVja2luZyBmb3IgSFBV WC9PU0YgdGhyZWFkIHN1cHBvcnQiID4mNQ0KICAgICAgIGlmIHRlc3QgLWYg L3Vzci9pbmNsdWRlL2RjZS9jbWFfY29uZmlnLmggOyB0aGVuDQogICAgICAg ICAgaWYgdGVzdCAiJEdDQyIgPSAieWVzIiA7IHRoZW4NCiAgICAgICAgICAg ICBlY2hvICIkYWNfdCIieWVzIiAxPiY2DQpAQCAtNTQzMyw3ICs1NDIyLDcg QEAgRU9GDQogICAgICAgOzsNCiAgICBzb2xhcmlzKikNCiAgICAgICBlY2hv ICRhY19uICJjaGVja2luZyBmb3IgU29sYXJpcyB0aHJlYWQgZGVidWdnaW5n IGxpYnJhcnkiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo1 NDM3OiBjaGVja2luZyBmb3IgU29sYXJpcyB0aHJlYWQgZGVidWdnaW5nIGxp YnJhcnkiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo1NDI2OiBjaGVja2luZyBm b3IgU29sYXJpcyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkiID4mNQ0KICAg ICAgIGlmIHRlc3QgLWYgL3Vzci9saWIvbGlidGhyZWFkX2RiLnNvLjEgOyB0 aGVuDQogICAgICAgICAgZWNobyAiJGFjX3QiInllcyIgMT4mNg0KICAgICAg ICAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRg0KQEAgLTU0NDMsNyArNTQz Miw3IEBAIEVPRg0KICAgICAgICAgIENPTkZJR19PQlM9IiR7Q09ORklHX09C U30gc29sLXRocmVhZC5vIg0KICAgICAgICAgIENPTkZJR19TUkNTPSIke0NP TkZJR19TUkNTfSBzb2wtdGhyZWFkLmMiDQogICAgICAgICAgZWNobyAkYWNf biAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsIiIuLi4gJGFjX2MiIDE+ JjYNCi1lY2hvICJjb25maWd1cmU6NTQ0NzogY2hlY2tpbmcgZm9yIGRsb3Bl biBpbiAtbGRsIiA+JjUNCitlY2hvICJjb25maWd1cmU6NTQzNjogY2hlY2tp bmcgZm9yIGRsb3BlbiBpbiAtbGRsIiA+JjUNCiBhY19saWJfdmFyPWBlY2hv IGRsJ18nZGxvcGVuIHwgc2VkICd5JS4vKy0lX19wXyUnYA0KIGlmIGV2YWwg InRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3Nl dH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkg JGFjX2MiIDE+JjYNCkBAIC01NDUxLDcgKzU0NDAsNyBAQCBlbHNlDQogICBh Y19zYXZlX0xJQlM9IiRMSUJTIg0KIExJQlM9Ii1sZGwgICRMSUJTIg0KIGNh dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSA1NDU1ICJjb25m aWd1cmUiDQorI2xpbmUgNTQ0NCAiY29uZmlndXJlIg0KICNpbmNsdWRlICJj b25mZGVmcy5oIg0KIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHBy b3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovDQogLyogV2UgdXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9m IGEgZ2NjMg0KQEAgLTU0NjIsNyArNTQ1MSw3IEBAIGludCBtYWluKCkgew0K IGRsb3BlbigpDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwg ZWNobyBjb25maWd1cmU6NTQ2NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZh bCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19l eGVleHR9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NDU1 OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9 ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJt IC1yZiBjb25mdGVzdCoNCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zh cj15ZXMiDQogZWxzZQ0KQEAgLTU0OTQsMTcgKzU0ODMsMTcgQEAgZmkNCiAg ICAgICAgICAgICAjIGFsbCBzeW1ib2xzIHZpc2libGUgaW4gdGhlIGR5bmFt aWMgc3ltYm9sIHRhYmxlLg0KICAgICAgICAgICAgIGhvbGRfbGRmbGFncz0k TERGTEFHUw0KICAgICAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZv ciB0aGUgbGQgLWV4cG9ydC1keW5hbWljIGZsYWciIi4uLiAkYWNfYyIgMT4m Ng0KLWVjaG8gImNvbmZpZ3VyZTo1NDk4OiBjaGVja2luZyBmb3IgdGhlIGxk IC1leHBvcnQtZHluYW1pYyBmbGFnIiA+JjUNCitlY2hvICJjb25maWd1cmU6 NTQ4NzogY2hlY2tpbmcgZm9yIHRoZSBsZCAtZXhwb3J0LWR5bmFtaWMgZmxh ZyIgPiY1DQogICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSAtV2ws LWV4cG9ydC1keW5hbWljIg0KICAgICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0 LiRhY19leHQgPDxFT0YNCi0jbGluZSA1NTAxICJjb25maWd1cmUiDQorI2xp bmUgNTQ5MCAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVmcy5oIg0K IA0KIGludCBtYWluKCkgew0KIGludCBpOw0KIDsgcmV0dXJuIDA7IH0NCiBF T0YNCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU1MDg6IFwiJGFjX2xp bmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAt cyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6NTQ5NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAk YWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVl eHR9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQogICBmb3VuZD15ZXMN CiBlbHNlDQpAQCAtNTUyMywxMyArNTUxMiwxMyBAQCBybSAtZiBjb25mdGVz dCoNCiAJICMgU3VuIHJhbmRvbWx5IHR3ZWFrZWQgdGhlIHByb3RvdHlwZXMg aW4gPHByb2Nfc2VydmljZS5oPg0KIAkgIyBhdCBvbmUgcG9pbnQuDQogCSBl Y2hvICRhY19uICJjaGVja2luZyBpZiA8cHJvY19zZXJ2aWNlLmg+IGlzIG9s ZCIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjU1Mjc6IGNo ZWNraW5nIGlmIDxwcm9jX3NlcnZpY2UuaD4gaXMgb2xkIiA+JjUNCitlY2hv ICJjb25maWd1cmU6NTUxNjogY2hlY2tpbmcgaWYgPHByb2Nfc2VydmljZS5o PiBpcyBvbGQiID4mNQ0KIAkgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7 J2dkYl9jdl9wcm9jX3NlcnZpY2VfaXNfb2xkJytzZXR9J2BcIiA9IHNldCI7 IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQog ZWxzZQ0KICAgDQogCSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9G DQotI2xpbmUgNTUzMyAiY29uZmlndXJlIg0KKyNsaW5lIDU1MjIgImNvbmZp Z3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiANCiAJCSNpbmNsdWRl IDxwcm9jX3NlcnZpY2UuaD4NCkBAIC01NTQwLDcgKzU1MjksNyBAQCBpbnQg bWFpbigpIHsNCiANCiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZh bCBlY2hvIGNvbmZpZ3VyZTo1NTQ0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7 IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQoraWYgeyAoZXZh bCBlY2hvIGNvbmZpZ3VyZTo1NTMzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7 IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQogICBybSAtcmYg Y29uZnRlc3QqDQogICBnZGJfY3ZfcHJvY19zZXJ2aWNlX2lzX29sZD1ubw0K IGVsc2UNCkBAIC01Njc3LDcgKzU2NjYsNyBAQCBXRVJST1JfQ0ZMQUdTPSIi DQogaWYgdGVzdCAieCR7YnVpbGRfd2FybmluZ3N9IiAhPSB4IC1hICJ4JEdD QyIgPSB4eWVzDQogdGhlbg0KICAgICBlY2hvICRhY19uICJjaGVja2luZyBj b21waWxlciB3YXJuaW5nIGZsYWdzIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hv ICJjb25maWd1cmU6NTY4MTogY2hlY2tpbmcgY29tcGlsZXIgd2FybmluZyBm bGFncyIgPiY1DQorZWNobyAiY29uZmlndXJlOjU2NzA6IGNoZWNraW5nIGNv bXBpbGVyIHdhcm5pbmcgZmxhZ3MiID4mNQ0KICAgICAjIFNlcGFyYXRlIG91 dCB0aGUgLVdlcnJvciBmbGFnIGFzIHNvbWUgZmlsZXMganVzdCBjYW5ub3Qg YmUNCiAgICAgIyBjb21waWxlZCB3aXRoIGl0IGVuYWJsZWQuDQogICAgIGZv ciB3IGluICR7YnVpbGRfd2FybmluZ3N9OyBkbw0KQEAgLTU3NDAsMTIgKzU3 MjksMTIgQEAgZmkNCiANCiBpZiB0ZXN0ICR3YW50X2luY2x1ZGVkX3JlZ2V4 ID0gZmFsc2U7IHRoZW4NCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBH TlUgcmVnZXgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo1 NzQ0OiBjaGVja2luZyBmb3IgR05VIHJlZ2V4IiA+JjUNCitlY2hvICJjb25m aWd1cmU6NTczMzogY2hlY2tpbmcgZm9yIEdOVSByZWdleCIgPiY1DQogICBp ZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snZ2RiX2N2X2hhdmVfZ251X3Jl Z2V4JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihj YWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3Qu JGFjX2V4dCA8PEVPRg0KLSNsaW5lIDU3NDkgImNvbmZpZ3VyZSINCisjbGlu ZSA1NzM4ICJjb25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQog I2luY2x1ZGUgPGdudS12ZXJzaW9ucy5oPg0KICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4NCkBAIC01NzU3LDcgKzU3NDYsNyBAQCBpbnQgbWFpbigpIHsNCiAN CiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZp Z3VyZTo1NzYxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19j b21waWxlKSAyPiY1OyB9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZp Z3VyZTo1NzUwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19j b21waWxlKSAyPiY1OyB9OyB0aGVuDQogICBybSAtcmYgY29uZnRlc3QqDQog ICBnZGJfY3ZfaGF2ZV9nbnVfcmVnZXg9eWVzDQogZWxzZQ0KQEAgLTU3ODYs MTIgKzU3NzUsMTIgQEAgZmkNCiANCiAjIEluIHRoZSBDeWd3aW4gZW52aXJv bm1lbnQsIHdlIG5lZWQgc29tZSBhZGRpdGlvbmFsIGZsYWdzLg0KIGVjaG8g JGFjX24gImNoZWNraW5nIGZvciBjeWd3aW4iIi4uLiAkYWNfYyIgMT4mNg0K LWVjaG8gImNvbmZpZ3VyZTo1NzkwOiBjaGVja2luZyBmb3IgY3lnd2luIiA+ JjUNCitlY2hvICJjb25maWd1cmU6NTc3OTogY2hlY2tpbmcgZm9yIGN5Z3dp biIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2dkYl9jdl9v c19jeWd3aW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNf biAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBjYXQgPiBjb25m dGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNTc5NSAiY29uZmlndXJlIg0K KyNsaW5lIDU3ODQgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMu aCINCiANCiAjaWYgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZCAo X19DWUdXSU4zMl9fKQ0KQEAgLTU4MjksNyArNTgxOCw3IEBAIGlmIHRlc3Qg eCRnZGJfY3Zfb3NfY3lnd2luID0geHllczsgdGhlbg0KIGVsc2UNCiAgIFRF Uk1fTElCPQ0KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHRnZXRlbnQg aW4gLWxuY3Vyc2VzIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1 cmU6NTgzMzogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWxuY3Vyc2VzIiA+ JjUNCitlY2hvICJjb25maWd1cmU6NTgyMjogY2hlY2tpbmcgZm9yIHRnZXRl bnQgaW4gLWxuY3Vyc2VzIiA+JjUNCiBhY19saWJfdmFyPWBlY2hvIG5jdXJz ZXMnXyd0Z2V0ZW50IHwgc2VkICd5JS4vKy0lX19wXyUnYA0KIGlmIGV2YWwg InRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3Nl dH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkg JGFjX2MiIDE+JjYNCkBAIC01ODM3LDcgKzU4MjYsNyBAQCBlbHNlDQogICBh Y19zYXZlX0xJQlM9IiRMSUJTIg0KIExJQlM9Ii1sbmN1cnNlcyAgJExJQlMi DQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5lIDU4NDEg ImNvbmZpZ3VyZSINCisjbGluZSA1ODMwICJjb25maWd1cmUiDQogI2luY2x1 ZGUgImNvbmZkZWZzLmgiDQogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJu YWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8NCiAvKiBXZSB1 c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5 cGUgb2YgYSBnY2MyDQpAQCAtNTg0OCw3ICs1ODM3LDcgQEAgaW50IG1haW4o KSB7DQogdGdldGVudCgpDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsg KGV2YWwgZWNobyBjb25maWd1cmU6NTg1MjogXCIkYWNfbGlua1wiKSAxPiY1 OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0 JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3Vy ZTo1ODQxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAy PiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4N CiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNf bGliX3Zhcj15ZXMiDQogZWxzZQ0KQEAgLTU4NjcsNyArNTg1Niw3IEBAIGlm IGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2xpYl8nJGFjX2wNCiBlbHNl DQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYNCiBlY2hvICRhY19uICJjaGVj a2luZyBmb3IgdGdldGVudCBpbiAtbEhjdXJzZXMiIi4uLiAkYWNfYyIgMT4m Ng0KLWVjaG8gImNvbmZpZ3VyZTo1ODcxOiBjaGVja2luZyBmb3IgdGdldGVu dCBpbiAtbEhjdXJzZXMiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo1ODYwOiBj aGVja2luZyBmb3IgdGdldGVudCBpbiAtbEhjdXJzZXMiID4mNQ0KIGFjX2xp Yl92YXI9YGVjaG8gSGN1cnNlcydfJ3RnZXRlbnQgfCBzZWQgJ3klLi8rLSVf X3BfJSdgDQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xp Yl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hv ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KQEAgLTU4NzUsNyArNTg2 NCw3IEBAIGVsc2UNCiAgIGFjX3NhdmVfTElCUz0iJExJQlMiDQogTElCUz0i LWxIY3Vyc2VzICAkTElCUyINCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8 RU9GDQotI2xpbmUgNTg3OSAiY29uZmlndXJlIg0KKyNsaW5lIDU4NjggImNv bmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAvKiBPdmVycmlk ZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy b3IuICAqLw0KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1h dGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzINCkBAIC01ODg2LDcgKzU4 NzUsNyBAQCBpbnQgbWFpbigpIHsNCiB0Z2V0ZW50KCkNCiA7IHJldHVybiAw OyB9DQogRU9GDQotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1ODkwOiBc IiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYm IHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4NCitpZiB7IChl dmFsIGVjaG8gY29uZmlndXJlOjU4Nzk6IFwiJGFjX2xpbmtcIikgMT4mNTsg KGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7 YWNfZXhlZXh0fTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KICAgZXZh bCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyINCiBlbHNlDQpAQCAtNTkw NSw3ICs1ODk0LDcgQEAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckYWNfY3Zf bGliXyckYWNfbA0KIGVsc2UNCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNg0K IGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sdGVybWxp YiIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjU5MDk6IGNo ZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sdGVybWxpYiIgPiY1DQorZWNobyAi Y29uZmlndXJlOjU4OTg6IGNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sdGVy bWxpYiIgPiY1DQogYWNfbGliX3Zhcj1gZWNobyB0ZXJtbGliJ18ndGdldGVu dCB8IHNlZCAneSUuLystJV9fcF8lJ2ANCiBpZiBldmFsICJ0ZXN0IFwiYGVj aG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNl dCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2 DQpAQCAtNTkxMyw3ICs1OTAyLDcgQEAgZWxzZQ0KICAgYWNfc2F2ZV9MSUJT PSIkTElCUyINCiBMSUJTPSItbHRlcm1saWIgICRMSUJTIg0KIGNhdCA+IGNv bmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSA1OTE3ICJjb25maWd1cmUi DQorI2xpbmUgNTkwNiAiY29uZmlndXJlIg0KICNpbmNsdWRlICJjb25mZGVm cy5oIg0KIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlw ZSB0byBhdm9pZCBhbiBlcnJvci4gICovDQogLyogV2UgdXNlIGNoYXIgYmVj YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2Nj Mg0KQEAgLTU5MjQsNyArNTkxMyw3IEBAIGludCBtYWluKCkgew0KIHRnZXRl bnQoKQ0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFsIGVjaG8g Y29uZmlndXJlOjU5Mjg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj X2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0 fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTkxNzogXCIk YWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0 ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQogICBybSAtcmYg Y29uZnRlc3QqDQogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVz Ig0KIGVsc2UNCkBAIC01OTQzLDcgKzU5MzIsNyBAQCBpZiBldmFsICJ0ZXN0 IFwiYGVjaG8gJyRhY19jdl9saWJfJyRhY19sDQogZWxzZQ0KICAgZWNobyAi JGFjX3QiIm5vIiAxPiY2DQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHRn ZXRlbnQgaW4gLWx0ZXJtY2FwIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJj b25maWd1cmU6NTk0NzogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWx0ZXJt Y2FwIiA+JjUNCitlY2hvICJjb25maWd1cmU6NTkzNjogY2hlY2tpbmcgZm9y IHRnZXRlbnQgaW4gLWx0ZXJtY2FwIiA+JjUNCiBhY19saWJfdmFyPWBlY2hv IHRlcm1jYXAnXyd0Z2V0ZW50IHwgc2VkICd5JS4vKy0lX19wXyUnYA0KIGlm IGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92 YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNh Y2hlZCkgJGFjX2MiIDE+JjYNCkBAIC01OTUxLDcgKzU5NDAsNyBAQCBlbHNl DQogICBhY19zYXZlX0xJQlM9IiRMSUJTIg0KIExJQlM9Ii1sdGVybWNhcCAg JExJQlMiDQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0KLSNsaW5l IDU5NTUgImNvbmZpZ3VyZSINCisjbGluZSA1OTQ0ICJjb25maWd1cmUiDQog I2luY2x1ZGUgImNvbmZkZWZzLmgiDQogLyogT3ZlcnJpZGUgYW55IGdjYzIg aW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8NCiAv KiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBnY2MyDQpAQCAtNTk2Miw3ICs1OTUxLDcgQEAgaW50 IG1haW4oKSB7DQogdGdldGVudCgpDQogOyByZXR1cm4gMDsgfQ0KIEVPRg0K LWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTk2NjogXCIkYWNfbGlua1wi KSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNv bmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAoZXZhbCBlY2hvIGNv bmZpZ3VyZTo1OTU1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19s aW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07 IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGV2YWwgImFjX2N2X2xp Yl8kYWNfbGliX3Zhcj15ZXMiDQogZWxzZQ0KQEAgLTU5ODEsNyArNTk3MCw3 IEBAIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2xpYl8nJGFjX2wN CiBlbHNlDQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYNCiBlY2hvICRhY19u ICJjaGVja2luZyBmb3IgdGdldGVudCBpbiAtbGN1cnNlcyIiLi4uICRhY19j IiAxPiY2DQotZWNobyAiY29uZmlndXJlOjU5ODU6IGNoZWNraW5nIGZvciB0 Z2V0ZW50IGluIC1sY3Vyc2VzIiA+JjUNCitlY2hvICJjb25maWd1cmU6NTk3 NDogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWxjdXJzZXMiID4mNQ0KIGFj X2xpYl92YXI9YGVjaG8gY3Vyc2VzJ18ndGdldGVudCB8IHNlZCAneSUuLyst JV9fcF8lJ2ANCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zf bGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVj aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQpAQCAtNTk4OSw3ICs1 OTc4LDcgQEAgZWxzZQ0KICAgYWNfc2F2ZV9MSUJTPSIkTElCUyINCiBMSUJT PSItbGN1cnNlcyAgJExJQlMiDQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8 PEVPRg0KLSNsaW5lIDU5OTMgImNvbmZpZ3VyZSINCisjbGluZSA1OTgyICJj b25maWd1cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogLyogT3ZlcnJp ZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVy cm9yLiAgKi8NCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBt YXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyDQpAQCAtNjAwMCw3ICs1 OTg5LDcgQEAgaW50IG1haW4oKSB7DQogdGdldGVudCgpDQogOyByZXR1cm4g MDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjAwNDog XCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAm JiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAo ZXZhbCBlY2hvIGNvbmZpZ3VyZTo1OTkzOiBcIiRhY19saW5rXCIpIDE+JjU7 IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qk e2FjX2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIGV2 YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiDQogZWxzZQ0KQEAgLTYw MTksNyArNjAwOCw3IEBAIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2 X2xpYl8nJGFjX2wNCiBlbHNlDQogICBlY2hvICIkYWNfdCIibm8iIDE+JjYN CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdGdldGVudCBpbiAtbHRlcm1p bmZvIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6NjAyMzog Y2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWx0ZXJtaW5mbyIgPiY1DQorZWNo byAiY29uZmlndXJlOjYwMTI6IGNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1s dGVybWluZm8iID4mNQ0KIGFjX2xpYl92YXI9YGVjaG8gdGVybWluZm8nXyd0 Z2V0ZW50IHwgc2VkICd5JS4vKy0lX19wXyUnYA0KIGlmIGV2YWwgInRlc3Qg XCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwi ID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2Mi IDE+JjYNCkBAIC02MDI3LDcgKzYwMTYsNyBAQCBlbHNlDQogICBhY19zYXZl X0xJQlM9IiRMSUJTIg0KIExJQlM9Ii1sdGVybWluZm8gICRMSUJTIg0KIGNh dCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YNCi0jbGluZSA2MDMxICJjb25m aWd1cmUiDQorI2xpbmUgNjAyMCAiY29uZmlndXJlIg0KICNpbmNsdWRlICJj b25mZGVmcy5oIg0KIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHBy b3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovDQogLyogV2UgdXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9m IGEgZ2NjMg0KQEAgLTYwMzgsNyArNjAyNyw3IEBAIGludCBtYWluKCkgew0K IHRnZXRlbnQoKQ0KIDsgcmV0dXJuIDA7IH0NCiBFT0YNCi1pZiB7IChldmFs IGVjaG8gY29uZmlndXJlOjYwNDI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2 YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNf ZXhlZXh0fTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjAz MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsg fSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQogICBy bSAtcmYgY29uZnRlc3QqDQogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92 YXI9eWVzIg0KIGVsc2UNCkBAIC02MTk2LDcgKzYxODUsNyBAQCBpZiB0ZXN0 ICIke3dpdGhfdGNsY29uZmlnK3NldH0iID0gc2V0OyB0DQogZmkNCiANCiAg IGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBUY2wgY29uZmlndXJhdGlvbiIi Li4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJlOjYyMDA6IGNoZWNr aW5nIGZvciBUY2wgY29uZmlndXJhdGlvbiIgPiY1DQorZWNobyAiY29uZmln dXJlOjYxODk6IGNoZWNraW5nIGZvciBUY2wgY29uZmlndXJhdGlvbiIgPiY1 DQogICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY190Y2xj b25maWcnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAi KGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtNjMwNCw3ICs2Mjkz LDcgQEAgaWYgdGVzdCAiJHt3aXRoX3RrY29uZmlnK3NldH0iID0gc2V0OyB0 aA0KIGZpDQogDQogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgVGsgY29u ZmlndXJhdGlvbiIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmlndXJl OjYzMDg6IGNoZWNraW5nIGZvciBUayBjb25maWd1cmF0aW9uIiA+JjUNCitl Y2hvICJjb25maWd1cmU6NjI5NzogY2hlY2tpbmcgZm9yIFRrIGNvbmZpZ3Vy YXRpb24iID4mNQ0KICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2Fj X2N2X2NfdGtjb25maWcnK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAgZWNo byAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQpAQCAtNjQw MCw3ICs2Mzg5LDcgQEAgZmkNCiANCiBub190Y2w9dHJ1ZQ0KIGVjaG8gJGFj X24gImNoZWNraW5nIGZvciBUY2wgcHJpdmF0ZSBoZWFkZXJzLiBkaXI9JHtj b25maWdkaXJ9IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6 NjQwNDogY2hlY2tpbmcgZm9yIFRjbCBwcml2YXRlIGhlYWRlcnMuIGRpcj0k e2NvbmZpZ2Rpcn0iID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo2MzkzOiBjaGVj a2luZyBmb3IgVGNsIHByaXZhdGUgaGVhZGVycy4gZGlyPSR7Y29uZmlnZGly fSIgPiY1DQogIyBDaGVjayB3aGV0aGVyIC0td2l0aC10Y2xpbmNsdWRlIG9y IC0td2l0aG91dC10Y2xpbmNsdWRlIHdhcyBnaXZlbi4NCiBpZiB0ZXN0ICIk e3dpdGhfdGNsaW5jbHVkZStzZXR9IiA9IHNldDsgdGhlbg0KICAgd2l0aHZh bD0iJHdpdGhfdGNsaW5jbHVkZSINCkBAIC02NDY2LDE3ICs2NDU1LDE3IEBA IGZpDQogaWYgdGVzdCB4IiR7YWNfY3ZfY190Y2xofSIgPSB4IDsgdGhlbg0K ICAgIGFjX3NhZmU9YGVjaG8gInRjbEludC5oIiB8IHNlZCAneSUuLystJV9f cF8lJ2ANCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdGNsSW50LmgiIi4u LiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo2NDcwOiBjaGVja2lu ZyBmb3IgdGNsSW50LmgiID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo2NDU5OiBj aGVja2luZyBmb3IgdGNsSW50LmgiID4mNQ0KIGlmIGV2YWwgInRlc3QgXCJg ZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0g c2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+ JjYNCiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQot I2xpbmUgNjQ3NSAiY29uZmlndXJlIg0KKyNsaW5lIDY0NjQgImNvbmZpZ3Vy ZSINCiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiAjaW5jbHVkZSA8dGNsSW50 Lmg+DQogRU9GDQogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQg Pi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCINCi17IChldmFsIGVjaG8gY29u ZmlndXJlOjY0ODA6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5 KSAyPiY1OyB9DQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NDY5OiBcIiRh Y190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KIGFjX2Vy cj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNv bmZ0ZXN0LiR7YWNfZXh0fVwkImANCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsg dGhlbg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KQEAgLTY1MzYsNyArNjUyNSw3 IEBAIGZpDQogIw0KIG5vX3RrPXRydWUNCiBlY2hvICRhY19uICJjaGVja2lu ZyBmb3IgVGsgcHJpdmF0ZSBoZWFkZXJzIiIuLi4gJGFjX2MiIDE+JjYNCi1l Y2hvICJjb25maWd1cmU6NjU0MDogY2hlY2tpbmcgZm9yIFRrIHByaXZhdGUg aGVhZGVycyIgPiY1DQorZWNobyAiY29uZmlndXJlOjY1Mjk6IGNoZWNraW5n IGZvciBUayBwcml2YXRlIGhlYWRlcnMiID4mNQ0KICMgQ2hlY2sgd2hldGhl ciAtLXdpdGgtdGtpbmNsdWRlIG9yIC0td2l0aG91dC10a2luY2x1ZGUgd2Fz IGdpdmVuLg0KIGlmIHRlc3QgIiR7d2l0aF90a2luY2x1ZGUrc2V0fSIgPSBz ZXQ7IHRoZW4NCiAgIHdpdGh2YWw9IiR3aXRoX3RraW5jbHVkZSINCkBAIC02 NjAyLDE3ICs2NTkxLDE3IEBAIGZpDQogaWYgdGVzdCB4IiR7YWNfY3ZfY190 a2h9IiA9IHggOyB0aGVuDQogICAgYWNfc2FmZT1gZWNobyAidGsuaCIgfCBz ZWQgJ3klLi8rLSVfX3BfJSdgDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9y IHRrLmgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo2NjA2 OiBjaGVja2luZyBmb3IgdGsuaCIgPiY1DQorZWNobyAiY29uZmlndXJlOjY1 OTU6IGNoZWNraW5nIGZvciB0ay5oIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwi YGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9 IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAx PiY2DQogZWxzZQ0KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0K LSNsaW5lIDY2MTEgImNvbmZpZ3VyZSINCisjbGluZSA2NjAwICJjb25maWd1 cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogI2luY2x1ZGUgPHRrLmg+ DQogRU9GDQogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9k ZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCINCi17IChldmFsIGVjaG8gY29uZmln dXJlOjY2MTY6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAy PiY1OyB9DQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NjA1OiBcIiRhY190 cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQ0KIGFjX2Vycj1g Z3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0 ZXN0LiR7YWNfZXh0fVwkImANCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhl bg0KICAgcm0gLXJmIGNvbmZ0ZXN0Kg0KQEAgLTY2NTgsNyArNjY0Nyw3IEBA IGZpDQogDQogCSAgIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBJdGNs IHByaXZhdGUgaGVhZGVycy4gc3JjZGlyPSR7c3JjZGlyfSIiLi4uICRhY19j IiAxPiY2DQotZWNobyAiY29uZmlndXJlOjY2NjI6IGNoZWNraW5nIGZvciBJ dGNsIHByaXZhdGUgaGVhZGVycy4gc3JjZGlyPSR7c3JjZGlyfSIgPiY1DQor ZWNobyAiY29uZmlndXJlOjY2NTE6IGNoZWNraW5nIGZvciBJdGNsIHByaXZh dGUgaGVhZGVycy4gc3JjZGlyPSR7c3JjZGlyfSIgPiY1DQogaWYgdGVzdCB4 IiR7YWNfY3ZfY19pdGNsaH0iID0geCA7IHRoZW4NCiAgIGZvciBpIGluICR7 c3JjZGlyfS8uLi9pdGNsICR7c3JjZGlyfS8uLi8uLi9pdGNsICR7c3JjZGly fS8uLi8uLi8uLi9pdGNsICR7c3JjZGlyfS8uLi9pdGNsL2l0Y2w7IGRvDQog ICAgIGlmIHRlc3QgLWYgJGkvZ2VuZXJpYy9pdGNsLmggOyB0aGVuDQpAQCAt NjY4MSw3ICs2NjcwLDcgQEAgZmkNCiANCiAJICAgDQogZWNobyAkYWNfbiAi Y2hlY2tpbmcgZm9yIEl0ayBwcml2YXRlIGhlYWRlcnMuIHNyY2Rpcj0ke3Ny Y2Rpcn0iIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo2Njg1 OiBjaGVja2luZyBmb3IgSXRrIHByaXZhdGUgaGVhZGVycy4gc3JjZGlyPSR7 c3JjZGlyfSIgPiY1DQorZWNobyAiY29uZmlndXJlOjY2NzQ6IGNoZWNraW5n IGZvciBJdGsgcHJpdmF0ZSBoZWFkZXJzLiBzcmNkaXI9JHtzcmNkaXJ9IiA+ JjUNCiBpZiB0ZXN0IHgiJHthY19jdl9jX2l0a2h9IiA9IHggOyB0aGVuDQog ICBmb3IgaSBpbiAke3NyY2Rpcn0vLi4vaXRjbCAke3NyY2Rpcn0vLi4vLi4v aXRjbCAke3NyY2Rpcn0vLi4vLi4vLi4vaXRjbCAke3NyY2Rpcn0vLi4vaXRj bC9pdGs7IGRvDQogICAgIGlmIHRlc3QgLWYgJGkvZ2VuZXJpYy9pdGsuaCA7 IHRoZW4NCkBAIC02NzA0LDcgKzY2OTMsNyBAQCBmaQ0KIA0KIAkgICANCiBl Y2hvICRhY19uICJjaGVja2luZyBmb3IgVGl4IHByaXZhdGUgaGVhZGVycy4g c3JjZGlyPSR7c3JjZGlyfSIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29u ZmlndXJlOjY3MDg6IGNoZWNraW5nIGZvciBUaXggcHJpdmF0ZSBoZWFkZXJz LiBzcmNkaXI9JHtzcmNkaXJ9IiA+JjUNCitlY2hvICJjb25maWd1cmU6NjY5 NzogY2hlY2tpbmcgZm9yIFRpeCBwcml2YXRlIGhlYWRlcnMuIHNyY2Rpcj0k e3NyY2Rpcn0iID4mNQ0KIGlmIHRlc3QgeCIke2FjX2N2X2NfdGl4aH0iID0g eCA7IHRoZW4NCiAgIGZvciBpIGluICR7c3JjZGlyfS8uLi90aXggJHtzcmNk aXJ9Ly4uLy4uL3RpeCAke3NyY2Rpcn0vLi4vLi4vLi4vdGl4IDsgZG8NCiAg ICAgaWYgdGVzdCAtZiAkaS9nZW5lcmljL3RpeC5oIDsgdGhlbg0KQEAgLTY3 NDIsNyArNjczMSw3IEBAIGlmIHRlc3QgIiR7d2l0aF9pdGNsY29uZmlnK3Nl dH0iID0gc2V0OyANCiBmaQ0KIA0KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcg Zm9yIEl0Y2wgY29uZmlndXJhdGlvbiIiLi4uICRhY19jIiAxPiY2DQotZWNo byAiY29uZmlndXJlOjY3NDY6IGNoZWNraW5nIGZvciBJdGNsIGNvbmZpZ3Vy YXRpb24iID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo2NzM1OiBjaGVja2luZyBm b3IgSXRjbCBjb25maWd1cmF0aW9uIiA+JjUNCiAgIGlmIGV2YWwgInRlc3Qg XCJgZWNobyAnJCcneydhY19jdl9jX2l0Y2xjb25maWcnK3NldH0nYFwiID0g c2V0IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+ JjYNCiBlbHNlDQpAQCAtNjg1NCw3ICs2ODQzLDcgQEAgaWYgdGVzdCAiJHt3 aXRoX2l0a2NvbmZpZytzZXR9IiA9IHNldDsgdA0KIGZpDQogDQogICBlY2hv ICRhY19uICJjaGVja2luZyBmb3IgSXRrIGNvbmZpZ3VyYXRpb24iIi4uLiAk YWNfYyIgMT4mNg0KLWVjaG8gImNvbmZpZ3VyZTo2ODU4OiBjaGVja2luZyBm b3IgSXRrIGNvbmZpZ3VyYXRpb24iID4mNQ0KK2VjaG8gImNvbmZpZ3VyZTo2 ODQ3OiBjaGVja2luZyBmb3IgSXRrIGNvbmZpZ3VyYXRpb24iID4mNQ0KICAg aWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfaXRrY29uZmln JytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVjaG8gJGFjX24gIihjYWNo ZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTY5NjYsNyArNjk1NSw3IEBA IGlmIHRlc3QgIiR7d2l0aF90aXhjb25maWcrc2V0fSIgPSBzZXQ7IHQNCiBm aQ0KIA0KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFRpeCBjb25maWd1 cmF0aW9uIiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1cmU6Njk3 MDogY2hlY2tpbmcgZm9yIFRpeCBjb25maWd1cmF0aW9uIiA+JjUNCitlY2hv ICJjb25maWd1cmU6Njk1OTogY2hlY2tpbmcgZm9yIFRpeCBjb25maWd1cmF0 aW9uIiA+JjUNCiAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19j dl9jX3RpeGNvbmZpZycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hv ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCkBAIC03MTA1 LDcgKzcwOTQsNyBAQCBmaQ0KICMgVXNlcyBhY18gdmFycyBhcyB0ZW1wcyB0 byBhbGxvdyBjb21tYW5kIGxpbmUgdG8gb3ZlcnJpZGUgY2FjaGUgYW5kIGNo ZWNrcy4NCiAjIC0td2l0aG91dC14IG92ZXJyaWRlcyBldmVyeXRoaW5nIGVs c2UsIGJ1dCBkb2VzIG5vdCB0b3VjaCB0aGUgY2FjaGUuDQogZWNobyAkYWNf biAiY2hlY2tpbmcgZm9yIFgiIi4uLiAkYWNfYyIgMT4mNg0KLWVjaG8gImNv bmZpZ3VyZTo3MTA5OiBjaGVja2luZyBmb3IgWCIgPiY1DQorZWNobyAiY29u ZmlndXJlOjcwOTg6IGNoZWNraW5nIGZvciBYIiA+JjUNCiANCiAjIENoZWNr IHdoZXRoZXIgLS13aXRoLXggb3IgLS13aXRob3V0LXggd2FzIGdpdmVuLg0K IGlmIHRlc3QgIiR7d2l0aF94K3NldH0iID0gc2V0OyB0aGVuDQpAQCAtNzE2 NywxMiArNzE1NiwxMiBAQCBpZiB0ZXN0ICIkYWNfeF9pbmNsdWRlcyIgPSBO TzsgdGhlbg0KIA0KICAgIyBGaXJzdCwgdHJ5IHVzaW5nIHRoYXQgZmlsZSB3 aXRoIG5vIHNwZWNpYWwgZGlyZWN0b3J5IHNwZWNpZmllZC4NCiBjYXQgPiBj b25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNzE3MSAiY29uZmlndXJl Ig0KKyNsaW5lIDcxNjAgImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAiY29uZmRl ZnMuaCINCiAjaW5jbHVkZSA8JHhfZGlyZWN0X3Rlc3RfaW5jbHVkZT4NCiBF T0YNCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9u dWxsIDI+Y29uZnRlc3Qub3V0Ig0KLXsgKGV2YWwgZWNobyBjb25maWd1cmU6 NzE3NjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7 IH0NCit7IChldmFsIGVjaG8gY29uZmlndXJlOjcxNjU6IFwiJGFjX3RyeVwi KSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9DQogYWNfZXJyPWBncmVw IC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3Qu JHthY19leHR9XCQiYA0KIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuDQog ICBybSAtcmYgY29uZnRlc3QqDQpAQCAtNzI0MSwxNCArNzIzMCwxNCBAQCBp ZiB0ZXN0ICIkYWNfeF9saWJyYXJpZXMiID0gTk87IHRoZW4NCiAgIGFjX3Nh dmVfTElCUz0iJExJQlMiDQogICBMSUJTPSItbCR4X2RpcmVjdF90ZXN0X2xp YnJhcnkgJExJQlMiDQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRg0K LSNsaW5lIDcyNDUgImNvbmZpZ3VyZSINCisjbGluZSA3MjM0ICJjb25maWd1 cmUiDQogI2luY2x1ZGUgImNvbmZkZWZzLmgiDQogDQogaW50IG1haW4oKSB7 DQogJHt4X2RpcmVjdF90ZXN0X2Z1bmN0aW9ufSgpDQogOyByZXR1cm4gMDsg fQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzI1MjogXCIk YWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0 ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuDQoraWYgeyAoZXZh bCBlY2hvIGNvbmZpZ3VyZTo3MjQxOiBcIiRhY19saW5rXCIpIDE+JjU7IChl dmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2Fj X2V4ZWV4dH07IHRoZW4NCiAgIHJtIC1yZiBjb25mdGVzdCoNCiAgIExJQlM9 IiRhY19zYXZlX0xJQlMiDQogIyBXZSBjYW4gbGluayBYIHByb2dyYW1zIHdp dGggbm8gc3BlY2lhbCBsaWJyYXJ5IHBhdGguDQpAQCAtNzQ5MywxMiArNzQ4 MiwxOSBAQCBpZiB0ZXN0ICIke3RhcmdldH0iID0gIiR7aG9zdH0iOyB0aGVu DQogbmF0aXZlZmlsZT1gc2VkIC1uICcNCiBzL05BVF9GSUxFWyAJXSo9WyAJ XSpcKFteIAldKlwpL1wxL3ANCiAnICR7aG9zdF9tYWtlZmlsZV9mcmFnfWAN Ci0jIGVsc2UNCitlbHNlDQogIyBHREJzZXJ2ZXIgaXMgb25seSB1c2VmdWwg aW4gYSAibmF0aXZlIiBlbnZpcm9tZW50DQotIyBjb25maWdkaXJzPWBlY2hv ICRjb25maWdkaXJzIHwgc2VkICdzL2dkYnNlcnZlci8vJ2ANCitjb25maWdk aXJzPWBlY2hvICRjb25maWdkaXJzIHwgc2VkICdzL2dkYnNlcnZlci8vJ2AN CitmaQ0KKw0KKw0KK1NVQkRJUlM9ImRvYyB0ZXN0c3VpdGUgbmxtICRjb25m aWdkaXJzIg0KK2lmIHRlc3QgIiR7ZW5hYmxlX211bHRpX2ljZX0iID0gInll cyI7IHRoZW4NCisgIFNVQkRJUlM9IiR7U1VCRElSU30gbXVsdGktaWNlIg0K IGZpDQogDQogDQorDQogIyBOZXcgdGFyZ2V0cyBzaG91bGQganVzdCBzZXQg Z2RiX211bHRpX2FyY2g9eWVzIGluIGNvbmZpZ3VyZS50Z3QuDQogIyBPbGQg dGFyZ2V0cyBiZWluZyBjb252ZXJ0ZWQgY2FuIGVpdGhlciBkbyB0aGF0IG9y IHNldCBHREJfTVVMVElfQVJDSA0KICMgaW4gdGhlIHRhcmdldCBzcGVjaWZp YyBtYWtlZmlsZSBmcmFnLiAgRXZlbnR1YWxseSBnZGJfbXVsdGlfYXJjaD15 ZXMNCkBAIC03NTI4LDE0ICs3NTI0LDYgQEAgY2FzZSAiJHtHREJfTVVMVElf QVJDSH0iIGluDQogICAgICopICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6 ICJHREI6IFVua25vd24gR0RCX01VTFRJX0FSQ0ggdmFsdWUgJHtHREJfTVVM VElfQVJDSH0iIiAxPiYyOyBleGl0IDE7IH07Ow0KIGVzYWMNCiANCi0NCi1T VUJESVJTPSJkb2MgdGVzdHN1aXRlIG5sbSINCi1pZiB0ZXN0ICIke2VuYWJs ZV9tdWx0aV9pY2V9IiA9ICJ5ZXMiOyB0aGVuDQotICBTVUJESVJTPSIke1NV QkRJUlN9IG11bHRpLWljZSINCi1maQ0KLQ0KLQ0KLQ0KICMgSWYgaG9zdGZp bGUgKFhNX0ZJTEUpIGFuZC9vciB0YXJnZXRmaWxlIChUTV9GSUxFKSBhbmQv b3IgbmF0aXZlZmlsZQ0KICMgKE5BVF9GSUxFKSBpcyBub3Qgc2V0IGluIGNv bmZpZy8qLyoubVtodF0gZmlsZXMsIHdlIGRvbid0IG1ha2UgdGhlDQogIyBj b3JyZXNwb25kaW5nIGxpbmtzLiAgQnV0IHdlIGhhdmUgdG8gcmVtb3ZlIHRo ZSB4bS5oIGZpbGVzIGFuZCB0bS5oDQpAQCAtNzU2NCw3ICs3NTUyLDcgQEAg ZmlsZXM9IiR7ZmlsZXN9IGNvbmZpZy9ubS1lbXB0eS5oIg0KIGxpbmtzPSIk e2xpbmtzfSBubS5oIg0KIGZpDQogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hl dGhlciBsbiAtcyB3b3JrcyIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29u ZmlndXJlOjc1Njg6IGNoZWNraW5nIHdoZXRoZXIgbG4gLXMgd29ya3MiID4m NQ0KK2VjaG8gImNvbmZpZ3VyZTo3NTU2OiBjaGVja2luZyB3aGV0aGVyIGxu IC1zIHdvcmtzIiA+JjUNCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sn YWNfY3ZfcHJvZ19MTl9TJytzZXR9J2BcIiA9IHNldCI7IHRoZW4NCiAgIGVj aG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2DQogZWxzZQ0KQEAgLTc1 ODgsMTIgKzc1NzYsMTIgQEAgZmkNCiANCiANCiBlY2hvICRhY19uICJjaGVj a2luZyBmb3IgQ3lnd2luIGVudmlyb25tZW50IiIuLi4gJGFjX2MiIDE+JjYN Ci1lY2hvICJjb25maWd1cmU6NzU5MjogY2hlY2tpbmcgZm9yIEN5Z3dpbiBl bnZpcm9ubWVudCIgPiY1DQorZWNobyAiY29uZmlndXJlOjc1ODA6IGNoZWNr aW5nIGZvciBDeWd3aW4gZW52aXJvbm1lbnQiID4mNQ0KIGlmIGV2YWwgInRl c3QgXCJgZWNobyAnJCcneydhY19jdl9jeWd3aW4nK3NldH0nYFwiID0gc2V0 IjsgdGhlbg0KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYN CiBlbHNlDQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xp bmUgNzU5NyAiY29uZmlndXJlIg0KKyNsaW5lIDc1ODUgImNvbmZpZ3VyZSIN CiAjaW5jbHVkZSAiY29uZmRlZnMuaCINCiANCiBpbnQgbWFpbigpIHsNCkBA IC03NjA0LDcgKzc1OTIsNyBAQCBpbnQgbWFpbigpIHsNCiByZXR1cm4gX19D WUdXSU5fXzsNCiA7IHJldHVybiAwOyB9DQogRU9GDQotaWYgeyAoZXZhbCBl Y2hvIGNvbmZpZ3VyZTo3NjA4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChl dmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQoraWYgeyAoZXZhbCBl Y2hvIGNvbmZpZ3VyZTo3NTk2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChl dmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuDQogICBybSAtcmYgY29u ZnRlc3QqDQogICBhY19jdl9jeWd3aW49eWVzDQogZWxzZQ0KQEAgLTc2MjEs MTkgKzc2MDksMTkgQEAgZWNobyAiJGFjX3QiIiRhY19jdl9jeWd3aW4iIDE+ JjYNCiBDWUdXSU49DQogdGVzdCAiJGFjX2N2X2N5Z3dpbiIgPSB5ZXMgJiYg Q1lHV0lOPXllcw0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtaW5ndzMy IGVudmlyb25tZW50IiIuLi4gJGFjX2MiIDE+JjYNCi1lY2hvICJjb25maWd1 cmU6NzYyNTogY2hlY2tpbmcgZm9yIG1pbmd3MzIgZW52aXJvbm1lbnQiID4m NQ0KK2VjaG8gImNvbmZpZ3VyZTo3NjEzOiBjaGVja2luZyBmb3IgbWluZ3cz MiBlbnZpcm9ubWVudCIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICck Jyd7J2FjX2N2X21pbmd3MzInK3NldH0nYFwiID0gc2V0IjsgdGhlbg0KICAg ZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYNCiBlbHNlDQogICBj YXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GDQotI2xpbmUgNzYzMCAiY29u ZmlndXJlIg0KKyNsaW5lIDc2MTggImNvbmZpZ3VyZSINCiAjaW5jbHVkZSAi Y29uZmRlZnMuaCINCiANCiBpbnQgbWFpbigpIHsNCiByZXR1cm4gX19NSU5H VzMyX187DQogOyByZXR1cm4gMDsgfQ0KIEVPRg0KLWlmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6NzYzNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZh bCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KK2lmIHsgKGV2YWwgZWNo byBjb25maWd1cmU6NzYyNTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZh bCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbg0KICAgcm0gLXJmIGNvbmZ0 ZXN0Kg0KICAgYWNfY3ZfbWluZ3czMj15ZXMNCiBlbHNlDQpAQCAtNzY1Miw3 ICs3NjQwLDcgQEAgdGVzdCAiJGFjX2N2X21pbmd3MzIiID0geWVzICYmIE1J TkdXMzI9eQ0KIA0KIA0KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBleGVj dXRhYmxlIHN1ZmZpeCIiLi4uICRhY19jIiAxPiY2DQotZWNobyAiY29uZmln dXJlOjc2NTY6IGNoZWNraW5nIGZvciBleGVjdXRhYmxlIHN1ZmZpeCIgPiY1 DQorZWNobyAiY29uZmlndXJlOjc2NDQ6IGNoZWNraW5nIGZvciBleGVjdXRh YmxlIHN1ZmZpeCIgPiY1DQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7 J2FjX2N2X2V4ZWV4dCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuDQogICBlY2hv ICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNg0KIGVsc2UNCkBAIC03NjYy LDEwICs3NjUwLDEwIEBAIGVsc2UNCiAgIHJtIC1mIGNvbmZ0ZXN0Kg0KICAg ZWNobyAnaW50IG1haW4gKCkgeyByZXR1cm4gMDsgfScgPiBjb25mdGVzdC4k YWNfZXh0DQogICBhY19jdl9leGVleHQ9DQotICBpZiB7IChldmFsIGVjaG8g Y29uZmlndXJlOjc2NjY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFj X2xpbmspIDI+JjU7IH07IHRoZW4NCisgIGlmIHsgKGV2YWwgZWNobyBjb25m aWd1cmU6NzY1NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGlu aykgMj4mNTsgfTsgdGhlbg0KICAgICBmb3IgZmlsZSBpbiBjb25mdGVzdC4q OyBkbw0KICAgICAgIGNhc2UgJGZpbGUgaW4NCi0gICAgICAqLmMgfCAqLm8g fCAqLm9iaiB8ICouaWxrIHwgKi5wZGIpIDs7DQorICAgICAgKi5jIHwgKi5v IHwgKi5vYmopIDs7DQogICAgICAgKikgYWNfY3ZfZXhlZXh0PWBlY2hvICRm aWxlIHwgc2VkIC1lIHMvY29uZnRlc3QvL2AgOzsNCiAgICAgICBlc2FjDQog ICAgIGRvbmUNCkluZGV4OiBnZGIvY29uZmlndXJlLmluDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9jb25m aWd1cmUuaW4sdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjQwDQpkaWZmIC11 IC1wIC1yMS40MCBjb25maWd1cmUuaW4NCi0tLSBjb25maWd1cmUuaW4JMjAw MC8wNy8yNyAwNDowMToyNAkxLjQwDQorKysgY29uZmlndXJlLmluCTIwMDAv MDcvMzEgMTU6NTk6NTkNCkBAIC0xMDE0LDEyICsxMDE0LDE5IEBAIGlmIHRl c3QgIiR7dGFyZ2V0fSIgPSAiJHtob3N0fSI7IHRoZW4NCiBuYXRpdmVmaWxl PWBzZWQgLW4gJw0KIHMvTkFUX0ZJTEVbIAldKj1bIAldKlwoW14gCV0qXCkv XDEvcA0KICcgJHtob3N0X21ha2VmaWxlX2ZyYWd9YA0KLSMgZWxzZQ0KK2Vs c2UNCiAjIEdEQnNlcnZlciBpcyBvbmx5IHVzZWZ1bCBpbiBhICJuYXRpdmUi IGVudmlyb21lbnQNCi0jIGNvbmZpZ2RpcnM9YGVjaG8gJGNvbmZpZ2RpcnMg fCBzZWQgJ3MvZ2Ric2VydmVyLy8nYA0KK2NvbmZpZ2RpcnM9YGVjaG8gJGNv bmZpZ2RpcnMgfCBzZWQgJ3MvZ2Ric2VydmVyLy8nYA0KIGZpDQogY2hhbmdl cXVvdGUoWyxdKQ0KIA0KK1NVQkRJUlM9ImRvYyB0ZXN0c3VpdGUgbmxtICRj b25maWdkaXJzIg0KK2lmIHRlc3QgIiR7ZW5hYmxlX211bHRpX2ljZX0iID0g InllcyI7IHRoZW4NCisgIFNVQkRJUlM9IiR7U1VCRElSU30gbXVsdGktaWNl Ig0KK2ZpDQorDQorQUNfU1VCU1QoU1VCRElSUykNCisNCiAjIE5ldyB0YXJn ZXRzIHNob3VsZCBqdXN0IHNldCBnZGJfbXVsdGlfYXJjaD15ZXMgaW4gY29u ZmlndXJlLnRndC4NCiAjIE9sZCB0YXJnZXRzIGJlaW5nIGNvbnZlcnRlZCBj YW4gZWl0aGVyIGRvIHRoYXQgb3Igc2V0IEdEQl9NVUxUSV9BUkNIDQogIyBp biB0aGUgdGFyZ2V0IHNwZWNpZmljIG1ha2VmaWxlIGZyYWcuICBFdmVudHVh bGx5IGdkYl9tdWx0aV9hcmNoPXllcw0KQEAgLTEwNDUsMTQgKzEwNTIsNiBA QCBjYXNlICIke0dEQl9NVUxUSV9BUkNIfSIgaW4NCiAJZmkgOzsNCiAgICAg KikgIEFDX01TR19FUlJPUigiR0RCOiBVbmtub3duIEdEQl9NVUxUSV9BUkNI IHZhbHVlICR7R0RCX01VTFRJX0FSQ0h9Iik7Ow0KIGVzYWMNCi0NCi0NCi1T VUJESVJTPSJkb2MgdGVzdHN1aXRlIG5sbSINCi1pZiB0ZXN0ICIke2VuYWJs ZV9tdWx0aV9pY2V9IiA9ICJ5ZXMiOyB0aGVuDQotICBTVUJESVJTPSIke1NV QkRJUlN9IG11bHRpLWljZSINCi1maQ0KLQ0KLUFDX1NVQlNUKFNVQkRJUlMp DQogDQogIyBJZiBob3N0ZmlsZSAoWE1fRklMRSkgYW5kL29yIHRhcmdldGZp bGUgKFRNX0ZJTEUpIGFuZC9vciBuYXRpdmVmaWxlDQogIyAoTkFUX0ZJTEUp IGlzIG5vdCBzZXQgaW4gY29uZmlnLyovKi5tW2h0XSBmaWxlcywgd2UgZG9u J3QgbWFrZSB0aGUNCg== ------------=_1583534355-29877-16-- >From cgf@cygnus.com Mon Jul 31 09:41:00 2000 From: Chris Faylor To: GDB Patches Mail List Cc: scottb@netwinder.org Subject: Re: RFC: changes to configure.in and configure Date: Mon, 31 Jul 2000 09:41:00 -0000 Message-id: <20000731124035.N9027@cygnus.com> References: <3985A85C.C246C623@netwinder.org> X-SW-Source: 2000-07/msg00376.html Content-length: 671 On Mon, Jul 31, 2000 at 12:25:00PM -0400, Scott Bambrough wrote: >I noticed last week that gdbserver was not building on my ARM Linux box >automatically even though it was specified in configdirs in >configure.tgt. It seems none of the modifications to configdirs in >configure.tgt were being applied. I'd like to apply the following >patch to configure.in which fixes this problem if no on has any >objections. The changes to configure are the diffs after configure was >regenerated using autoconf 2.13 as Andrew suggested. When I inspect your patch I see \r's at the end of every line. Was it generated on a windows system? Or is my mail reader screwed up? cgf