This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
>Number: 343 >Category: c++ >Synopsis: gcc reports internal compiler error #98 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Jun 22 08:06:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: green@rhythm.com >Release: unknown-1.0 >Organization: >Environment: c++ -v Reading specs from /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/specs gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) >Description: The following command line: c++ -v -save-files -O2 -ftemplate-depth-1024 -c -DSYSV -DMOTIF -DXT_CODE -Ih -Iui -I../h -I/software/thalia/h -I/usr/X11R6/include -o obj/linux6-alpha-std/NRHY_Access.o nrhy/NRHY_Access.c Produces the following messages: Reading specs from /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/specs c++: unrecognized option `-save-files' gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/cpp -lang-c++ -v -Ih -Iui -I../h -I/software/thalia/h -I/usr/X11R6/include -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -Dlinux -Dunix -D_LONGLONG -D__alpha__ -D__ELF__ -D__linux__ -D__unix__ -D_LONGLONG -D__alpha__ -D__ELF__ -D__linux -D__unix -Asystem(linux) -D__EXCEPTIONS -D__OPTIMIZE__ -D__LANGUAGE_C__ -D__LANGUAGE_C -DLANGUAGE_C -Acpu(alpha) -Amachine(alpha) -D__alpha -D__alpha__ -D__alpha_ev4__ -Acpu(ev4) -DSYSV -DMOTIF -DXT_CODE nrhy/NRHY_Access.c /tmp/ccCLiGbx.ii GNU CPP version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (Alpha GNU/Linux for ELF) #include "..." search starts here: #include <...> search starts here: h ui ../h /software/thalia/h /usr/X11R6/include /usr/include/g++-2 /usr/local/include /usr/alpha-redhat-linux/include /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/include /usr/include End of search list. /usr/lib/gcc-lib/alpha-redhat-linux/egcs-2.91.66/cc1plus /tmp/ccCLiGbx.ii -quiet -dumpbase NRHY_Access.cc -O2 -version -ftemplate-depth-1024 -o /tmp/cc8wR72A.s GNU C++ version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release) (alpha-redhat-linux) compiled by GNU C version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release). nrhy/NRHY_Access.c: In method `void Chordump::DoCamera()': nrhy/NRHY_Access.c:612: warning: name lookup of `i' changed for new ANSI `for' scoping nrhy/NRHY_Access.c:607: warning: using obsolete binding at `i' nrhy/NRHY_Access.c: In method `void Chordump::DoStereo(short int, short int)': nrhy/NRHY_Access.c:635: warning: name lookup of `i' changed for new ANSI `for' scoping nrhy/NRHY_Access.c:627: warning: using obsolete binding at `i' h/nrhy_templateFind.h: In method `class NRHY_classMuscle * NRHY_find<NRHY_classMuscle>::FastFind<NRHY_classMuscle>()': h/nrhy_templateFind.h:145: instantiated from `NRHY_find<NRHY_classMuscle>::findItemForRead<NRHY_classMuscle>()' h/nrhy_templateFind.h:120: instantiated from `NRHY_find<NRHY_classMuscle>::findItem<NRHY_classMuscle>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classMuscle>::FindItem<NRHY_classMuscle>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classMuscle>::FindItemAsThing<NRHY_classMuscle>(bool, bool, bool)' h/nrhy_templateMatch.c:2306: instantiated from `NRHY_match<NRHY_classLayer>::matchAllOfOneClass<NRHY_classLayer>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classLayer>::Matchem<NRHY_classLayer>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classLayer>::findItem<NRHY_classLayer>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classLayer>::FindItem<NRHY_classLayer>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classLayer>::FindItemAsThing<NRHY_classLayer>(bool, bool, bool)' h/nrhy_templateMatch.c:2304: instantiated from `NRHY_match<NRHY_classFur>::matchAllOfOneClass<NRHY_classFur>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classFur>::Matchem<NRHY_classFur>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classFur>::findItem<NRHY_classFur>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classFur>::FindItem<NRHY_classFur>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classFur>::FindItemAsThing<NRHY_classFur>(bool, bool, bool)' h/nrhy_templateMatch.c:2302: instantiated from `NRHY_match<NRHY_classKlist>::matchAllOfOneClass<NRHY_classKlist>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classKlist>::Matchem<NRHY_classKlist>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classKlist>::findItem<NRHY_classKlist>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classKlist>::FindItem<NRHY_classKlist>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classKlist>::FindItemAsThing<NRHY_classKlist>(bool, bool, bool)' h/nrhy_templateMatch.c:2300: instantiated from `NRHY_match<NRHY_classRoot>::matchAllOfOneClass<NRHY_classRoot>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classRoot>::Matchem<NRHY_classRoot>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classRoot>::findItem<NRHY_classRoot>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classRoot>::FindItem<NRHY_classRoot>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classRoot>::FindItemAsThing<NRHY_classRoot>(bool, bool, bool)' h/nrhy_templateMatch.c:2298: instantiated from `NRHY_match<NRHY_classApparition>::matchAllOfOneClass<NRHY_classApparition>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classApparition>::Matchem<NRHY_classApparition>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classApparition>::findItem<NRHY_classApparition>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classApparition>::FindItem<NRHY_classApparition>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classApparition>::FindItemAsThing<NRHY_classApparition>(bool, bool, bool)' h/nrhy_templateMatch.c:2296: instantiated from `NRHY_match<NRHY_classTrack>::matchAllOfOneClass<NRHY_classTrack>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classTrack>::Matchem<NRHY_classTrack>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classTrack>::findItem<NRHY_classTrack>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classTrack>::FindItem<NRHY_classTrack>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classTrack>::FindItemAsThing<NRHY_classTrack>(bool, bool, bool)' h/nrhy_templateMatch.c:2294: instantiated from `NRHY_match<NRHY_classScaffold>::matchAllOfOneClass<NRHY_classScaffold>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classScaffold>::Matchem<NRHY_classScaffold>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classScaffold>::findItem<NRHY_classScaffold>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classScaffold>::FindItem<NRHY_classScaffold>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classScaffold>::FindItemAsThing<NRHY_classScaffold>(bool, bool, bool)' h/nrhy_templateMatch.c:2292: instantiated from `NRHY_match<NRHY_classInky>::matchAllOfOneClass<NRHY_classInky>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classInky>::Matchem<NRHY_classInky>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classInky>::findItem<NRHY_classInky>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classInky>::FindItem<NRHY_classInky>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classInky>::FindItemAsThing<NRHY_classInky>(bool, bool, bool)' h/nrhy_templateMatch.c:2290: instantiated from `NRHY_match<NRHY_classCollision>::matchAllOfOneClass<NRHY_classCollision>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classCollision>::Matchem<NRHY_classCollision>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classCollision>::findItem<NRHY_classCollision>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classCollision>::FindItem<NRHY_classCollision>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classCollision>::FindItemAsThing<NRHY_classCollision>(bool, bool, bool)' h/nrhy_templateMatch.c:2288: instantiated from `NRHY_match<NRHY_classGenerator>::matchAllOfOneClass<NRHY_classGenerator>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classGenerator>::Matchem<NRHY_classGenerator>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classGenerator>::findItem<NRHY_classGenerator>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classGenerator>::FindItem<NRHY_classGenerator>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classGenerator>::FindItemAsThing<NRHY_classGenerator>(bool, bool, bool)' h/nrhy_templateMatch.c:2286: instantiated from `NRHY_match<NRHY_classForce>::matchAllOfOneClass<NRHY_classForce>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classForce>::Matchem<NRHY_classForce>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classForce>::findItem<NRHY_classForce>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classForce>::FindItem<NRHY_classForce>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classForce>::FindItemAsThing<NRHY_classForce>(bool, bool, bool)' h/nrhy_templateMatch.c:2284: instantiated from `NRHY_match<NRHY_classDynamics>::matchAllOfOneClass<NRHY_classDynamics>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classDynamics>::Matchem<NRHY_classDynamics>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classDynamics>::findItem<NRHY_classDynamics>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classDynamics>::FindItem<NRHY_classDynamics>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classDynamics>::FindItemAsThing<NRHY_classDynamics>(bool, bool, bool)' h/nrhy_templateMatch.c:2282: instantiated from `NRHY_match<NRHY_classSound>::matchAllOfOneClass<NRHY_classSound>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classSound>::Matchem<NRHY_classSound>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classSound>::findItem<NRHY_classSound>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classSound>::FindItem<NRHY_classSound>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classSound>::FindItemAsThing<NRHY_classSound>(bool, bool, bool)' h/nrhy_templateMatch.c:2280: instantiated from `NRHY_match<NRHY_classUseMap>::matchAllOfOneClass<NRHY_classUseMap>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classUseMap>::Matchem<NRHY_classUseMap>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classUseMap>::findItem<NRHY_classUseMap>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classUseMap>::FindItem<NRHY_classUseMap>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classUseMap>::FindItemAsThing<NRHY_classUseMap>(bool, bool, bool)' h/nrhy_templateMatch.c:2278: instantiated from `NRHY_match<NRHY_classMap>::matchAllOfOneClass<NRHY_classMap>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classMap>::Matchem<NRHY_classMap>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classMap>::findItem<NRHY_classMap>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classMap>::FindItem<NRHY_classMap>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classMap>::FindItemAsThing<NRHY_classMap>(bool, bool, bool)' h/nrhy_templateMatch.c:2276: instantiated from `NRHY_match<NRHY_classMaterial>::matchAllOfOneClass<NRHY_classMaterial>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classMaterial>::Matchem<NRHY_classMaterial>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classMaterial>::findItem<NRHY_classMaterial>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classMaterial>::FindItem<NRHY_classMaterial>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classMaterial>::FindItemAsThing<NRHY_classMaterial>(bool, bool, bool)' h/nrhy_templateMatch.c:2274: instantiated from `NRHY_match<NRHY_classTex>::matchAllOfOneClass<NRHY_classTex>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classTex>::Matchem<NRHY_classTex>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classTex>::findItem<NRHY_classTex>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classTex>::FindItem<NRHY_classTex>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classTex>::FindItemAsThing<NRHY_classTex>(bool, bool, bool)' h/nrhy_templateMatch.c:2272: instantiated from `NRHY_match<NRHY_classRoto>::matchAllOfOneClass<NRHY_classRoto>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classRoto>::Matchem<NRHY_classRoto>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classRoto>::findItem<NRHY_classRoto>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classRoto>::FindItem<NRHY_classRoto>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classRoto>::FindItemAsThing<NRHY_classRoto>(bool, bool, bool)' h/nrhy_templateMatch.c:2270: instantiated from `NRHY_match<NRHY_classHome>::matchAllOfOneClass<NRHY_classHome>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classHome>::Matchem<NRHY_classHome>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classHome>::findItem<NRHY_classHome>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classHome>::FindItem<NRHY_classHome>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classHome>::FindItemAsThing<NRHY_classHome>(bool, bool, bool)' h/nrhy_templateMatch.c:2268: instantiated from `NRHY_match<NRHY_classModel>::matchAllOfOneClass<NRHY_classModel>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classModel>::Matchem<NRHY_classModel>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classModel>::findItem<NRHY_classModel>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classModel>::FindItem<NRHY_classModel>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classModel>::FindItemAsThing<NRHY_classModel>(bool, bool, bool)' h/nrhy_templateMatch.c:2266: instantiated from `NRHY_match<NRHY_classLight>::matchAllOfOneClass<NRHY_classLight>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classLight>::Matchem<NRHY_classLight>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classLight>::findItem<NRHY_classLight>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classLight>::FindItem<NRHY_classLight>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classLight>::FindItemAsThing<NRHY_classLight>(bool, bool, bool)' h/nrhy_templateMatch.c:2264: instantiated from `NRHY_match<NRHY_classCamera>::matchAllOfOneClass<NRHY_classCamera>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classCamera>::Matchem<NRHY_classCamera>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classCamera>::findItem<NRHY_classCamera>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classCamera>::FindItem<NRHY_classCamera>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classCamera>::FindItemAsThing<NRHY_classCamera>(bool, bool, bool)' h/nrhy_templateMatch.c:2262: instantiated from `NRHY_match<NRHY_classObject>::matchAllOfOneClass<NRHY_classObject>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classObject>::Matchem<NRHY_classObject>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classObject>::findItem<NRHY_classObject>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classObject>::FindItem<NRHY_classObject>(bool, bool, bool)' h/nrhy_templateFind.h:73: instantiated from `NRHY_find<NRHY_classObject>::FindItemAsThing<NRHY_classObject>(bool, bool, bool)' h/nrhy_templateMatch.c:2260: instantiated from `NRHY_match<NRHY_classThing>::matchAllOfOneClass<NRHY_classThing>(const char *)' h/nrhy_templateMatch.c:598: instantiated from `NRHY_match<NRHY_classThing>::Matchem<NRHY_classThing>(const char *)' h/nrhy_templateFind.h:132: instantiated from `NRHY_find<NRHY_classThing>::findItem<NRHY_classThing>()' h/nrhy_templateFind.h:63: instantiated from `NRHY_find<NRHY_classThing>::FindItem<NRHY_classThing>(bool, bool, bool)' nrhy/NRHY_Access.c:238: instantiated from here h/nrhy_templateFind.h:102: Internal compiler error 98. h/nrhy_templateFind.h:102: Please submit a full bug report to `egcs-bugs@egcs.cygnus.com'. h/nrhy_templateFind.h:102: See <URL:http://egcs.cygnus.com/faq.html#bugreport> for details. >How-To-Repeat: c++ -O2 -ftemplate-depth-1024 -o NRHY_Access.o NRHY_Access.ii >Fix: Unknown. We may need to rewrite this code ( probably a good thing ) to avoid this error. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="NRHY_Access.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="NRHY_Access.ii" IyAxICJucmh5L05SSFlfQWNjZXNzLmMiCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi9zb2Z0 d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAojIDEg Ii91c3IvaW5jbHVkZS9tYXRoLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAx ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKCgogCgoKCgoKCgogCiMgMTM3ICIvdXNyL2lu Y2x1ZGUvZmVhdHVyZXMuaCIgMwoKCiAKCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKIyAxOTUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCgogCgojIDEgIi91c3Iv aW5jbHVkZS9zeXMvY2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoK CgoKIAoKCgoKCgoKCiAKCgoKCiMgNzEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAK CgoKCgoKCiAKCgoKIyAxMDMgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoKCgoK CgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoK CgoKIyAyNDkgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoK CiAKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiAKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKIyAyNzcgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgoK CiMgMjcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCiMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCiAKCgoKCgoKCgojIDUyICIvdXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAzCgoKCiAK CiMgODcgIi91c3IvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgiIDMKCiMgMzMgIi91c3IvaW5jbHVk ZS9tYXRoLmgiIDIgMwoKCiAKCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhkZWYuaCIg MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgNzQgIi91c3IvaW5jbHVkZS9iaXRzL21h dGhkZWYuaCIgMwoKCgogCgoKCiMgNDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgogCgoK CgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMK IAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAK ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7 IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAg ICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhc2luICAgICAgICAgIChkb3VibGUgIF9f eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRvdWJsZSAg X194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbiAgICAgICAgICAoZG91 YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hdGFuICAgICAgICAgIChk b3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4yICAgICAg ICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg ICAgX19hdGFuMiAgICAgICAgICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAgIDsKCiAK ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsg ZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg IDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2luICAgICAgICAgIChkb3VibGUgIF9feCkg ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NpbiAgICAgICAgICAoZG91YmxlICBfX3gp ICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB0YW4gICAgICAgICAgKGRvdWJsZSAg X194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuICAgICAgICAgIChkb3VibGUg IF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjb3NoICAg ICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Nvc2gg ICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAg c2luaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg X19zaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIHRhbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAg ICAgICAgIF9fdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAg ZG91YmxlICAgICAgICAgIGFjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAK ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAg OyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkg ICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW5oICAgICAgICAgIChkb3VibGUg IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW5oICAgICAgICAgIChkb3Vi bGUgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwICAgICAg ICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4cCAgICAg ICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg ICAgIGZyZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICA7IGV4 dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZnJleHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQg Kl9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbGRleHAgICAg ICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBkb3VibGUg ICAgICAgICBfX2xkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25lbnQpICAg ICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nICAgICAgICAgIChkb3VibGUgIF9f eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91YmxlICBf X3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMTAgICAgICAgICAgKGRv dWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMTAgICAgICAgICAg KGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1vZGYgICAg ICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAgZG91Ymxl ICAgICAgICAgX19tb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19pcHRyKSAg ICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHBtMSAgICAgICAgICAoZG91Ymxl ICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAgICAgICAoZG91 YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMXAgICAgICAg ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMXAgICAg ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGxv Z2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f bG9nYiAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAKZXh0ZXJu ICAgZG91YmxlICAgICAgICAgIHBvdyAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195 KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcG93ICAgICAgICAgIChkb3VibGUgIF9f eCwgZG91YmxlICBfX3kpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc3FydCAg ICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19zcXJ0 ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAg ICAgaHlwb3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4g ICBkb3VibGUgICAgICAgICBfX2h5cG90ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBf X3kpICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjYnJ0ICAgICAgICAgIChk b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NicnQgICAgICAgICAg KGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgY2Vp bCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19j ZWlsICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAg ICAgICBmYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAo X19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mYWJzICAgICAgICAgIChk b3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKIApl eHRlcm4gICBkb3VibGUgICAgICAgICAgZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7 IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194KSAg ICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZtb2QgICAgICAgICAgKGRvdWJsZSAg X194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Ztb2QgICAg ICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJuICBpbnQg ICAgIF9faXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIF9fZmluaXRlICAgICAgKGRvdWJsZSAgX192YWx1 ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBpbnQgICAgIGlz aW5mICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CgogCmV4dGVybiAgaW50ICAgICBmaW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBkb3VibGUgICAgICAgICAg aW5mbmFuICAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j b25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19pbmZuYW4gICAgICAgICAgKGlu dCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4 dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwgZG91Ymxl ICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19kcmVtICAgICAgICAgIChkb3Vi bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg IHNpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg ICAgICAgICBfX3NpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKCiAK ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUgIF9feCwg ZG91YmxlICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVy biAgIGRvdWJsZSAgICAgICAgIF9fY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3Vi bGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoKCgoK CiAKZXh0ZXJuICBpbnQgICAgIF9faXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgICBpc25hbiAgICAgIChk b3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4g ICBkb3VibGUgICAgICAgICAgajAgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91 YmxlICAgICAgICAgX19qMCAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJs ZSAgICAgICAgICBqMSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAg ICAgICBfX2oxICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAg ICAgIGpuICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg ICAgX19qbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIHkwICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg IF9feTAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAg eTEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX195MSAg ICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB5biAgICAg ICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9feW4gICAg ICAgICAgKGludCwgZG91YmxlICkgICAgICA7CgoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg ICBlcmYgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19l cmYgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgZXJm YyAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2VyZmMg ICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAgbGdhbW1h ICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1h ICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRnYW1t YSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3RnYW1t YSAgICAgICAgICAoZG91YmxlICkgICAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg IGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCgoKZXh0ZXJuICAgZG91YmxlICAg ICAgICAgIGxnYW1tYV9yICAgICAgICAgICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25nYW1wKSAg ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hX3IgICAgICAgICAgICAgIChkb3Vi bGUgLCBpbnQgKl9fc2lnbmdhbXApICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgZG91YmxlICAgICAg ICAgIHJpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg ICAgIF9fcmludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3Vi bGUgICAgICAgICAgbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kp ICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAg ICAgICAgIF9fbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAg ICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJuICAgZG91 YmxlICAgICAgICAgIHJlbWFpbmRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195 KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVyICAgICAgICAgIChkb3Vi bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg IHNjYWxiICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX24pICAgIDsgZXh0ZXJuICAg ZG91YmxlICAgICAgICAgX19zY2FsYiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX19u KSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2FsYm4gICAgICAgICAgKGRv dWJsZSAgX194LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2NhbGJu ICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAgIGludCAg ICAgICAgaWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICA7IGV4dGVybiAgIGludCAgICAgICAg X19pbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CgoKIyAzMzYgIi91c3IvaW5jbHVkZS9i aXRzL21hdGhjYWxscy5oIiAzCgojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgoK CiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMKIAoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKZXh0 ZXJuICAgZmxvYXQgICAgICAgICAgYWNvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0 ZXJuICAgZmxvYXQgICAgICAgICBfX2Fjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK IApleHRlcm4gICBmbG9hdCAgICAgICAgICBhc2luZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW5mICAgICAgICAgKGZsb2F0ICAgX194 KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hdGFuZiAgICAgICAgIChmbG9hdCAgIF9f eCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXRhbjJmICAgICAgICAgKGZsb2F0 ICAgX195LCBmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbjJm ICAgICAgICAgKGZsb2F0ICAgX195LCBmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZs b2F0ICAgICAgICAgIGNvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv YXQgICAgICAgICBfX2Nvc2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAg IGZsb2F0ICAgICAgICAgIHNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg ZmxvYXQgICAgICAgICBfX3NpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVy biAgIGZsb2F0ICAgICAgICAgIHRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu ICAgZmxvYXQgICAgICAgICBfX3RhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgoK CgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3NoZiAgICAgICAgIChmbG9hdCAgIF9f eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29zaGYgICAgICAgICAoZmxvYXQgICBf X3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNpbmhmICAgICAgICAgKGZsb2F0 ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5oZiAgICAgICAgIChmbG9h dCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgdGFuaGYgICAgICAgICAo ZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3RhbmhmICAgICAgICAg KGZsb2F0ICAgX194KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFjb3NoZiAg ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYWNvc2hm ICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBh c2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf X2FzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAg ICAgICAgYXRhbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg ICAgICAgX19hdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKCiAKZXh0ZXJu ICAgZmxvYXQgICAgICAgICAgZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g ICBmbG9hdCAgICAgICAgIF9fZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKCgoK CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4cGYgICAgICAgICAoZmxvYXQgICBfX3gs IGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZnJleHBmICAg ICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBm bG9hdCAgICAgICAgICBsZGV4cGYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX2V4cG9uZW50 KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYgICAgICAgICAoZmxvYXQgICBf X3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9n ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9n ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg IGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAg IF9fbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQg ICAgICAgICAgbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgKl9faXB0cikgICAg OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs b2F0ICAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBtMWYg ICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2V4cG0x ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg IGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAg IF9fbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQg ICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQg ICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKCgoKCgoKCgog CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHBvd2YgICAgICAgICAoZmxvYXQgICBfX3gsIGZs b2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19wb3dmICAgICAgICAgKGZs b2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAg IHNxcnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg X19zcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAg ICAgICAgICBoeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4 dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0 ICAgX195KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjYnJ0ZiAgICAgICAg IChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY2JydGYgICAgICAg ICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNl aWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19j ZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAg ICAgIGZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChf X2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZmFic2YgICAgICAgICAoZmxv YXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0 ZXJuICAgZmxvYXQgICAgICAgICAgZmxvb3JmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4 dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9vcmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAg OwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwg ZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2Ztb2RmICAgICAgICAg KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJuICBpbnQgICAgX19p c2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCiAKCmV4dGVybiAgaW50ICAgIGlzaW5mZiAgICAg KGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVy biAgaW50ICAgIGZpbml0ZWYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKIAoKCgoKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGluZm5hbmYgICAg ICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7 IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19pbmZuYW5mICAgICAgICAgKGludCBfX2Vycm9yKSAg ICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0 ICAgICAgICAgIGRyZW1mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBl eHRlcm4gICBmbG9hdCAgICAgICAgIF9fZHJlbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0 ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNpZ25pZmljYW5kZiAg ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2lnbmlm aWNhbmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAg ICAgICAgICBjb3B5c2lnbmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAg X19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAg IF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0 cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCgoKCgoKCiAKZXh0ZXJuICBpbnQgICAg X19pc25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCiAKZXh0ZXJuICBpbnQgICAgaXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBm ICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2owZiAgICAg ICAgIChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajFmICAgICAgICAg KGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAgICAgICAgIChmbG9h dCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgam5mICAgICAgICAgKGludCwgZmxv YXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fam5mICAgICAgICAgKGludCwgZmxv YXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAg KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MGYgICAgICAgICAoZmxvYXQgICkgICAg ICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4 dGVybiAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVy biAgIGZsb2F0ICAgICAgICAgIHluZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJu ICAgZmxvYXQgICAgICAgICBfX3luZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwoKCgoK IApleHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0 ZXJuICAgZmxvYXQgICAgICAgICBfX2VyZmYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVy biAgIGZsb2F0ICAgICAgICAgIGVyZmNmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAg ZmxvYXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBm bG9hdCAgICAgICAgICBsZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxv YXQgICAgICAgICBfX2xnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZs b2F0ICAgICAgICAgIHRnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9h dCAgICAgICAgIF9fdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsKCgoKIApleHRlcm4g ICBmbG9hdCAgICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBm bG9hdCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwoKCgogCgoKZXh0 ZXJuICAgZmxvYXQgICAgICAgICAgbGdhbW1hZl9yICAgICAgICAgICAgKGZsb2F0ICAsIGludCAq X19zaWduZ2FtcCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZl9yICAgICAg ICAgICAgKGZsb2F0ICAsIGludCAqX19zaWduZ2FtcCkgICAgICA7CgoKCgogCgpleHRlcm4gICBm bG9hdCAgICAgICAgICByaW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBm bG9hdCAgICAgICAgIF9fcmludGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRl cm4gICBmbG9hdCAgICAgICAgICBuZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9h dCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg ZmxvYXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAg X195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCgogCmV4dGVy biAgIGZsb2F0ICAgICAgICAgIHJlbWFpbmRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0 ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19yZW1haW5kZXJmICAgICAgICAg KGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAg ICAgICBzY2FsYmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX19uKSAgICA7IGV4dGVy biAgIGZsb2F0ICAgICAgICAgX19zY2FsYmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAg X19uKSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNjYWxibmYgICAgICAgICAo ZmxvYXQgICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxi bmYgICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX24pICAgICAgOwoKIApleHRlcm4gICBpbnQg ICAgICAgaWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICA7IGV4dGVybiAgIGludCAgICAgICBf X2lsb2diZiAgICAgICAoZmxvYXQgICBfX3gpICAgIDsKCgojIDMzNiAiL3Vzci9pbmNsdWRlL2Jp dHMvbWF0aGNhbGxzLmgiIDMKCiMgODIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgoKIyAx MDMgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoKCgoKCgoKIApleHRlcm4gaW50IHNpZ25nYW07 CgoKCiAKIyAyMzIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMKCgoKIAp0eXBlZGVmIGVudW0Kewog IF9JRUVFXyA9IC0xLAkgCiAgX1NWSURfLAkgCiAgX1hPUEVOXywJIAogIF9QT1NJWF8sCiAgX0lT T0NfCSAKfSBfTElCX1ZFUlNJT05fVFlQRTsKCiAKCgpleHRlcm4gX0xJQl9WRVJTSU9OX1RZUEUg X0xJQl9WRVJTSU9OOwoKCgoKIAoKCgoKCnN0cnVjdCBfX2V4Y2VwdGlvbgoKCgogIHsKICAgIGlu dCB0eXBlOwogICAgY2hhciAqbmFtZTsKICAgIGRvdWJsZSBhcmcxOwogICAgZG91YmxlIGFyZzI7 CiAgICBkb3VibGUgcmV0dmFsOwogIH07CgoKZXh0ZXJuIGludCBtYXRoZXJyICAoc3RydWN0IF9f ZXhjZXB0aW9uICpfX2V4YykgIHRocm93ICgpICA7CgoKCgoKCiAKCgoKCgoKCiAKCiMgMSAiL3Vz ci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvZmxv YXQuaCIgMSAzCiAKCgogCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAK CgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgogICAgCgoKICAgIAoKCiAgICAK CgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAgICAK CgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCgojIDI4 OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKIyAyOTkgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDMKCgoKIAoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMzM2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz CgoKCiAKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgiIDEgMwog CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0 aGlubGluZS5oIiAzCgoKCgoKCgoKCgoKX19pbmxpbmUgICAgZmxvYXQgCSBfX2NvcHlzaWduZiAg KCAgZmxvYXQgIF9feCwgICBmbG9hdCAgX195KQl7CSAgZmxvYXQgIF9fejsJX19hc20gKCJjcHlz ICUxLCAlMiwgJTAiIDogIj1mIiAoX196KSA6ICJmIiAoX195KSwgImYiIChfX3gpKTsJcmV0dXJu IF9fejsJfSAKX19pbmxpbmUgICAgZmxvYXQgCSBjb3B5c2lnbmYgICggIGZsb2F0ICBfX3gsICAg ZmxvYXQgIF9feSkJewkgIGZsb2F0ICBfX3o7CV9fYXNtICgiY3B5cyAlMSwgJTIsICUwIiA6ICI9 ZiIgKF9feikgOiAiZiIgKF9feSksICJmIiAoX194KSk7CXJldHVybiBfX3o7CX0gCl9faW5saW5l ICAgIGRvdWJsZSAJIF9fY29weXNpZ24gICggIGRvdWJsZSAgX194LCAgIGRvdWJsZSAgX195KQl7 CSAgZG91YmxlICBfX3o7CV9fYXNtICgiY3B5cyAlMSwgJTIsICUwIiA6ICI9ZiIgKF9feikgOiAi ZiIgKF9feSksICJmIiAoX194KSk7CXJldHVybiBfX3o7CX0gCl9faW5saW5lICAgIGRvdWJsZSAJ IGNvcHlzaWduICAoICBkb3VibGUgIF9feCwgICBkb3VibGUgIF9feSkJewkgIGRvdWJsZSAgX196 OwlfX2FzbSAoImNweXMgJTEsICUyLCAlMCIgOiAiPWYiIChfX3opIDogImYiIChfX3kpLCAiZiIg KF9feCkpOwlyZXR1cm4gX196Owl9IAoKCgoKCl9faW5saW5lICBmbG9hdCBfX2ZhYnNmIChmbG9h dCBfX3gpIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzZiAoX194KTsgfQpfX2lubGluZSAgZmxvYXQg ZmFic2YgKGZsb2F0IF9feCkgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmIChfX3gpOyB9Cl9faW5s aW5lICBkb3VibGUgX19mYWJzIChkb3VibGUgX194KSB7IHJldHVybiBfX2J1aWx0aW5fZmFicyAo X194KTsgfQpfX2lubGluZSAgZG91YmxlIGZhYnMgKGRvdWJsZSBfX3gpIHsgcmV0dXJuIF9fYnVp bHRpbl9mYWJzIChfX3gpOyB9CiMgOTkgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhpbmxpbmUuaCIg MwoKCgogCgoKCl9faW5saW5lICBmbG9hdApfX2Zsb29yZiAoZmxvYXQgX194KQp7CiAgIAogIGlm IChfX3ggIT0gMCAmJiBmYWJzZiAoX194KSA8IDE2Nzc3MjE2LjBmKSAgIAogICAgewogICAgICAg CgoKCgogICAgICBmbG9hdCBfX3RtcDEsIF9fdG1wMjsKCiAgICAgIF9fYXNtICgiY3Z0c3QvcyAl MywlMlxuXHQiCgoKCgkgICAgICJjdnR0cS9zdm0gJTIsJTFcblx0IgoKCSAgICAgImN2dHF0L20g JTEsJTBcblx0IgoJICAgICA6ICI9ZiIoX194KSwgIj0mZiIoX190bXAxKSwgIj0mZiIoX190bXAy KQoJICAgICA6ICJmIihfX3gpKTsKICAgIH0KICByZXR1cm4gX194Owp9CgpfX2lubGluZSAgZG91 YmxlCl9fZmxvb3IgKGRvdWJsZSBfX3gpCnsKICBpZiAoX194ICE9IDAgJiYgZmFicyAoX194KSA8 IDkwMDcxOTkyNTQ3NDA5OTIuMCkgICAKICAgIHsKICAgICAgZG91YmxlIF9fdG1wMTsKICAgICAg X19hc20gKAoKCgoJICAgICAiY3Z0dHEvc3ZtICUyLCUxXG5cdCIKCgkgICAgICJjdnRxdC9tICUx LCUwXG5cdCIKCSAgICAgOiAiPWYiKF9feCksICI9JmYiKF9fdG1wMSkKCSAgICAgOiAiZiIoX194 KSk7CiAgICB9CiAgcmV0dXJuIF9feDsKfQoKX19pbmxpbmUgIGZsb2F0IGZsb29yZiAoZmxvYXQg X194KSB7IHJldHVybiBfX2Zsb29yZihfX3gpOyB9Cl9faW5saW5lICBkb3VibGUgZmxvb3IgKGRv dWJsZSBfX3gpIHsgcmV0dXJuIF9fZmxvb3IoX194KTsgfQoKCl9faW5saW5lICBmbG9hdCBfX2Zk aW1mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkKewogIHJldHVybiBfX3ggPCBfX3kgPyAwLjBmIDog X194IC0gX195Owp9CgpfX2lubGluZSAgZmxvYXQgZmRpbWYgKGZsb2F0IF9feCwgZmxvYXQgX195 KQp7CiAgcmV0dXJuIF9feCA8IF9feSA/IDAuMGYgOiBfX3ggLSBfX3k7Cn0KCl9faW5saW5lICBk b3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3VibGUgX195KQp7CiAgcmV0dXJuIF9feCA8IF9f eSA/IDAuMCA6IF9feCAtIF9feTsKfQoKX19pbmxpbmUgIGRvdWJsZSBmZGltIChkb3VibGUgX194 LCBkb3VibGUgX195KQp7CiAgcmV0dXJuIF9feCA8IF9feSA/IDAuMCA6IF9feCAtIF9feTsKfQoj IDM0OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgojIDQwNyAiL3Vzci9pbmNsdWRlL21h dGguaCIgMwoKCn0gCgoKCiMgMjQgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAyCgoj IDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK CgogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIu OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2Mt bGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoK CgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51 eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK CgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQt bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyODMgIi91 c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0 ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxp bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoK CgoKCgoKCiMgMzMgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoK CgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwkJCSAKICAgIGludCByZW07CQkJ IAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgaW50IHF1b3Q7CQkg CiAgICBsb25nIGludCByZW07CQkgCiAgfSBsZGl2X3Q7CgoKCiMgNjUgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMwoKCgogCgoKCiAKCgoKCgogCgpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21i X2N1cl9tYXggICh2b2lkKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBkb3VibGUgYXRvZiAgKF9f Y29uc3QgY2hhciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IGF0b2kgIChfX2Nv bnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGxvbmcgaW50IGF0b2wgIChf X2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CgoKIApfX2V4dGVuc2lvbl9fIGV4dGVy biBsb25nIGxvbmcgaW50IGF0b2xsICAoX19jb25zdCBjaGFyICpfX25wdHIpICB0aHJvdyAoKSAg OwoKCiAKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwKCQkJ ICAgY2hhciAqKiAgIF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKZXh0ZXJuIGxv bmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLAoJCQkgICAgIGNoYXIgKiog ICBfX2VuZHB0ciwgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHVuc2lnbmVkIGxv bmcgaW50IHN0cnRvdWwgIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwKCQkJCSAgICAgICBjaGFy ICoqICAgX19lbmRwdHIsCgkJCQkgICAgICAgaW50IF9fYmFzZSkgIHRocm93ICgpICA7CgoKIApf X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAgKF9fY29uc3QgY2hhciAq ICAgX19ucHRyLAoJCQkJICBjaGFyICoqICAgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAo KSAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91 cSAgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLAoJCQkJCSAgICBjaGFyICoqICAgX19lbmRwdHIs CgkJCQkJICAgIGludCBfX2Jhc2UpICB0aHJvdyAoKSAgOwoKCgogCgogCl9fZXh0ZW5zaW9uX18K ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLAoJ CQkJICAgY2hhciAqKiAgIF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKIApfX2V4 dGVuc2lvbl9fCmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdWxsICAoX19jb25z dCBjaGFyICogICBfX25wdHIsCgkJCQkJICAgICBjaGFyICoqICAgX19lbmRwdHIsCgkJCQkJICAg ICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIyAxOTAgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMwoKCgogCgoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hh ciAqICAgX19ucHRyLAoJCQkJICAgICAgY2hhciAqKiAgIF9fZW5kcHRyLAoJCQkJICAgICAgaW50 IF9fZ3JvdXApICB0aHJvdyAoKSAgOwpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgIChf X2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKiAgIF9fZW5kcHRyLCBpbnQg X19ncm91cCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVy bmFsICAoX19jb25zdCBjaGFyICoKCQkJCQkJICBfX25wdHIsCgkJCQkJCWNoYXIgKiogICBfX2Vu ZHB0ciwKCQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGxvbmcgaW50IF9f c3RydG9sX2ludGVybmFsICAoX19jb25zdCBjaGFyICogICBfX25wdHIsCgkJCQkJY2hhciAqKiAg IF9fZW5kcHRyLAoJCQkJCWludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoK ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9pbnRlcm5hbCAgKF9fY29uc3QgY2hh ciAqCgkJCQkJCSAgICBfX25wdHIsCgkJCQkJCSAgY2hhciAqKiAgIF9fZW5kcHRyLAoJCQkJCQkg IGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKCl9fZXh0ZW5zaW9uX18K ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xsX2ludGVybmFsICAoX19jb25zdCBjaGFyICog ICBfX25wdHIsCgkJCQkJICAgICAgY2hhciAqKiAgIF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBf X2Jhc2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKX19leHRlbnNpb25fXwpleHRlcm4g dW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2ludGVybmFsICAoX19jb25zdCBjaGFy ICoKCQkJCQkJCSAgX19ucHRyLAoJCQkJCQkJY2hhciAqKgoJCQkJCQkJICBfX2VuZHB0ciwKCQkJ CQkJCWludCBfX2Jhc2UsCgkJCQkJCQlpbnQgX19ncm91cCkgIHRocm93ICgpICA7CgoKCgoKCiAK CmV4dGVybiBfX2lubGluZSBkb3VibGUKc3RydG9kIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwg Y2hhciAqKiAgIF9fZW5kcHRyKSB0aHJvdyAoKSAKewogIHJldHVybiBfX3N0cnRvZF9pbnRlcm5h bCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0ZXJuIF9faW5saW5lIGxvbmcgaW50CnN0cnRv bCAoX19jb25zdCBjaGFyICogICBfX25wdHIsIGNoYXIgKiogICBfX2VuZHB0ciwKCWludCBfX2Jh c2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5k cHRyLCBfX2Jhc2UsIDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0 b3VsIChfX2NvbnN0IGNoYXIgKiAgIF9fbnB0ciwgY2hhciAqKiAgIF9fZW5kcHRyLAoJIGludCBf X2Jhc2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG91bF9pbnRlcm5hbCAoX19ucHRyLCBf X2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKIyAyNzEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoK CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvcSAoX19j b25zdCBjaGFyICogICBfX25wdHIsIGNoYXIgKiogICBfX2VuZHB0ciwKCWludCBfX2Jhc2UpIHRo cm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwg X19iYXNlLCAwKTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25n IGxvbmcgaW50CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLCBjaGFyICoqICAgX19l bmRwdHIsCgkgaW50IF9fYmFzZSkgdGhyb3cgKCkgCnsKICByZXR1cm4gX19zdHJ0b3VsbF9pbnRl cm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAwKTsKfQoKCgpfX2V4dGVuc2lvbl9fIGV4 dGVybiBfX2lubGluZSBsb25nIGxvbmcgaW50CnN0cnRvbGwgKF9fY29uc3QgY2hhciAqICAgX19u cHRyLCBjaGFyICoqICAgX19lbmRwdHIsCgkgaW50IF9fYmFzZSkgdGhyb3cgKCkgCnsKICByZXR1 cm4gX19zdHJ0b2xsX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9Cl9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQKc3RydG91 bGwgKF9fY29uc3QgY2hhciAqICAgX19ucHRyLCBjaGFyICoqICAgX19lbmRwdHIsCgkgIGludCBf X2Jhc2UpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9fc3RydG91bGxfaW50ZXJuYWwgKF9fbnB0ciwg X19lbmRwdHIsIF9fYmFzZSwgMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgZG91YmxlCmF0b2YgKF9f Y29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKSAKewogIHJldHVybiBzdHJ0b2QgKF9fbnB0ciwg KGNoYXIgKiopIF9fbnVsbCApOwp9CmV4dGVybiBfX2lubGluZSBpbnQKYXRvaSAoX19jb25zdCBj aGFyICpfX25wdHIpIHRocm93ICgpIAp7CiAgcmV0dXJuIChpbnQpIHN0cnRvbCAoX19ucHRyLCAo Y2hhciAqKikgX19udWxsICwgMTApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludAphdG9sIChf X2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgCnsKICByZXR1cm4gc3RydG9sIChfX25wdHIs IChjaGFyICoqKSBfX251bGwgLCAxMCk7Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGlu ZSBsb25nIGxvbmcgaW50CmF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgCnsK ICByZXR1cm4gc3RydG9sbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsICwgMTApOwp9CgoKCgoK IAoKCmV4dGVybiBjaGFyICpsNjRhICAobG9uZyBpbnQgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0 ZXJuIGxvbmcgaW50IGE2NGwgIChfX2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyAx ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK CgoKCmV4dGVybiAiQyIgeyAKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiAK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1y ZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoK IyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxp Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgog CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2dj Yy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAz CgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz LTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xp Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu aCIgMwoKCiMgMjgzICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIu OTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGli L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDI5ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAy IDMKCgogCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBz aG9ydCBpbnQgX191X3Nob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVm IHVuc2lnbmVkIGxvbmcgaW50IF9fdV9sb25nOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f dV9xdWFkX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX19xdWFkX3Q7CnR5cGVkZWYgc2lnbmVkIGNoYXIg X19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVk IHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2 X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9f dWludDMyX3Q7CnR5cGVkZWYgc2lnbmVkIGxvbmcgaW50IF9faW50NjRfdDsKdHlwZWRlZiB1bnNp Z25lZCBsb25nIGludCBfX3VpbnQ2NF90Owp0eXBlZGVmIF9fcXVhZF90ICpfX3FhZGRyX3Q7Cgp0 eXBlZGVmIF9fdWludDY0X3QgX19kZXZfdDsJCSAKdHlwZWRlZiBfX3VpbnQzMl90IF9fdWlkX3Q7 CQkgCnR5cGVkZWYgX191aW50MzJfdCBfX2dpZF90OwkJIAp0eXBlZGVmIF9fdWludDMyX3QgX19p bm9fdDsJCSAKdHlwZWRlZiBfX3VpbnQ2NF90IF9faW5vNjRfdDsJCSAKdHlwZWRlZiBfX3VpbnQz Ml90IF9fbW9kZV90OwkJIAp0eXBlZGVmIF9fdWludDMyX3QgX19ubGlua190OyAJCSAKdHlwZWRl ZiBfX2ludDY0X3QgIF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19pbnQ2NF90ICBfX29mZjY0X3Q7CQkg CnR5cGVkZWYgX19pbnQ2NF90ICBfX2xvZmZfdDsJCSAKdHlwZWRlZiBfX2ludDMyX3QgIF9fcGlk X3Q7CQkgCnR5cGVkZWYgX19pbnQ2NF90ICBfX3NzaXplX3Q7CQkgCnR5cGVkZWYgX19pbnQ2NF90 ICBfX3JsaW1fdDsJCSAKdHlwZWRlZiBfX2ludDY0X3QgIF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYg X191aW50MzJfdCAgX19ibGtjbnRfdDsJCSAKdHlwZWRlZiBfX3VpbnQ2NF90ICBfX2Jsa2NudDY0 X3Q7CSAKdHlwZWRlZiBfX2ludDMyX3QgX19mc2Jsa2NudF90OwkJIAp0eXBlZGVmIF9faW50NjRf dCBfX2ZzYmxrY250NjRfdDsJIAp0eXBlZGVmIF9fdWludDMyX3QgX19mc2ZpbGNudF90OwkgCnR5 cGVkZWYgX191aW50NjRfdCBfX2ZzZmlsY250NjRfdDsJIAp0eXBlZGVmIF9fdWludDMyX3QgX19p ZF90OwkJIAoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRf dDsJCQkJIAoKIAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2Fk ZHJfdDsJCSAKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3 YmxrX3Q7CQkgCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190Owp0eXBlZGVmIGludCBfX2tleV90 OwkJCSAKCiAKdHlwZWRlZiBpbnQgX19pcGNfcGlkX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9u ZyBpbnQgX19mZF9tYXNrOwoKIAoKCgoKIAoKCiAKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKICB7CiAg ICAgCgoKCgoKICAgIF9fZmRfbWFzayBfX2Zkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9f ZmRfbWFzaykpIF07CgoKICB9IF9fZmRfc2V0OwoKIAp0eXBlZGVmIGludCBfX3Rfc2NhbGFyX3Q7 CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdF91c2NhbGFyX3Q7CgogCnR5cGVkZWYgbG9uZyBpbnQg X19pbnRwdHJfdDsKCgogCgoKCgoKIyAzMCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK CgoKdHlwZWRlZiBfX3VfY2hhciB1X2NoYXI7CnR5cGVkZWYgX191X3Nob3J0IHVfc2hvcnQ7CnR5 cGVkZWYgX191X2ludCB1X2ludDsKdHlwZWRlZiBfX3VfbG9uZyB1X2xvbmc7CnR5cGVkZWYgX19x dWFkX3QgcXVhZF90Owp0eXBlZGVmIF9fdV9xdWFkX3QgdV9xdWFkX3Q7CnR5cGVkZWYgX19mc2lk X3QgZnNpZF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgp0eXBlZGVmIF9faW5vX3Qg aW5vX3Q7CgoKCgoKCgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CgoKCgp0eXBlZGVmIF9fZ2lk X3QgZ2lkX3Q7CgoKCgp0eXBlZGVmIF9fbW9kZV90IG1vZGVfdDsKCgoKCnR5cGVkZWYgX19ubGlu a190IG5saW5rX3Q7CgoKCgp0eXBlZGVmIF9fdWlkX3QgdWlkX3Q7CgoKCgoKdHlwZWRlZiBfX29m Zl90IG9mZl90OwoKCgoKCgoKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKCgoKCnR5cGVkZWYg X19pZF90IGlkX3Q7CgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CgoKCgp0eXBlZGVmIF9f ZGFkZHJfdCBkYWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9f a2V5X3Qga2V5X3Q7CgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoK CgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoK CgojIDYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoKIAp0eXBlZGVmIF9fdGltZV90 IHRpbWVfdDsKCgoKCgojIDg5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDI3OSAiL3Vz ci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDEyMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy IDMKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEu NjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGli L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgog CgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9l Z2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoK CgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3Iv bGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRl Zi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0 LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGli L2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5o IiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2Vn Y3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoK CiMgMTI0ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgogCgojIDE1OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAzCgoKIAoKCgoKCgoKdHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21v ZGVfXyAoICBfX1FJX18gKSkpIDsKdHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgo X19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVf XyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoICBfX0RJX18gKSkpIDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1 X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYg dW5zaWduZWQgaW50IHVfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9f ICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19t b2RlX18gKCAgX19TSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0 dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkpKSA7Cgp0eXBlZGVmIGludCByZWdpc3Rl cl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18pKSk7CgoKIAoKCgoKCgogCiMg MSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCgoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEgMwogCgoKCgoKCiMg MzUgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzCgoKIAoKCgoKCgoKCgoKCgoKIyAxOTAgIi91 c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2Vs ZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKCiAKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK CgoKCgojIDMxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgogCiMgMSAiL3Vzci9p bmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYg aW50IF9fc2lnX2F0b21pY190OwoKIAoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgdW5zaWduZWQg bG9uZyBpbnQgX192YWxbKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkg XTsKICB9IF9fc2lnc2V0X3Q7CgoKCgogCgoKCgoKIyAxMjUgIi91c3IvaW5jbHVkZS9iaXRzL3Np Z3NldC5oIiAzCgojIDM0ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgogCgojIDEg Ii91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoK CgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3Rp bWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCgoKIAoKc3RydWN0 IHRpbWVzcGVjCiAgewogICAgbG9uZyBpbnQgdHZfc2VjOwkJIAogICAgbG9uZyBpbnQgdHZfbnNl YzsJCSAKICB9OwoKCgoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgMzggIi91 c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKc3RydWN0 IHRpbWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0eXBlZGVmIF9fZmRfc2V0 IGZkX3NldDsKCiAKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgpleHRlcm4gaW50IF9fc2VsZWN0ICAo aW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJICBfX2ZkX3NldCAqX193cml0ZWZk cywgX19mZF9zZXQgKl9fZXhjZXB0ZmRzLAoJCQkgIHN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQp ICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpf X3JlYWRmZHMsCgkJCV9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMs CgkJCXN0cnVjdCB0aW1ldmFsICpfX3RpbWVvdXQpICB0aHJvdyAoKSAgOwoKIyA5MSAiL3Vzci9p bmNsdWRlL3N5cy9zZWxlY3QuaCIgMwoKCn0gCgoKIyAxOTMgIi91c3IvaW5jbHVkZS9zeXMvdHlw ZXMuaCIgMiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDEgMwogCgoK CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxOTYgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu aCIgMiAzCgoKCgogCgp0eXBlZGVmIF9fYmxrY250X3QgYmxrY250X3Q7CSAgCnR5cGVkZWYgX19m c2Jsa2NudF90IGZzYmxrY250X3Q7ICAKdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsg IAoKCgoKCgoKCgoKCgp9IAoKCiMgMzM5ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCiAK CgoKIApleHRlcm4gaW50MzJfdCByYW5kb20gICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu IHZvaWQgc3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKIAoKCgpl eHRlcm4gdm9pZCAqICBpbml0c3RhdGUgICh1bnNpZ25lZCBpbnQgX19zZWVkLCB2b2lkICogIF9f c3RhdGVidWYsCgkJCSAgICAgICBzaXplX3QgX19zdGF0ZWxlbikgIHRocm93ICgpICA7CgogCgpl eHRlcm4gdm9pZCAqICBzZXRzdGF0ZSAgKHZvaWQgKiAgX19zdGF0ZWJ1ZikgIHRocm93ICgpICA7 CgoKCiAKCgoKc3RydWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAg IGludDMyX3QgKnJwdHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5 cGU7CQkgCiAgICBpbnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQz Ml90ICplbmRfcHRyOwkJIAogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRv bV9kYXRhICogICBfX2J1ZiwKCQkJICBpbnQzMl90ICogICBfX3Jlc3VsdCkgIHRocm93ICgpICA7 CgpleHRlcm4gaW50IHNyYW5kb21fciAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHN0cnVjdCByYW5k b21fZGF0YSAqX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVu c2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9pZCAqICAgIF9fc3RhdGVidWYsCgkJCSAgICAg c2l6ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICogICBfX2J1Zikg IHRocm93ICgpICA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgICh2b2lkICogICAgX19zdGF0ZWJ1 ZiwKCQkJICAgIHN0cnVjdCByYW5kb21fZGF0YSAqICAgX19idWYpICB0aHJvdyAoKSAgOwoKCgoK IApleHRlcm4gaW50IHJhbmQgICh2b2lkKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gdm9pZCBzcmFu ZCAgKHVuc2lnbmVkIGludCBfX3NlZWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCByYW5k X3IgICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgIHRocm93ICgpICA7CgoKCgogCgogCmV4dGVybiBk b3VibGUgZHJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gZG91YmxlIGVyYW5kNDgg ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiBs b25nIGludCBscmFuZDQ4ICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBsb25nIGludCBucmFu ZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRl cm4gbG9uZyBpbnQgbXJhbmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQg anJhbmQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAK ZXh0ZXJuIHZvaWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgIHRocm93ICgpICA7CmV4 dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQgKnNlZWQ0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3Nl ZWQxNnZbM10pICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCBsY29uZzQ4ICAodW5zaWduZWQgc2hv cnQgaW50IF9fcGFyYW1bN10pICB0aHJvdyAoKSAgOwoKIApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAg ewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBh WzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJIAogICAgdW5zaWduZWQgc2hvcnQgaW50 IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAgfTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0 OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqICAgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqICAg X19yZXN1bHQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGVyYW5kNDhfciAgKHVuc2lnbmVkIHNo b3J0IGludCBfX3hzdWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICogICBfX2J1ZmZl ciwKCQkJICAgZG91YmxlICogICBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQg bHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqICAgX19idWZmZXIsCgkJCSAgIGxvbmcg aW50ICogICBfX3Jlc3VsdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5z aWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKiAg IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAqICAgX19yZXN1bHQpICB0aHJvdyAoKSAgOwoKIApl eHRlcm4gaW50IG1yYW5kNDhfciAgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKiAgIF9fYnVmZmVyLAoJ CQkgICBsb25nIGludCAqICAgX19yZXN1bHQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGpyYW5k NDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0 OF9kYXRhICogICBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKiAgIF9fcmVzdWx0KSAgdGhyb3cg KCkgIDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBfX3NlZWR2YWwsIHN0cnVj dCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2VlZDQ4 X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLAoJCQkgIHN0cnVjdCBkcmFuZDQ4 X2RhdGEgKl9fYnVmZmVyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgbGNvbmc0OF9yICAodW5z aWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9f YnVmZmVyKSAgdGhyb3cgKCkgIDsKCgoKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9jICAoc2l6 ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90 IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gdm9pZCAq ICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAK ZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQgKiAgX19wdHIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJu IHZvaWQgY2ZyZWUgICh2b2lkICogIF9fcHRyKSAgdGhyb3cgKCkgIDsKCgoKIyAxICIvdXNyL2lu Y2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xp Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu aCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51 eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYx ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVk ZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoj IDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu Y2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYWxwaGEt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoK IAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42 Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVk aGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcg Ii91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRl L3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjUgIi91c3IvaW5jbHVk ZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoKCiAKZXh0ZXJuIHZvaWQgKiAgYWxs b2NhICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CgoKCgoKfSAKCgojIDQ5MiAiL3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKCiAKZXh0ZXJuIHZvaWQgKiAgdmFsbG9jICAoc2l6ZV90 IF9fc2l6ZSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgICh2b2lkKSAgdGhy b3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKIApleHRlcm4gaW50IGF0 ZXhpdCAgKHZvaWQgKCpfX2Z1bmMpICh2b2lkKSkgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIGlu dCBfX29uX2V4aXQgICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICogIF9fYXJn KSwKCQkJICAgdm9pZCAqICBfX2FyZykgIHRocm93ICgpICA7CmV4dGVybiBpbnQgb25fZXhpdCAg KHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgdm9pZCAq ICBfX2FyZykgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiB2b2lkIGV4aXQgIChpbnQgX19zdGF0 dXMpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgoKCgoKCgog CmV4dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7 CgogCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUp ICB0aHJvdyAoKSAgOwoKCiAKIAoKZXh0ZXJuIGludCBwdXRlbnYgIChfX2NvbnN0IGNoYXIgKl9f c3RyaW5nKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgIChfX2NvbnN0IGNo YXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLAoJCQlpbnQgX19yZXBsYWNlKSAgdGhy b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg IHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFyZW52ICAodm9pZCkgIHRocm93ICgp ICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAgdGhy b3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUpICB0 aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1h bmQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAg KF9fY29uc3QgY2hhciAqICAgX19uYW1lLAoJCQkgICAgY2hhciAqICAgX19yZXNvbHZlZCkgIHRo cm93ICgpICA7CgoKCiAKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpICAoX19jb25zdCB2 b2lkICogLCBfX2NvbnN0IHZvaWQgKiApICA7CgoKCgoKCiAKCmV4dGVybiB2b2lkICogIGJzZWFy Y2ggIChfX2NvbnN0IHZvaWQgKiAgX19rZXksIF9fY29uc3Qgdm9pZCAqICBfX2Jhc2UsCgkJCSAg ICAgICBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgICAgIF9fY29tcGFyX2Zu X3QgX19jb21wYXIpICA7CgogCgpleHRlcm4gdm9pZCBxc29ydCAgKHZvaWQgKiAgX19iYXNlLCBz aXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKCQkJICBfX2NvbXBhcl9mbl90IF9fY29tcGFy KSAgOwoKCiAKZXh0ZXJuIGludCBhYnMgIChpbnQgX194KSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7CmV4dGVybiBsb25nIGludCBsYWJzICAobG9uZyBpbnQgX194KSAg dGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCiAKCiAKZXh0ZXJu IGRpdl90IGRpdiAgKGludCBfX251bWVyLCBpbnQgX19kZW5vbSkgIHRocm93ICgpICAgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgIChsb25nIGludCBfX251 bWVyLCBsb25nIGludCBfX2Rlbm9tKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgoKCgoKCgogCgoKIAoKCmV4dGVybiBjaGFyICplY3Z0ICAoZG91YmxlIF9f dmFsdWUsIGludCBfX25kaWdpdCwgaW50ICogICBfX2RlY3B0LAoJCQlpbnQgKiAgIF9fc2lnbikg IHRocm93ICgpICA7CgogCgoKZXh0ZXJuIGNoYXIgKmZjdnQgIChkb3VibGUgX192YWx1ZSwgaW50 IF9fbmRpZ2l0LCBpbnQgKiAgIF9fZGVjcHQsCgkJCWludCAqICAgX19zaWduKSAgdGhyb3cgKCkg IDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs IGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnFlY3Z0ICAobG9uZyBk b3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqICAgX19kZWNwdCwgaW50ICog ICBfX3NpZ24pICB0aHJvdyAoKSAgOwpleHRlcm4gY2hhciAqcWZjdnQgIChsb25nIGRvdWJsZSAg X192YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCQkgaW50ICogICBfX2RlY3B0LCBpbnQgKiAgIF9fc2ln bikgIHRocm93ICgpICA7CmV4dGVybiBjaGFyICpxZ2N2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVl LCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGlu dCBlY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKiAgIF9fZGVjcHQs CgkJCWludCAqICAgX19zaWduLCBjaGFyICogICBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVuKSAgdGhy b3cgKCkgIDsKZXh0ZXJuIGludCBmY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0 LCBpbnQgKiAgIF9fZGVjcHQsCgkJCWludCAqICAgX19zaWduLCBjaGFyICogICBfX2J1ZiwKCQkJ c2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgcWVjdnRfciAgKGxvbmcgZG91 YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKiAgIF9fZGVjcHQsIGludCAqICAg X19zaWduLAoJCQkgY2hhciAqICAgX19idWYsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CmV4 dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJ CSBpbnQgKiAgIF9fZGVjcHQsIGludCAqICAgX19zaWduLAoJCQkgY2hhciAqICAgX19idWYsIHNp emVfdCBfX2xlbikgIHRocm93ICgpICA7CgoKCgogCgpleHRlcm4gaW50IG1ibGVuICAoX19jb25z dCBjaGFyICpfX3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwogCgpleHRlcm4gaW50IG1idG93 YyAgKHdjaGFyX3QgKiAgIF9fcHdjLAoJCQlfX2NvbnN0IGNoYXIgKiAgIF9fcywgc2l6ZV90IF9f bikgIHRocm93ICgpICA7CiAKCmV4dGVybiBpbnQgd2N0b21iICAoY2hhciAqX19zLCB3Y2hhcl90 IF9fd2NoYXIpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAgKHdjaGFy X3QgKiAgICBfX3B3Y3MsCgkJCSAgICAgX19jb25zdCBjaGFyICogICBfX3MsIHNpemVfdCBfX24p ICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qgd2NzdG9tYnMgIChjaGFyICogICBfX3MsCgkJ CSAgICAgX19jb25zdCB3Y2hhcl90ICogICBfX3B3Y3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAg OwoKCgogCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkg IHRocm93ICgpICA7CgoKCiMgNzMyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKIyA3NTYg Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCiMgNzY2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMKCgoKCgp9IAoKCiMgMjUgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0eXBlcy5oIiAyCgojIDEg Ii91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK ZXh0ZXJuICJDIiB7IAoKIAoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vz ci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3Rk ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1y ZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoK CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91c3IvbGliL2djYy1saWIvYWxw aGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoK CiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCiMgMjcxICIvdXNyL2xpYi9nY2MtbGli L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiMg MjgzICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5j bHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJl ZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK CgoKCgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVy biB2b2lkICogIG1lbWNweSAgKHZvaWQgKiAgICBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IHZvaWQg KiAgICBfX3NyYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CiAKCmV4dGVybiB2b2lkICogIG1l bW1vdmUgICh2b2lkICogIF9fZGVzdCwgX19jb25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIHNp emVfdCBfX24pICB0aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gdm9pZCAqICBtZW1jY3B5ICAodm9p ZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBpbnQgX19jLCBzaXpl X3QgX19uKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCAqICBtZW1zZXQgICh2b2lkICog IF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgbWVt Y21wICAoX19jb25zdCB2b2lkICogIF9fczEsIF9fY29uc3Qgdm9pZCAqICBfX3MyLAoJCQlzaXpl X3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtY2hyICAoX19jb25zdCB2 b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKCgoKCgoKIApl eHRlcm4gY2hhciAqc3RyY3B5ICAoY2hhciAqICAgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAq ICAgX19zcmMpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJuY3B5ICAoY2hhciAqICAg X19kZXN0LAoJCQkgICBfX2NvbnN0IGNoYXIgKiAgIF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cg KCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNhdCAgKGNoYXIgKiAgIF9fZGVzdCwKCQkJICBfX2Nv bnN0IGNoYXIgKiAgIF9fc3JjKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gY2hhciAqc3RybmNhdCAg KGNoYXIgKiAgIF9fZGVzdCwKCQkJICAgX19jb25zdCBjaGFyICogICBfX3NyYywgc2l6ZV90IF9f bikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3RyY21wICAoX19jb25zdCBjaGFyICpfX3Mx LCBfX2NvbnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc3RybmNtcCAg KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKSAgdGhy b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJjb2xsICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv bnN0IGNoYXIgKl9fczIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qgc3RyeGZybSAgKGNo YXIgKiAgIF9fZGVzdCwKCQkJICAgIF9fY29uc3QgY2hhciAqICAgX19zcmMsIHNpemVfdCBfX24p ICB0aHJvdyAoKSAgOwoKIyAxMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVy biBjaGFyICpfX3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKZXh0ZXJu IGNoYXIgKnN0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgogCgoKCgoK CiMgMTQzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVybiBjaGFyICpzdHJjaHIg IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIg KnN0cnJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CgoKCgoK CgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBj aGFyICpfX3JlamVjdCkgIHRocm93ICgpICA7CiAKCmV4dGVybiBzaXplX3Qgc3Ryc3BuICAoX19j b25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0aHJvdyAoKSAgOwogCmV4 dGVybiBjaGFyICpzdHJwYnJrICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19h Y2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIg Kl9faGF5c3RhY2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICB0aHJvdyAoKSAgOwoKCgoKCgoK CgogCmV4dGVybiBjaGFyICpzdHJ0b2sgIChjaGFyICogICBfX3MsCgkJCSAgX19jb25zdCBjaGFy ICogICBfX2RlbGltKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAo Y2hhciAqICAgX19zLAoJCQkgICAgICBfX2NvbnN0IGNoYXIgKiAgIF9fZGVsaW0sCgkJCSAgICAg IGNoYXIgKiogICBfX3NhdmVfcHRyKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBjaGFyICpzdHJ0b2tf ciAgKGNoYXIgKiAgIF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqICAgX19kZWxpbSwKCQkJICAg IGNoYXIgKiogICBfX3NhdmVfcHRyKSAgdGhyb3cgKCkgIDsKCgojIDIwMyAiL3Vzci9pbmNsdWRl L3N0cmluZy5oIiAzCgoKCiAKZXh0ZXJuIHNpemVfdCBzdHJsZW4gIChfX2NvbnN0IGNoYXIgKl9f cykgIHRocm93ICgpICA7CgoKCgoKCgoKIApleHRlcm4gY2hhciAqc3RyZXJyb3IgIChpbnQgX19l cnJudW0pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc3RyZXJyb3JfciAgKGludCBf X2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgIHRocm93ICgpICA7CmV4dGVy biBjaGFyICpzdHJlcnJvcl9yICAoaW50IF9fZXJybnVtLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9f YnVmbGVuKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBf X3MsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgYmNvcHkgIChfX2Nv bnN0IHZvaWQgKiAgX19zcmMsIHZvaWQgKiAgX19kZXN0LCBzaXplX3QgX19uKSAgdGhyb3cgKCkg IDsKCiAKZXh0ZXJuIHZvaWQgYnplcm8gICh2b2lkICogIF9fcywgc2l6ZV90IF9fbikgIHRocm93 ICgpICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0 IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpp bmRleCAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu IGNoYXIgKnJpbmRleCAgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSAgdGhyb3cgKCkgIDsK CiAKCmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9f ICgoY29uc3QpKTsKZXh0ZXJuIGludCBmZnMgIChpbnQgX19pKSAgdGhyb3cgKCkgICBfX2F0dHJp YnV0ZV9fICgoY29uc3QpKTsKCiAKCgoKCgoKCgoKIApleHRlcm4gaW50IF9fc3RyY2FzZWNtcCAg KF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgdGhyb3cgKCkgIDsKZXh0 ZXJuIGludCBzdHJjYXNlY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9f czIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN0cm5jYXNlY21wICAoX19jb25zdCBjaGFy ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAgICAgc2l6ZV90IF9fbikgIHRocm93ICgp ICA7CgoKIyAyNzcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCgpleHRlcm4gY2hhciAq c3Ryc2VwICAoY2hhciAqKiAgIF9fc3RyaW5ncCwKCQkJICBfX2NvbnN0IGNoYXIgKiAgIF9fZGVs aW0pICB0aHJvdyAoKSAgOwoKCiMgMzE5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKCiMg MzQ3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKfSAKCgojIDI2ICIvc29mdHdhcmUvdGhh bGlhL2gvc3RkdHlwZXMuaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5ncy5oIiAxIDMKIAoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1s aW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIv dXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9z dGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhh LXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9h bHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgog CgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42 Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1s aWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoK IyAyODMgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoK CgoKCgoKCgoKCgoKCgoKCiMgMjQgIi91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDIgMwoKCmV4dGVy biAiQyIgeyAKCiAKZXh0ZXJuIGludCBiY21wICAoX19jb25zdCB2b2lkICogIF9fczEsIF9fY29u c3Qgdm9pZCAqICBfX3MyLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQg YmNvcHkgIChfX2NvbnN0IHZvaWQgKiAgX19zcmMsIHZvaWQgKiAgX19kZXN0LCBzaXplX3QgX19u KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgYnplcm8gICh2b2lkICogIF9fcywgc2l6ZV90 IF9fbikgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGZmcyAgKGludCBfX2kpICB0aHJvdyAo KSAgOwoKIApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykg IHRocm93ICgpICA7CgogCmV4dGVybiBjaGFyICpyaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywg aW50IF9fYykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3Qg Y2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGlu dCBzdHJuY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJ CQkgICAgIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKfSAKCgojIDI3ICIvc29mdHdhcmUvdGhh bGlhL2gvc3RkdHlwZXMuaCIgMgoKCgoKCgoKIAoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCgoKIyAxICIv dXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9z dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhh dC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAK CgojIDYxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYv aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgog CgogCgojIDEzMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkx LjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIv YWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoK IAoKCgoKIAoKIyAyNzEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIyAyODMgIi91c3IvbGliL2djYy1saWIvYWxw aGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKIAoK IyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p bmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMzMgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVk aGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhh dC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS92YS1hbHBoYS5oIiAxIDMKIAoKIAoKCgoKIAoK CgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICBjaGFyICpfX2Jhc2U7CQkJIAogIGludCBfX29m ZnNldDsJCQkgCn0gX19nbnVjX3ZhX2xpc3Q7CgoKCgogCgoKIyAxMjggIi91c3IvbGliL2djYy1s aWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3ZhLWFscGhhLmgiIDMK CiMgMzYgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9p bmNsdWRlL3N0ZGFyZy5oIiAyIDMKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhh dC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKCgoKCgojIDIwMiAi L3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUv c3RkYXJnLmgiIDMKCgoKCiMgMzggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMKCgoKCgoKCgoK IAp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBGSUxFOwoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl L2xpYmlvLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5j bHVkZS9fR19jb25maWcuaCIgMSAzCiAKCgoKCgogCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxp Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoK CgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0y LjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9s aWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVm LmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKIyAxMzEgIi91 c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0 ZGRlZi5oIiAzCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1s aW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2 OSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1 ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90OwoK CgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt Mi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMg MTQgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5 cGVkZWYgaW50IF9HX2ludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX0hJX18pKSk7 CnR5cGVkZWYgaW50IF9HX2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18p KSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQxNl90IF9fYXR0cmlidXRlX18gKChfX21v ZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50MzJfdCBfX2F0dHJp YnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKIAoKCgoKCgoKCgoKCgoKCiMgMzAgIi91c3IvaW5jbHVkZS9saWJpby5oIiAyIDMKCgoKCgoK CgoKCgoKCgoKCiAKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdj cy0yLjkxLjY2L2luY2x1ZGUvc3RkYXJnLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3Mt Mi45MS42Ni9pbmNsdWRlL3ZhLWFscGhhLmgiIDEgMwogCgogCgoKCgogCgojIDI1ICIvdXNyL2xp Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS92YS1hbHBo YS5oIiAzCgoKIAoKCiMgMTI4ICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9l Z2NzLTIuOTEuNjYvaW5jbHVkZS92YS1hbHBoYS5oIiAzCgojIDM2ICIvdXNyL2xpYi9nY2MtbGli L2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRhcmcuaCIgMiAzCgoj IDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2lu Y2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKIyAyMDIgIi91c3IvbGliL2djYy1saWIvYWxwaGEt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGFyZy5oIiAzCgoKCgojIDQ4ICIv dXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgoKCgoKCgojIDY3ICIvdXNyL2luY2x1ZGUvbGliaW8u aCIgMwoKCiAKCgoKCgoKCgoKCgoKCgoKCgojIDk4ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoK CgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK c3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJTEU7CgogCgoKCgoKCgp0eXBlZGVmIHZv aWQgX0lPX2xvY2tfdDsKCgoKIAoKc3RydWN0IF9JT19tYXJrZXIgewogIHN0cnVjdCBfSU9fbWFy a2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9zYnVmOwogICAKCiAgIAogIGludCBfcG9z OwojIDE4NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKCn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewog IGludCBfZmxhZ3M7CQkgCgoKICAgCiAgIAogIGNoYXIqIF9JT19yZWFkX3B0cjsJIAogIGNoYXIq IF9JT19yZWFkX2VuZDsJIAogIGNoYXIqIF9JT19yZWFkX2Jhc2U7CSAKICBjaGFyKiBfSU9fd3Jp dGVfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9wdHI7CSAKICBjaGFyKiBfSU9fd3JpdGVfZW5k OwkgCiAgY2hhciogX0lPX2J1Zl9iYXNlOwkgCiAgY2hhciogX0lPX2J1Zl9lbmQ7CSAKICAgCiAg Y2hhciAqX0lPX3NhdmVfYmFzZTsgIAogIGNoYXIgKl9JT19iYWNrdXBfYmFzZTsgICAKICBjaGFy ICpfSU9fc2F2ZV9lbmQ7ICAKCiAgc3RydWN0IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1 Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9f b2ZmX3QgICBfb2xkX29mZnNldDsgIAoKCiAgIAogIHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1u OwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICAg CgogIF9JT19sb2NrX3QgKl9sb2NrOwoKCgoKCgoKCiAgX19vZmY2NF90ICAgX29mZnNldDsKICAg CiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoKCgoKc3RydWN0IF9JT19GSUxFX3BsdXM7CmV4dGVy biBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsKZXh0ZXJuIHN0cnVjdCBfSU9f RklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9J T18yXzFfc3RkZXJyXzsKCgoKCgoKCgoKCgogCgogCgp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3Jl YWRfZm4gICh2b2lkICogIF9fY29va2llLCBjaGFyICpfX2J1ZiwKCQkJCSAgICAgICBzaXplX3Qg X19uYnl0ZXMpICA7CgogCgoKCgoKdHlwZWRlZiBfX3NzaXplX3QgX19pb193cml0ZV9mbiAgKHZv aWQgKiAgX19jb29raWUsIF9fY29uc3QgY2hhciAqX19idWYsCgkJCQkgICAgICBzaXplX3QgX19u KSAgOwoKIAoKCgoKCnR5cGVkZWYgaW50IF9faW9fc2Vla19mbiAgKHZvaWQgKiAgX19jb29raWUs IF9fb2ZmX3QgICBfX3BvcywgaW50IF9fdykgIDsKCiAKdHlwZWRlZiBpbnQgX19pb19jbG9zZV9m biAgKHZvaWQgKiAgX19jb29raWUpICA7CgoKIyAzMTEgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz CgoKCgpleHRlcm4gIkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJTEUgKikg IHRocm93ICgpICA7CmV4dGVybiBpbnQgX191ZmxvdyAgKF9JT19GSUxFICopICB0aHJvdyAoKSAg OwpleHRlcm4gaW50IF9fb3ZlcmZsb3cgIChfSU9fRklMRSAqLCBpbnQpICB0aHJvdyAoKSAgOwoK CgoKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgdGhy b3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0YyAgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSAg dGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fZmVvZiAgKF9JT19GSUxFICpfX2ZwKSAgdGhyb3cg KCkgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAg OwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAo KSAgOwoKIAoKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93 ICgpICA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAo KSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkg IDsKCgoKCgoKCgoKCgoKZXh0ZXJuIGludCBfSU9fdmZzY2FuZiAgKF9JT19GSUxFICogICwgY29u c3QgY2hhciAqICAsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgLCBpbnQgKiAgKSAgdGhyb3cgKCkg IDsKZXh0ZXJuIGludCBfSU9fdmZwcmludGYgIChfSU9fRklMRSAqICAsIGNvbnN0IGNoYXIgKiAg LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICB0aHJvdyAoKSAgOwpleHRlcm4gX19zc2l6ZV90 ICAgX0lPX3BhZG4gIChfSU9fRklMRSAqLCBpbnQsIF9fc3NpemVfdCAgKSAgdGhyb3cgKCkgIDsK ZXh0ZXJuIHNpemVfdCAgIF9JT19zZ2V0biAgKF9JT19GSUxFICosIHZvaWQgKiwgc2l6ZV90ICAp ICB0aHJvdyAoKSAgOwoKZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUg KiwgX19vZmY2NF90ICAsIGludCwgaW50KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIF9fb2ZmNjRfdCAg IF9JT19zZWVrcG9zICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAsIGludCkgIHRocm93ICgpICA7 CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAgKF9JT19GSUxFICopICB0aHJvdyAo KSAgOwoKCn0KCgoKIyA1NyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCiAKCnR5cGVkZWYg X19vZmZfdCAgZnBvc190OwoKCgoKCgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAK CgoKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDExMCAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDIgMwoKCgogCmV4dGVybiBGSUxFICpzdGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91 dDsJCSAKZXh0ZXJuIEZJTEUgKnN0ZGVycjsJCSAKCgogCmV4dGVybiBpbnQgcmVtb3ZlICAoX19j b25zdCBjaGFyICpfX2ZpbGVuYW1lKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHJlbmFtZSAg KF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpICB0aHJvdyAoKSAgOwoK CiAKCmV4dGVybiBGSUxFICp0bXBmaWxlICAodm9pZCkgIHRocm93ICgpICA7CgoKCgoKCgoKCgog CmV4dGVybiBjaGFyICp0bXBuYW0gIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVy biBjaGFyICp0bXBuYW1fciAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKCgogCgoKCgoKCmV4 dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpf X3BmeCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2UgIChGSUxFICpfX3N0cmVh bSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZmx1c2ggIChGSUxFICpfX3N0cmVhbSkgIHRo cm93ICgpICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFt KSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZm9wZW4gIChfX2NvbnN0IGNo YXIgKiAgIF9fZmlsZW5hbWUsCgkJCSBfX2NvbnN0IGNoYXIgKiAgIF9fbW9kZXMpICB0aHJvdyAo KSAgOwogCmV4dGVybiBGSUxFICpmcmVvcGVuICAoX19jb25zdCBjaGFyICogICBfX2ZpbGVuYW1l LAoJCQkgICBfX2NvbnN0IGNoYXIgKiAgIF9fbW9kZXMsCgkJCSAgIEZJTEUgKiAgIF9fc3RyZWFt KSAgdGhyb3cgKCkgIDsKIyAxOTcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCgoKCgoKCgoKCgog CmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21vZGVzKSAg dGhyb3cgKCkgIDsKCgojIDIyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKIAoKZXh0ZXJu IHZvaWQgc2V0YnVmICAoRklMRSAqICAgX19zdHJlYW0sIGNoYXIgKiAgIF9fYnVmKSAgdGhyb3cg KCkgIDsKIAoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAgKEZJTEUgKiAgIF9fc3RyZWFtLCBjaGFyICog ICBfX2J1ZiwKCQkJIGludCBfX21vZGVzLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCgpl eHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxFICogICBfX3N0cmVhbSwgY2hhciAqICAgX19idWYs CgkJCSAgICBzaXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgc2V0bGlu ZWJ1ZiAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZwcmlu dGYgIChGSUxFICogICBfX3N0cmVhbSwKCQkJIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4u LikgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBwcmludGYgIChfX2NvbnN0IGNoYXIgKiAgIF9f Zm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgc3ByaW50ZiAgKGNoYXIgKiAg IF9fcywKCQkJIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7Cgog CmV4dGVybiBpbnQgdmZwcmludGYgIChGSUxFICogICBfX3MsCgkJCSAgX19jb25zdCBjaGFyICog ICBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwogCmV4 dGVybiBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsCgkJCSBfX2dudWNf dmFfbGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgdnNwcmludGYgIChjaGFy ICogICBfX3MsCgkJCSAgX19jb25zdCBjaGFyICogICBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFf bGlzdCAgX19hcmcpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBzbnByaW50ZiAgKGNoYXIg KiAgIF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgIF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQs IC4uLikgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmlu dGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgIChjaGFyICogICBfX3MsIHNp emVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIgKiAgIF9fZm9ybWF0LAoJCQkgICAg IF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgo X19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKZXh0ZXJuIGludCB2c25wcmludGYgIChj aGFyICogICBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgX19jb25zdCBjaGFyICogICBfX2Zv cm1hdCwKCQkJICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCiMgMzAyICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAqICAgX19z dHJlYW0sCgkJCV9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7CiAK ZXh0ZXJuIGludCBzY2FuZiAgKF9fY29uc3QgY2hhciAqICAgX19mb3JtYXQsIC4uLikgIHRocm93 ICgpICA7CiAKZXh0ZXJuIGludCBzc2NhbmYgIChfX2NvbnN0IGNoYXIgKiAgIF9fcywKCQkJX19j b25zdCBjaGFyICogICBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKCiMgMzMwICIvdXNyL2lu Y2x1ZGUvc3RkaW8uaCIgMwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0cmVhbSkg IHRocm93ICgpICA7CmV4dGVybiBpbnQgZ2V0YyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg IDsKCiAKZXh0ZXJuIGludCBnZXRjaGFyICAodm9pZCkgIHRocm93ICgpICA7CgogCgoKCgogCmV4 dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0 ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJu IGludCBmZ2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApl eHRlcm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpl eHRlcm4gaW50IHB1dGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7Cgog CmV4dGVybiBpbnQgcHV0Y2hhciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKCgoKIApleHRl cm4gaW50IGZwdXRjX3VubG9ja2VkICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAo KSAgOwoKCgogCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUgKl9fc3Ry ZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdXRjaGFyX3VubG9ja2VkICAoaW50IF9fYykg IHRocm93ICgpICA7CgoKCgogCmV4dGVybiBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhy b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdXR3ICAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pICB0 aHJvdyAoKSAgOwoKCgogCmV4dGVybiBjaGFyICpmZ2V0cyAgKGNoYXIgKiAgIF9fcywgaW50IF9f biwKCQkJIEZJTEUgKiAgIF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgoKCiAKCmV4dGVybiBj aGFyICpnZXRzICAoY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgojIDQyMCAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMKCgoKIApleHRlcm4gaW50IGZwdXRzICAoX19jb25zdCBjaGFyICogICBfX3Ms CgkJICAgICAgIEZJTEUgKiAgIF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgoKCiAKZXh0ZXJu IGludCBwdXRzICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGlu dCB1bmdldGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKIApleHRl cm4gc2l6ZV90IGZyZWFkICAodm9pZCAqICAgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgc2l6 ZV90IF9fbiwgRklMRSAqICAgX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBzaXplX3Qg ZndyaXRlICAoX19jb25zdCB2b2lkICogICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICAgc2l6 ZV90IF9fbiwgRklMRSAqICAgX19zKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgZnJl YWRfdW5sb2NrZWQgICh2b2lkICogICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAgIHNpemVf dCBfX24sIEZJTEUgKiAgIF9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHNpemVfdCBmd3Jp dGVfdW5sb2NrZWQgIChfX2NvbnN0IHZvaWQgKiAgIF9fcHRyLAoJCQkJICAgIHNpemVfdCBfX3Np emUsIHNpemVfdCBfX24sCgkJCQkgICAgRklMRSAqICAgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoK CgogCmV4dGVybiBpbnQgZnNlZWsgIChGSUxFICpfX3N0cmVhbSwgbG9uZyBpbnQgX19vZmYsIGlu dCBfX3doZW5jZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsICAoRklMRSAq X19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiB2b2lkIHJld2luZCAgKEZJTEUgKl9fc3Ry ZWFtKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCmV4dGVy biBpbnQgZmdldHBvcyAgKEZJTEUgKiAgIF9fc3RyZWFtLAoJCQkgZnBvc190ICogICBfX3Bvcykg IHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmc2V0cG9zICAoRklMRSAqX19zdHJlYW0sIF9fY29u c3QgZnBvc190ICpfX3BvcykgIHRocm93ICgpICA7CiMgNTE5ICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMwoKCiMgNTI5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCiAKZXh0ZXJuIHZvaWQgY2xl YXJlcnIgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGludCBmZW9mICAo RklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgZmVycm9yICAoRklMRSAq X19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIHZvaWQgY2xlYXJlcnJfdW5sb2NrZWQg IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAg KEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5sb2NrZWQg IChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIHZvaWQgcGVycm9yICAo X19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgc3lzX25lcnI7 CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3Qgc3lzX2Vycmxpc3RbXTsKCgoKCgoKCgogCmV4 dGVybiBpbnQgZmlsZW5vICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVy biBpbnQgZmlsZW5vX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoK CiAKZXh0ZXJuIEZJTEUgKnBvcGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3Qg Y2hhciAqX19tb2RlcykgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcGNsb3NlICAoRklMRSAq X19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKIApleHRlcm4gY2hhciAqY3Rlcm1pZCAgKGNoYXIg Kl9fcykgIHRocm93ICgpICA7CgoKCgoKCgoKCiMgNjAzICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRocm93 ICgpICA7CgogCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhy b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRo cm93ICgpICA7CgoKCgoKCgoKCgogCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAx IDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKaW5saW5lICBpbnQKdnByaW50ZiAo X19jb25zdCBjaGFyICogICBfX2ZtdCwgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSB0aHJvdyAoKSAK ewogIHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0LCBfX2ZtdCwgX19hcmcpOwp9CgogCmlubGluZSAg aW50CmdldGNoYXIgKHZvaWQpIHRocm93ICgpIAp7CiAgcmV0dXJuIF9JT19nZXRjIChzdGRpbik7 Cn0KCgoKIAppbmxpbmUgIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSB0aHJvdyAoKSAK ewogIHJldHVybiAoKCBfX2ZwICktPl9JT19yZWFkX3B0ciA+PSAoIF9fZnAgKS0+X0lPX3JlYWRf ZW5kID8gX191ZmxvdyAoIF9fZnAgKSA6ICoodW5zaWduZWQgY2hhciAqKSAoIF9fZnAgKS0+X0lP X3JlYWRfcHRyKyspIDsKfQoKIAppbmxpbmUgIGludApnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0 aHJvdyAoKSAKewogIHJldHVybiAoKCBzdGRpbiApLT5fSU9fcmVhZF9wdHIgPj0gKCBzdGRpbiAp LT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93ICggc3RkaW4gKSA6ICoodW5zaWduZWQgY2hhciAqKSAo IHN0ZGluICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoKIAppbmxpbmUgIGludApwdXRjaGFyIChp bnQgX19jKSB0aHJvdyAoKSAKewogIHJldHVybiBfSU9fcHV0YyAoX19jLCBzdGRvdXQpOwp9CgoK CiAKaW5saW5lICBpbnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0 aHJvdyAoKSAKewogIHJldHVybiAoKCggIF9fc3RyZWFtICktPl9JT193cml0ZV9wdHIgPj0gKCAg X19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIF9fc3RyZWFtICwgKHVu c2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNoYXIpICgqKCAgX19zdHJlYW0gKS0+ X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsKfQoKCgoKIAppbmxpbmUgIGludApwdXRjX3Vu bG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgo ICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfcHRyID49ICggIF9fc3RyZWFtICktPl9JT193cml0ZV9l bmQpID8gX19vdmVyZmxvdyAoICBfX3N0cmVhbSAsICh1bnNpZ25lZCBjaGFyKSAoIF9fYyApKSA6 ICh1bnNpZ25lZCBjaGFyKSAoKiggIF9fc3RyZWFtICktPl9JT193cml0ZV9wdHIrKyA9ICggX19j ICkpKSA7Cn0KCiAKaW5saW5lICBpbnQKcHV0Y2hhcl91bmxvY2tlZCAoaW50IF9fYykgdGhyb3cg KCkgCnsKICByZXR1cm4gKCgoICBzdGRvdXQgKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBzdGRvdXQg KS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIHN0ZG91dCAsICh1bnNpZ25lZCBjaGFy KSAoIF9fYyApKSA6ICh1bnNpZ25lZCBjaGFyKSAoKiggIHN0ZG91dCApLT5fSU9fd3JpdGVfcHRy KysgPSAoIF9fYyApKSkgOwp9CgoKCgoKCgoKCgoKCgoKIAppbmxpbmUgIGludApmZW9mX3VubG9j a2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgoIF9fc3RyZWFtICkt Pl9mbGFncyAmIDB4MTAgKSAhPSAwKSA7Cn0KCiAKaW5saW5lICBpbnQKZmVycm9yX3VubG9ja2Vk IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgCnsKICByZXR1cm4gKCgoIF9fc3RyZWFtICktPl9m bGFncyAmIDB4MjAgKSAhPSAwKSA7Cn0KCgoKCgoKIAoKIyAxNDkgIi91c3IvaW5jbHVkZS9iaXRz L3N0ZGlvLmgiIDMKCgojIDE2NSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiAKCiMg NjMxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoKCn0gCgoKCgojIDM2ICIvc29mdHdhcmUv dGhhbGlhL2gvc3RkdHlwZXMuaCIgMgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCnR5cGVkZWYgc2hv cnQgICBTSE9SVDsKdHlwZWRlZiBsb25nICAgIExPTkc7CnR5cGVkZWYgaW50ICAgICBJTlQ7Cgp0 eXBlZGVmIGZsb2F0ICAgRkxPQVQ7CiAKCgoKCgoKdHlwZWRlZiBkb3VibGUgIERPVUJMRTsKCgoK CnR5cGVkZWYgRkxPQVQgICBSRUFMOwoKCnR5cGVkZWYgZmxvYXQgICBNQVRIOyAgCgoKCgogCgoK CgoKIAoKCgoKCiAKCgoKdHlwZWRlZiBzaG9ydCAgIEJPT0xFQU47CnR5cGVkZWYgdm9pZCAqICBQ VFI7CnR5cGVkZWYgY2hhciAqICBDVExfRkxBRzsKdHlwZWRlZiBjaGFyICAgIENIQVI7CgogCgoK IAoKCgoKCgoKIAoKIAoKCgoKCgoKIAoKIAoKCgoKCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgIFVf U0hPUlQ7CiAKCiAKCgoKdHlwZWRlZiBpbnQgSU5ERVg7CnR5cGVkZWYgY2hhciBOQU1FWzQwXTsK IAoKCiAKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBVX0NIQVI7CgoKdHlwZWRlZiB2b2lkICAg ICgqRlVOQykoIHZvaWQpOwp0eXBlZGVmIGNoYXIgICAgU1RSSU5HWzI1Nl07CgoKCnR5cGVkZWYg c3RydWN0IF9WRUNUT1IKewogICBSRUFMIHgsIHksIHo7Cn0gVkVDVE9SOwoKdHlwZWRlZiBWRUNU T1IgIFBPSU5UOwp0eXBlZGVmIFZFQ1RPUiBWRVJURVg7CgojIDE2MyAiL3NvZnR3YXJlL3RoYWxp YS9oL3N0ZHR5cGVzLmgiCgoKdHlwZWRlZiBzdHJ1Y3QgX1ZFQ1Q0RAp7CiAgIFJFQUwgeCwgeSwg eiwgdzsKfSBWRUNUNEQ7Cgp0eXBlZGVmIHN0cnVjdCBfVkVSVDJECnsKICAgIFJFQUwgdSx2Owp9 IFZFUlQyRDsKCnR5cGVkZWYgc3RydWN0IF9QT0lOVDJECnsKICAgIFJFQUwgeCwgeTsKfSBQT0lO VDJEOwoKdHlwZWRlZiBSRUFMIE1BVFJJWFs0XVs0XTsKICAgIAoKIAoKCgp0eXBlZGVmIHVuaW9u IHsKICAgIFJFQUwgICAgYWxsWzE2XTsKICAgIFJFQUwgICAgZWxlbVs0XVs0XTsKfSBUUkFOU0ZP Uk07CgoKIAoKCmlubGluZSBjb25zdCBjaGFyICpjbGFzc05hbWUoIFZFQ1RPUiApIHsgcmV0dXJu ICJWRUNUT1IiOyB9Owp9OwppbmxpbmUgY29uc3QgY2hhciAqY2xhc3NOYW1lKCBjb25zdCBQT0lO VDJEICYgKSB7IHJldHVybiAiUE9JTlQyRCI7IH07CgoKIyAxICIvc29mdHdhcmUvdGhhbGlhL2gv c3lzcHJvdG9zLnAiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKZXh0ZXJuICJDIiB7CgoKIAoK CgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgojIDEgIi91c3IvaW5j bHVkZS9zeXMvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2lu Y2x1ZGUvdGltZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCmV4dGVybiAi QyIgeyAKCgoKCiAKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2Vn Y3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGli L2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5o IiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0 LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoK CgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJl ZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4 OCAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1 ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBo YS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAi L3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUv c3RkZGVmLmgiIDMKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQt bGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoK CgoKCgoKCgoKIyAzOCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzCgoKIAoKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKCgog CgoKCgoKIAoKCgoKCgoKIyA1OSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzCgojIDQyICIv dXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCgoKCgoKIAp0eXBlZGVmIF9fY2xv Y2tfdCBjbG9ja190OwoKCgoKIyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA4OSAi L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKCiAKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwkJ CSAKICBpbnQgdG1fbWluOwkJCSAKICBpbnQgdG1faG91cjsJCQkgCiAgaW50IHRtX21kYXk7CQkJ IAogIGludCB0bV9tb247CQkJIAogIGludCB0bV95ZWFyOwkJCSAKICBpbnQgdG1fd2RheTsJCQkg CiAgaW50IHRtX3lkYXk7CQkJIAogIGludCB0bV9pc2RzdDsJCQkgCgoKICBsb25nIGludCB0bV9n bXRvZmY7CQkgCiAgX19jb25zdCBjaGFyICp0bV96b25lOwkgCgoKCgp9OwoKCiAKCmV4dGVybiBj bG9ja190IGNsb2NrICAodm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZSAg KHRpbWVfdCAqX190aW1lcikgIHRocm93ICgpICA7CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUg ICh0aW1lX3QgX190aW1lMSwgdGltZV90IF9fdGltZTApICB0aHJvdyAoKSAgCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gdGltZV90IG1rdGltZSAgKHN0cnVjdCB0 bSAqX190cCkgIHRocm93ICgpICA7CgoKIAoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgIChjaGFy ICogICBfX3MsIHNpemVfdCBfX21heHNpemUsCgkJCSAgICAgX19jb25zdCBjaGFyICogICBfX2Zv cm1hdCwKCQkJICAgICBfX2NvbnN0IHN0cnVjdCB0bSAqICAgX190cCkgIHRocm93ICgpICA7CgoK CgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3Rp bWVyKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAgKF9fY29u c3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gc3RydWN0IHRtICpf X2dtdGltZV9yICAoX19jb25zdCB0aW1lX3QgKiAgIF9fdGltZXIsCgkJCQkgICBzdHJ1Y3QgdG0g KiAgIF9fdHApICB0aHJvdyAoKSAgOwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWVfciAgKF9fY29u c3QgdGltZV90ICogICBfX3RpbWVyLAoJCQkJIHN0cnVjdCB0bSAqICAgX190cCkgIHRocm93ICgp ICA7CgogCgpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWVfciAgKF9fY29uc3QgdGltZV90ICog ICBfX3RpbWVyLAoJCQkJICAgIHN0cnVjdCB0bSAqICAgX190cCkgIHRocm93ICgpICA7CgoKIAoK ZXh0ZXJuIGNoYXIgKmFzY3RpbWUgIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgp ICA7CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhy b3cgKCkgIDsKCgogCgogCgpleHRlcm4gY2hhciAqYXNjdGltZV9yICAoX19jb25zdCBzdHJ1Y3Qg dG0gKiAgIF9fdHAsCgkJCSAgICAgY2hhciAqICAgX19idWYpICB0aHJvdyAoKSAgOwoKIApleHRl cm4gY2hhciAqY3RpbWVfciAgKF9fY29uc3QgdGltZV90ICogICBfX3RpbWVyLAoJCQkgICBjaGFy ICogICBfX2J1ZikgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwkg CmV4dGVybiBpbnQgX19kYXlsaWdodDsJCSAKZXh0ZXJuIGxvbmcgaW50IF9fdGltZXpvbmU7CSAK CgoKIApleHRlcm4gY2hhciAqdHpuYW1lWzJdOwoKIAoKZXh0ZXJuIHZvaWQgdHpzZXQgICh2b2lk KSAgdGhyb3cgKCkgIDsKCgoKZXh0ZXJuIGludCBkYXlsaWdodDsKZXh0ZXJuIGxvbmcgaW50IHRp bWV6b25lOwoKCgogCgpleHRlcm4gaW50IHN0aW1lICAoX19jb25zdCB0aW1lX3QgKl9fd2hlbikg IHRocm93ICgpICA7CgoKCiAKCgoKCgoKIAoKCiAKZXh0ZXJuIHRpbWVfdCB0aW1lZ20gIChzdHJ1 Y3QgdG0gKl9fdHApICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdGltZV90IHRpbWVsb2NhbCAgKHN0 cnVjdCB0bSAqX190cCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgZHlzaXplICAoaW50IF9f eWVhcikgIHRocm93ICgpICA7CgoKCgogCmV4dGVybiBpbnQgbmFub3NsZWVwICAoX19jb25zdCBz dHJ1Y3QgdGltZXNwZWMgKl9fcmVxdWVzdGVkX3RpbWUsCgkJCSAgIHN0cnVjdCB0aW1lc3BlYyAq X19yZW1haW5pbmcpICB0aHJvdyAoKSAgOwoKCgojIDI2NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg MwoKCiMgMjc0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCn0gCgoKCgojIDI0ICIvdXNyL2lu Y2x1ZGUvc3lzL3RpbWUuaCIgMiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIg MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDQzICIvdXNyL2luY2x1ZGUvYml0cy90aW1l LmgiIDMKCgoKCgoKCgogCgpzdHJ1Y3QgdGltZXZhbAogIHsKICAgIF9fdGltZV90IHR2X3NlYzsJ CSAKICAgIF9fdGltZV90IHR2X3VzZWM7CQkgCiAgfTsKCgojIDI4ICIvdXNyL2luY2x1ZGUvc3lz L3RpbWUuaCIgMiAzCgoKCmV4dGVybiAiQyIgeyAKCiAKCgoKCgoKCgoKCiAKCnN0cnVjdCB0aW1l em9uZQogIHsKICAgIGludCB0el9taW51dGVzd2VzdDsJCSAKICAgIGludCB0el9kc3R0aW1lOwkJ IAogIH07CgogCgoKCgpleHRlcm4gaW50IGdldHRpbWVvZmRheSAgKHN0cnVjdCB0aW1ldmFsICpf X3R2LAoJCQkgICAgICBzdHJ1Y3QgdGltZXpvbmUgKl9fdHopICB0aHJvdyAoKSAgOwoKIAoKZXh0 ZXJuIGludCBzZXR0aW1lb2ZkYXkgIChfX2NvbnN0IHN0cnVjdCB0aW1ldmFsICpfX3R2LAoJCQkg ICAgICBfX2NvbnN0IHN0cnVjdCB0aW1lem9uZSAqX190eikgIHRocm93ICgpICA7CgogCgoKCmV4 dGVybiBpbnQgYWRqdGltZSAgKF9fY29uc3Qgc3RydWN0IHRpbWV2YWwgKl9fZGVsdGEsCgkJCSBz dHJ1Y3QgdGltZXZhbCAqX19vbGRkZWx0YSkgIHRocm93ICgpICA7CgoKIAplbnVtIF9faXRpbWVy X3doaWNoCiAgewogICAgIAogICAgSVRJTUVSX1JFQUwgPSAwLAoKICAgICAKICAgIElUSU1FUl9W SVJUVUFMID0gMSwKCiAgICAgCgogICAgSVRJTUVSX1BST0YgPSAyCgogIH07CgogCgpzdHJ1Y3Qg aXRpbWVydmFsCiAgewogICAgIAogICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAgICAg CiAgICBzdHJ1Y3QgdGltZXZhbCBpdF92YWx1ZTsKICB9OwoKIAoKZXh0ZXJuIGludCBnZXRpdGlt ZXIgIChlbnVtIF9faXRpbWVyX3doaWNoIF9fd2hpY2gsCgkJCSAgIHN0cnVjdCBpdGltZXJ2YWwg Kl9fdmFsdWUpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgc2V0aXRpbWVyICAoZW51bSBf X2l0aW1lcl93aGljaCBfX3doaWNoLAoJCQkgICBfX2NvbnN0IHN0cnVjdCBpdGltZXJ2YWwgKl9f bmV3LAoJCQkgICBzdHJ1Y3QgaXRpbWVydmFsICpfX29sZCkgIHRocm93ICgpICA7CgogCgpleHRl cm4gaW50IHV0aW1lcyAgKF9fY29uc3QgY2hhciAqX19maWxlLCBzdHJ1Y3QgdGltZXZhbCBfX3R2 cFsyXSkgIHRocm93ICgpICA7CgoKIAoKCgoKCgoKCiMgMTMzICIvdXNyL2luY2x1ZGUvc3lzL3Rp bWUuaCIgMwoKIyAxNDIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzCgp9IAoKCiMgNzAgIi9z b2Z0d2FyZS90aGFsaWEvaC9zeXNwcm90b3MucCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvdW5pc3Rk LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCmV4dGVybiAiQyIgeyAKCiAKCgog CgoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCgogCgoKCiAKCgoKIAoKCgoKCgogCgoKIAoKCgoKIAoK CiAKCgogCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9pbmNs dWRlL2JpdHMvcG9zaXhfb3B0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgogCgoK IAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgogCgoKIAoKCiAKCgoKIAoKCiAKCgogCgoK IAoKCiAKCgogCgoKCiAKCgogCgoKIAoKCiAKIAoKIAoKCiAKCiAKCgogCgoKIAoKCgoKCiMgMTc1 ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMwoKCiAKCgoKCiAKCgoKCgogCgoKCgoKCgoKCgoj IDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNs dWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvYWxwaGEt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoK CgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45 MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK CgoKCiAKCiAKCiMgMTMxICIvdXNyL2xpYi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2Nz LTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2Nj LWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMK CgoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgv ZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2NjLWxp Yi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgog CgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkx LjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxOTkg Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKIyAyMzEgIi91c3IvaW5jbHVkZS91bmlzdGQu aCIgMwoKCgoKCgoKCgogCgoKCgoKCiAKZXh0ZXJuIGludCBhY2Nlc3MgIChfX2NvbnN0IGNoYXIg Kl9fbmFtZSwgaW50IF9fdHlwZSkgIHRocm93ICgpICA7CgoKCgoKCgoKIAoKCgoKCgoKIAoKCgoK CgogCgoKCgpleHRlcm4gX19vZmZfdCBfX2xzZWVrICAoaW50IF9fZmQsIF9fb2ZmX3QgX19vZmZz ZXQsIGludCBfX3doZW5jZSkgIHRocm93ICgpICA7CgpleHRlcm4gX19vZmZfdCBsc2VlayAgKGlu dCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpICB0aHJvdyAoKSAgOwojIDI4 OSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoKCgoKIApleHRlcm4gaW50IF9fY2xvc2UgIChp bnQgX19mZCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgY2xvc2UgIChpbnQgX19mZCkgIHRocm93 ICgpICA7CgogCgpleHRlcm4gc3NpemVfdCAgX19yZWFkICAoaW50IF9fZmQsIHZvaWQgKiAgX19i dWYsIHNpemVfdCBfX25ieXRlcykgIHRocm93ICgpICA7CmV4dGVybiBzc2l6ZV90ICByZWFkICAo aW50IF9fZmQsIHZvaWQgKiAgX19idWYsIHNpemVfdCBfX25ieXRlcykgIHRocm93ICgpICA7Cgog CmV4dGVybiBzc2l6ZV90ICBfX3dyaXRlICAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqICBfX2J1 Ziwgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CmV4dGVybiBzc2l6ZV90ICB3cml0ZSAgKGludCBf X2ZkLCBfX2NvbnN0IHZvaWQgKiAgX19idWYsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIyAz NDMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCiAKCgoKZXh0ZXJuIGludCBwaXBlICAoaW50 IF9fcGlwZWRlc1syXSkgIHRocm93ICgpICA7CgogCgoKCgoKCmV4dGVybiB1bnNpZ25lZCBpbnQg YWxhcm0gICh1bnNpZ25lZCBpbnQgX19zZWNvbmRzKSAgdGhyb3cgKCkgIDsKCiAKCgoKCgoKZXh0 ZXJuIHVuc2lnbmVkIGludCBzbGVlcCAgKHVuc2lnbmVkIGludCBfX3NlY29uZHMpICB0aHJvdyAo KSAgOwoKCiAKCgoKZXh0ZXJuIHVuc2lnbmVkIGludCB1YWxhcm0gICh1bnNpZ25lZCBpbnQgX192 YWx1ZSwKCQkJCSB1bnNpZ25lZCBpbnQgX19pbnRlcnZhbCkgIHRocm93ICgpICA7CgogCgpleHRl cm4gdm9pZCB1c2xlZXAgICh1bnNpZ25lZCBpbnQgX191c2Vjb25kcykgIHRocm93ICgpICA7CgoK CiAKCmV4dGVybiBpbnQgcGF1c2UgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQg Y2hvd24gIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLAoJCSAgICAgICBf X2dpZF90IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmY2hvd24gIChpbnQg X19mZCwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9fZ3JvdXApICB0aHJvdyAoKSAgOwoKCiAK CmV4dGVybiBpbnQgbGNob3duICAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fdWlkX3QgX19vd25l ciwKCQkJX19naWRfdCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGNoZGly ICAoX19jb25zdCBjaGFyICpfX3BhdGgpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmY2hk aXIgIChpbnQgX19mZCkgIHRocm93ICgpICA7CgoKIAoKCgoKCgpleHRlcm4gY2hhciAqZ2V0Y3dk ICAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCgoK ZXh0ZXJuIGNoYXIgKmdldHdkICAoY2hhciAqX19idWYpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVy biBpbnQgZHVwICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IGR1cDIgIChp bnQgX19mZCwgaW50IF9fZmQyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKipfX2Vudmly b247CgoKCgoKIAoKZXh0ZXJuIGludCBleGVjdmUgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hh ciAqX19jb25zdCBfX2FyZ3ZbXSwKCQkJY2hhciAqX19jb25zdCBfX2VudnBbXSkgIHRocm93ICgp ICA7CgoKCgoKCgoKCgogCmV4dGVybiBpbnQgZXhlY3YgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwg Y2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGV4ZWNs ZSAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pICB0aHJv dyAoKSAgOwoKIAoKZXh0ZXJuIGludCBleGVjbCAgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2Nv bnN0IGNoYXIgKl9fYXJnLCAuLi4pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBleGVjdnAg IChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkgIHRocm93ICgp ICA7CgogCgoKZXh0ZXJuIGludCBleGVjbHAgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19jb25z dCBjaGFyICpfX2FyZywgLi4uKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IG5pY2UgIChp bnQgX19pbmMpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiB2b2lkIF9leGl0ICAoaW50IF9fc3Rh dHVzKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCgoKIyAxICIvdXNyL2lu Y2x1ZGUvYml0cy9jb25mbmFtZS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAplbnVt CiAgewogICAgX1BDX0xJTktfTUFYLAoKICAgIF9QQ19NQVhfQ0FOT04sCgogICAgX1BDX01BWF9J TlBVVCwKCiAgICBfUENfTkFNRV9NQVgsCgogICAgX1BDX1BBVEhfTUFYLAoKICAgIF9QQ19QSVBF X0JVRiwKCiAgICBfUENfQ0hPV05fUkVTVFJJQ1RFRCwKCiAgICBfUENfTk9fVFJVTkMsCgogICAg X1BDX1ZESVNBQkxFLAoKICAgIF9QQ19TWU5DX0lPLAoKICAgIF9QQ19BU1lOQ19JTywKCiAgICBf UENfUFJJT19JTywKCiAgICBfUENfU09DS19NQVhCVUYsCgogICAgX1BDX0ZJTEVTSVpFQklUUwoK ICB9OwoKIAplbnVtCiAgewogICAgX1NDX0FSR19NQVgsCgogICAgX1NDX0NISUxEX01BWCwKCiAg ICBfU0NfQ0xLX1RDSywKCiAgICBfU0NfTkdST1VQU19NQVgsCgogICAgX1NDX09QRU5fTUFYLAoK ICAgIF9TQ19TVFJFQU1fTUFYLAoKICAgIF9TQ19UWk5BTUVfTUFYLAoKICAgIF9TQ19KT0JfQ09O VFJPTCwKCiAgICBfU0NfU0FWRURfSURTLAoKICAgIF9TQ19SRUFMVElNRV9TSUdOQUxTLAoKICAg IF9TQ19QUklPUklUWV9TQ0hFRFVMSU5HLAoKICAgIF9TQ19USU1FUlMsCgogICAgX1NDX0FTWU5D SFJPTk9VU19JTywKCiAgICBfU0NfUFJJT1JJVElaRURfSU8sCgogICAgX1NDX1NZTkNIUk9OSVpF RF9JTywKCiAgICBfU0NfRlNZTkMsCgogICAgX1NDX01BUFBFRF9GSUxFUywKCiAgICBfU0NfTUVN TE9DSywKCiAgICBfU0NfTUVNTE9DS19SQU5HRSwKCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04s CgogICAgX1NDX01FU1NBR0VfUEFTU0lORywKCiAgICBfU0NfU0VNQVBIT1JFUywKCiAgICBfU0Nf U0hBUkVEX01FTU9SWV9PQkpFQ1RTLAoKICAgIF9TQ19BSU9fTElTVElPX01BWCwKCiAgICBfU0Nf QUlPX01BWCwKCiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLAoKICAgIF9TQ19ERUxBWVRJTUVS X01BWCwKCiAgICBfU0NfTVFfT1BFTl9NQVgsCgogICAgX1NDX01RX1BSSU9fTUFYLAoKICAgIF9T Q19WRVJTSU9OLAoKICAgIF9TQ19QQUdFU0laRSwKCgogICAgX1NDX1JUU0lHX01BWCwKCiAgICBf U0NfU0VNX05TRU1TX01BWCwKCiAgICBfU0NfU0VNX1ZBTFVFX01BWCwKCiAgICBfU0NfU0lHUVVF VUVfTUFYLAoKICAgIF9TQ19USU1FUl9NQVgsCgoKICAgICAKCiAgICBfU0NfQkNfQkFTRV9NQVgs CgogICAgX1NDX0JDX0RJTV9NQVgsCgogICAgX1NDX0JDX1NDQUxFX01BWCwKCiAgICBfU0NfQkNf U1RSSU5HX01BWCwKCiAgICBfU0NfQ09MTF9XRUlHSFRTX01BWCwKCiAgICBfU0NfRVFVSVZfQ0xB U1NfTUFYLAoKICAgIF9TQ19FWFBSX05FU1RfTUFYLAoKICAgIF9TQ19MSU5FX01BWCwKCiAgICBf U0NfUkVfRFVQX01BWCwKCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYLAoKCiAgICBfU0NfMl9W RVJTSU9OLAoKICAgIF9TQ18yX0NfQklORCwKCiAgICBfU0NfMl9DX0RFViwKCiAgICBfU0NfMl9G T1JUX0RFViwKCiAgICBfU0NfMl9GT1JUX1JVTiwKCiAgICBfU0NfMl9TV19ERVYsCgogICAgX1ND XzJfTE9DQUxFREVGLAoKCiAgICBfU0NfUElJLAoKICAgIF9TQ19QSUlfWFRJLAoKICAgIF9TQ19Q SUlfU09DS0VULAoKICAgIF9TQ19QSUlfSU5URVJORVQsCgogICAgX1NDX1BJSV9PU0ksCgogICAg X1NDX1BPTEwsCgogICAgX1NDX1NFTEVDVCwKCiAgICBfU0NfVUlPX01BWElPViwKCiAgICBfU0Nf UElJX0lOVEVSTkVUX1NUUkVBTSwKCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLAoKICAgIF9T Q19QSUlfT1NJX0NPVFMsCgogICAgX1NDX1BJSV9PU0lfQ0xUUywKCiAgICBfU0NfUElJX09TSV9N LAoKICAgIF9TQ19UX0lPVl9NQVgsCgoKICAgICAKICAgIF9TQ19USFJFQURTLAoKICAgIF9TQ19U SFJFQURfU0FGRV9GVU5DVElPTlMsCgogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsCgogICAgX1ND X0dFVFBXX1JfU0laRV9NQVgsCgogICAgX1NDX0xPR0lOX05BTUVfTUFYLAoKICAgIF9TQ19UVFlf TkFNRV9NQVgsCgogICAgX1NDX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMsCgogICAgX1ND X1RIUkVBRF9LRVlTX01BWCwKCiAgICBfU0NfVEhSRUFEX1NUQUNLX01JTiwKCiAgICBfU0NfVEhS RUFEX1RIUkVBRFNfTUFYLAoKICAgIF9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIsCgogICAgX1ND X1RIUkVBRF9BVFRSX1NUQUNLU0laRSwKCiAgICBfU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJ TkcsCgogICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsCgogICAgX1NDX1RIUkVBRF9QUklPX1BS T1RFQ1QsCgogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwKCgogICAgX1NDX05QUk9DRVNT T1JTX0NPTkYsCgogICAgX1NDX05QUk9DRVNTT1JTX09OTE4sCgogICAgX1NDX1BIWVNfUEFHRVMs CgogICAgX1NDX0FWUEhZU19QQUdFUywKCiAgICBfU0NfQVRFWElUX01BWCwKCiAgICBfU0NfUEFT U19NQVgsCgoKICAgIF9TQ19YT1BFTl9WRVJTSU9OLAoKICAgIF9TQ19YT1BFTl9YQ1VfVkVSU0lP TiwKCiAgICBfU0NfWE9QRU5fVU5JWCwKCiAgICBfU0NfWE9QRU5fQ1JZUFQsCgogICAgX1NDX1hP UEVOX0VOSF9JMThOLAoKICAgIF9TQ19YT1BFTl9TSE0sCgoKICAgIF9TQ18yX0NIQVJfVEVSTSwK CiAgICBfU0NfMl9DX1ZFUlNJT04sCgogICAgX1NDXzJfVVBFLAoKCiAgICBfU0NfWE9QRU5fWFBH MiwKCiAgICBfU0NfWE9QRU5fWFBHMywKCiAgICBfU0NfWE9QRU5fWFBHNCwKCgogICAgX1NDX0NI QVJfQklULAoKICAgIF9TQ19DSEFSX01BWCwKCiAgICBfU0NfQ0hBUl9NSU4sCgogICAgX1NDX0lO VF9NQVgsCgogICAgX1NDX0lOVF9NSU4sCgogICAgX1NDX0xPTkdfQklULAoKICAgIF9TQ19XT1JE X0JJVCwKCiAgICBfU0NfTUJfTEVOX01BWCwKCiAgICBfU0NfTlpFUk8sCgogICAgX1NDX1NTSVpF X01BWCwKCiAgICBfU0NfU0NIQVJfTUFYLAoKICAgIF9TQ19TQ0hBUl9NSU4sCgogICAgX1NDX1NI UlRfTUFYLAoKICAgIF9TQ19TSFJUX01JTiwKCiAgICBfU0NfVUNIQVJfTUFYLAoKICAgIF9TQ19V SU5UX01BWCwKCiAgICBfU0NfVUxPTkdfTUFYLAoKICAgIF9TQ19VU0hSVF9NQVgsCgoKICAgIF9T Q19OTF9BUkdNQVgsCgogICAgX1NDX05MX0xBTkdNQVgsCgogICAgX1NDX05MX01TR01BWCwKCiAg ICBfU0NfTkxfTk1BWCwKCiAgICBfU0NfTkxfU0VUTUFYLAoKICAgIF9TQ19OTF9URVhUTUFYLAoK CiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwKCiAgICBfU0NfWEJTNV9JTFAzMl9PRkZCSUcsCgog ICAgX1NDX1hCUzVfTFA2NF9PRkY2NCwKCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsCgoKICAg IF9TQ19YT1BFTl9MRUdBQ1ksCgogICAgX1NDX1hPUEVOX1JFQUxUSU1FLAoKICAgIF9TQ19YT1BF Tl9SRUFMVElNRV9USFJFQURTCgogIH07CgoKCgogCmVudW0KICB7CiAgICBfQ1NfUEFUSAkJCSAK CgojIDM3MCAiL3Vzci9pbmNsdWRlL2JpdHMvY29uZm5hbWUuaCIgMwoKCiMgNDA2ICIvdXNyL2lu Y2x1ZGUvYml0cy9jb25mbmFtZS5oIiAzCgogIH07CgojIDQ5NyAiL3Vzci9pbmNsdWRlL3VuaXN0 ZC5oIiAyIDMKCgogCmV4dGVybiBsb25nIGludCBwYXRoY29uZiAgKF9fY29uc3QgY2hhciAqX19w YXRoLCBpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGZwYXRoY29u ZiAgKGludCBfX2ZkLCBpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50 IHN5c2NvbmYgIChpbnQgX19uYW1lKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBzaXplX3QgY29u ZnN0ciAgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pICB0aHJvdyAoKSAg OwoKCgogCmV4dGVybiBfX3BpZF90IF9fZ2V0cGlkICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVy biBfX3BpZF90IGdldHBpZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gX19waWRfdCBn ZXRwcGlkICAodm9pZCkgIHRocm93ICgpICA7CgogCgoKZXh0ZXJuIF9fcGlkX3QgZ2V0cGdycCAg KHZvaWQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIF9fcGlkX3QgX19nZXRwZ2lkICAo X19waWRfdCBfX3BpZCkgIHRocm93ICgpICA7CgoKCgoKIAoKCmV4dGVybiBpbnQgX19zZXRwZ2lk ICAoX19waWRfdCBfX3BpZCwgX19waWRfdCBfX3BnaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50 IHNldHBnaWQgIChfX3BpZF90IF9fcGlkLCBfX3BpZF90IF9fcGdpZCkgIHRocm93ICgpICA7CgoK IAoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgc2V0cGdycCAgKHZvaWQpICB0aHJvdyAoKSAgOwoK IyA1NzMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMwoKCgogCgoKZXh0ZXJuIF9fcGlkX3Qgc2V0 c2lkICAodm9pZCkgIHRocm93ICgpICA7CgoKCgoKCiAKZXh0ZXJuIF9fdWlkX3QgZ2V0dWlkICAo dm9pZCkgIHRocm93ICgpICA7CgogCmV4dGVybiBfX3VpZF90IGdldGV1aWQgICh2b2lkKSAgdGhy b3cgKCkgIDsKCiAKZXh0ZXJuIF9fZ2lkX3QgZ2V0Z2lkICAodm9pZCkgIHRocm93ICgpICA7Cgog CmV4dGVybiBfX2dpZF90IGdldGVnaWQgICh2b2lkKSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4g aW50IGdldGdyb3VwcyAgKGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10pICB0aHJvdyAoKSAg OwoKCgoKCgogCgoKCmV4dGVybiBpbnQgc2V0dWlkICAoX191aWRfdCBfX3VpZCkgIHRocm93ICgp ICA7CgoKIAoKZXh0ZXJuIGludCBzZXRyZXVpZCAgKF9fdWlkX3QgX19ydWlkLCBfX3VpZF90IF9f ZXVpZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBzZXRldWlkICAoX191aWRfdCBfX3Vp ZCkgIHRocm93ICgpICA7CgoKIAoKCgpleHRlcm4gaW50IHNldGdpZCAgKF9fZ2lkX3QgX19naWQp ICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBpbnQgc2V0cmVnaWQgIChfX2dpZF90IF9fcmdpZCwg X19naWRfdCBfX2VnaWQpICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc2V0ZWdpZCAgKF9f Z2lkX3QgX19naWQpICB0aHJvdyAoKSAgOwoKCgogCgoKZXh0ZXJuIF9fcGlkX3QgX19mb3JrICAo dm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBfX3BpZF90IGZvcmsgICh2b2lkKSAgdGhyb3cgKCkg IDsKCgogCgoKCmV4dGVybiBfX3BpZF90IHZmb3JrICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAK CmV4dGVybiBjaGFyICp0dHluYW1lICAoaW50IF9fZmQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJu IGludCB0dHluYW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxlbikg IHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGlzYXR0eSAgKGludCBfX2ZkKSAgdGhyb3cgKCkg IDsKCgogCgpleHRlcm4gaW50IHR0eXNsb3QgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgoKIApleHRl cm4gaW50IGxpbmsgIChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgX19jb25zdCBjaGFyICpfX3RvKSAg dGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgc3ltbGluayAgKF9fY29uc3QgY2hhciAqX19mcm9t LCBfX2NvbnN0IGNoYXIgKl9fdG8pICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgcmVhZGxp bmsgIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgIHRo cm93ICgpICA7CgoKIApleHRlcm4gaW50IHVubGluayAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAg dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBybWRpciAgKF9fY29uc3QgY2hhciAqX19wYXRoKSAg dGhyb3cgKCkgIDsKCgogCmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAgKGludCBfX2ZkKSAgdGhy b3cgKCkgIDsKCiAKZXh0ZXJuIGludCB0Y3NldHBncnAgIChpbnQgX19mZCwgX19waWRfdCBfX3Bn cnBfaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGNoYXIgKmdldGxvZ2luICAodm9pZCkgIHRo cm93ICgpICA7CgoKCgoKCgoKIApleHRlcm4gaW50IHNldGxvZ2luICAoX19jb25zdCBjaGFyICpf X25hbWUpICB0aHJvdyAoKSAgOwoKCgoKIAoKCgojIDEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIg MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCmV4dGVybiAiQyIgewoKCiAKCgoKCgpleHRl cm4gY2hhciAqb3B0YXJnOwoKIAoKCgoKCgoKCgoKCmV4dGVybiBpbnQgb3B0aW5kOwoKIAoKCmV4 dGVybiBpbnQgb3B0ZXJyOwoKIAoKZXh0ZXJuIGludCBvcHRvcHQ7CgojIDEwMiAiL3Vzci9pbmNs dWRlL2dldG9wdC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgpleHRlcm4g aW50IGdldG9wdCAoaW50IF9fYXJnYywgY2hhciAqY29uc3QgKl9fYXJndiwgY29uc3QgY2hhciAq X19zaG9ydG9wdHMpOwoKCgoKIyAxNTEgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKIyAxNjAg Ii91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMwoKCgp9CgoKIAoKCgojIDcyNCAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAyIDMKCgoKCgoKIAoKCmV4dGVybiBpbnQgZ2V0aG9zdG5hbWUgIChjaGFyICpf X25hbWUsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IHNldGhvc3Ru YW1lICAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgIHRocm93ICgpICA7Cgog CgpleHRlcm4gaW50IHNldGhvc3RpZCAgKGxvbmcgaW50IF9faWQpICB0aHJvdyAoKSAgOwoKCiAK CgpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgIChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikg IHRocm93ICgpICA7CmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAgKF9fY29uc3QgY2hhciAqX19u YW1lLCBzaXplX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBmc3luYyAgKGlu dCBfX2ZkKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIGludCB2aGFuZ3VwICAodm9pZCkgIHRo cm93ICgpICA7CgogCmV4dGVybiBpbnQgcmV2b2tlICAoX19jb25zdCBjaGFyICpfX2ZpbGUpICB0 aHJvdyAoKSAgOwoKCiAKCgoKCmV4dGVybiBpbnQgcHJvZmlsICAodW5zaWduZWQgc2hvcnQgaW50 ICpfX3NhbXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsCgkJCXNpemVfdCBfX29mZnNldCwgdW5z aWduZWQgaW50IF9fc2NhbGUpICB0aHJvdyAoKSAgOwoKCiAKCgpleHRlcm4gaW50IGFjY3QgIChf X2NvbnN0IGNoYXIgKl9fbmFtZSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gaW50IGNocm9vdCAg KF9fY29uc3QgY2hhciAqX19wYXRoKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBjaGFyICpnZXR1 c2Vyc2hlbGwgICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICAo dm9pZCkgIHRocm93ICgpICA7ICAKZXh0ZXJuIHZvaWQgc2V0dXNlcnNoZWxsICAodm9pZCkgIHRo cm93ICgpICA7ICAKCgogCgpleHRlcm4gY2hhciAqZ2V0cGFzcyAgKF9fY29uc3QgY2hhciAqX19w cm9tcHQpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgZGFlbW9uICAoaW50IF9fbm9jaGRp ciwgaW50IF9fbm9jbG9zZSkgIHRocm93ICgpICA7CgoKCgoKCiAKZXh0ZXJuIGxvbmcgaW50IGdl dGhvc3RpZCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN5bmMgICh2b2lkKSAg dGhyb3cgKCkgIDsKCgogCgpleHRlcm4gaW50IF9fZ2V0cGFnZXNpemUgICh2b2lkKSAgdGhyb3cg KCkgIDsKZXh0ZXJuIGludCBnZXRwYWdlc2l6ZSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKCmV4 dGVybiBpbnQgdHJ1bmNhdGUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX19vZmZfdCBfX2xlbmd0 aCkgIHRocm93ICgpICA7CiMgODI3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCgogCmV4 dGVybiBpbnQgX19mdHJ1bmNhdGUgIChpbnQgX19mZCwgX19vZmZfdCBfX2xlbmd0aCkgIHRocm93 ICgpICA7CgpleHRlcm4gaW50IGZ0cnVuY2F0ZSAgKGludCBfX2ZkLCBfX29mZl90IF9fbGVuZ3Ro KSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCgoKCiAKCmV4dGVybiBpbnQgZ2V0ZHRhYmxlc2l6ZSAg KHZvaWQpICB0aHJvdyAoKSAgOwoKCgoKCgogCgpleHRlcm4gaW50IGJyayAgKHZvaWQgKiAgX19h ZGRyKSAgdGhyb3cgKCkgIDsKCgojIDEgIi91c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxp bnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91 c3IvbGliL2djYy1saWIvYWxwaGEtcmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0 ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYWxwaGEt cmVkaGF0LWxpbnV4L2VnY3MtMi45MS42Ni9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAK CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRl ZiBsb25nIGludCBwdHJkaWZmX3Q7CgoKCgoKCgoKCiAKCgoKCiAKCiAKCiMgMTkwICIvdXNyL2xp Yi9nY2MtbGliL2FscGhhLXJlZGhhdC1saW51eC9lZ2NzLTIuOTEuNjYvaW5jbHVkZS9zdGRkZWYu aCIgMwoKCgogCgoKCgogCgojIDI3MSAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGlu dXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgojIDI4MyAiL3Vzci9saWIvZ2Nj LWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0yLjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMK CgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hbHBoYS1yZWRoYXQtbGludXgvZWdjcy0y LjkxLjY2L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA4 NjMgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMiAzCgoKIAoKCgpleHRlcm4gdm9pZCAqICBfX3Ni cmsgIChwdHJkaWZmX3QgX19kZWx0YSkgIHRocm93ICgpICA7CmV4dGVybiB2b2lkICogIHNicmsg IChwdHJkaWZmX3QgX19kZWx0YSkgIHRocm93ICgpICA7CgoKCgogCgoKCgoKCgoKCmV4dGVybiBs b25nIGludCBzeXNjYWxsICAobG9uZyBpbnQgX19zeXNubywgLi4uKSAgdGhyb3cgKCkgIDsKCgoK CgogCgoKCiAKCgoKCgoKCgoKZXh0ZXJuIGludCBsb2NrZiAgKGludCBfX2ZkLCBpbnQgX19jbWQs IF9fb2ZmX3QgX19sZW4pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKCgoKCiMgOTQwICIvdXNyL2lu Y2x1ZGUvdW5pc3RkLmgiIDMKCgoKIAoKZXh0ZXJuIGludCBmZGF0YXN5bmMgIChpbnQgX19maWxk ZXMpICB0aHJvdyAoKSAgOwoKCgogCgojIDk2OCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzCgoK CiAKCiMgOTgzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMKCgoKCiAKCiAKCgoKCgoKCgoKZXh0 ZXJuIGludCBwdGhyZWFkX2F0Zm9yayAgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKCQkJCXZv aWQgKCpfX3BhcmVudCkgKHZvaWQpLAoJCQkJdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIHRocm93 ICgpICA7CgoKfSAKCgojIDcxICIvc29mdHdhcmUvdGhhbGlhL2gvc3lzcHJvdG9zLnAiIDIKCgp2 b2lkIF9jbGVhbnVwICh2b2lkKTsKIAoKIAoKCmludCBmbG9jayhpbnQsIGludCk7CgogCmludCBC U0RnZXRwZ3JwKGludCBwaWQpOwoKCn07CgoKIyAyMDEgIi9zb2Z0d2FyZS90aGFsaWEvaC9zdGR0 eXBlcy5oIiAyCgoKCgoKCgoKCgoKCgoKCgojIDIyICJucmh5L05SSFlfQWNjZXNzLmMiIDIKCiMg MSAiaC9QbHVnaW5UZW1wbGF0ZS5oIiAxCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAK IAoKY2xhc3MgUGx1Z2luQ2xhc3MgewpwdWJsaWM6CiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIgICpH ZXROYW1lICAgICgpID0gMDsgIAogICAgdmlydHVhbCBjb25zdCBjaGFyICAqR2V0QWxpYXNlcyAo KSB7IHJldHVybiAiIjsgfQogICAgdmlydHVhbCB+UGx1Z2luQ2xhc3MgICAgICAgICAgICAoKSB7 fTsKfTsKCiAKdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIFBsdWdpbkVudHJ5OwoKIAogCiAKIAoK IAogCiAKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUGx1Z2luVGFibGUgewog ICAgZnJpZW5kIGNsYXNzIFBsdWdpbkVudHJ5PFQ+Owpwcml2YXRlOgogICAgCiAgICBzdGF0aWMg VCAqKnRhYmxlOwogICAgc3RhdGljIGludCBtYXhFbnRyaWVzOwogICAgc3RhdGljIGludCBuZXh0 RW50cnk7CiAgICBzdGF0aWMgaW50IG51bUVudHJpZXM7CiAgICBzdGF0aWMgQk9PTEVBTiBjaGVj a1RhYmxlU2l6ZSAgICAgICAoKTsKCnB1YmxpYzoKICAgIAogICAgc3RhdGljIGludCBHZXRGaXJz dEluZGV4ICAgICAgICAgICAgKCkgeyByZXR1cm4gR2V0TmV4dEluZGV4ICgwKTsgfQogICAgc3Rh dGljIGludCBHZXROZXh0SW5kZXggICAgICAgICAgICAgKGludCk7CiAgICBzdGF0aWMgaW50IEdl dE51bUFjdGl2ZUVudHJpZXMgICAgICAoKTsKICAgIHN0YXRpYyBpbnQgR2V0TmV4dEluZGV4ICAg ICAgICAgICAgIChjb25zdCBjaGFyICosIGludCk7CiAgICBzdGF0aWMgaW50IEdldEluZGV4ICAg ICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKTsKICAgIHN0YXRpYyBpbnQgR2V0RXhhY3RJbmRl eCAgICAgICAgICAgIChjb25zdCBjaGFyICpuYW1lKTsKICAgIHN0YXRpYyBUICpHZXRFbnRyeSAg ICAgICAgICAgICAgICAgIChpbnQpOwogICAgc3RhdGljIFQgKkdldEVudHJ5ICAgICAgICAgICAg ICAgICAgKGNvbnN0IGNoYXIgKik7CiAgICBzdGF0aWMgVCAqR2V0RXhhY3RFbnRyeSAgICAgICAg ICAgICAoY29uc3QgY2hhciAqKTsKICAgIHN0YXRpYyBjb25zdCBjaGFyICpDaGVja0FsaWFzICAg ICAgIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICphbGlhc2VzKTsKICAgIHN0YXRpYyBp bnQgR2V0TnVtRW50cmllcyAgICAgICAgICAgICgpIHsgcmV0dXJuIChudW1FbnRyaWVzKTsgfQog ICAgc3RhdGljIGludCBHZXRUb3RhbFNpemUgICAgICAgICAgICAgKCkgeyByZXR1cm4gKG5leHRF bnRyeSk7IH0KCiAgICBzdGF0aWMgY2hhciAqR2V0QWxsTWF0Y2hlcyAgICAgICAgICAoY29uc3Qg Y2hhciAqbmFtZSk7CiAgICBzdGF0aWMgaW50IEdldEFsaWFzSW5kZXggICAgICAgICAgICAoY29u c3QgY2hhciAqKTsKCiAgICAKICAgIFQgJm9wZXJhdG9yIFtdICAgICAgICAgICAgICAgICAgICAg IChjb25zdCBjaGFyICpuYW1lKTsKICAgIFQgJm9wZXJhdG9yIFtdICAgICAgICAgICAgICAgICAg ICAgIChpbnQgaW5kZXgpOwp9OyAgCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgUGx1Z2luRW50 cnkgewpwdWJsaWM6CiAgICAKICAgIGNvbnN0IGludCBJbmRleDsKCiAgICAKICAgIAogICAgUGx1 Z2luRW50cnkgKFQgKik7CiAgICB+UGx1Z2luRW50cnkgKCk7CgogICAgCiAgICBUICZvcGVyYXRv ciAqKCkgIHsgcmV0dXJuICgqKFBsdWdpblRhYmxlPFQ+Ojp0YWJsZVtJbmRleF0pKTsgfQogICAg VCAqb3BlcmF0b3IgLT4oKSB7IHJldHVybiAoUGx1Z2luVGFibGU8VD46OnRhYmxlW0luZGV4XSk7 IH0KICAgIG9wZXJhdG9yIGludCgpICAgeyByZXR1cm4gSW5kZXg7I