<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>138660</bug_id>
          
          <creation_ts>2014-11-12 09:22:58 -0800</creation_ts>
          <short_desc>Add printing functionality in JITted code for debugging purposes</short_desc>
          <delta_ts>2014-11-17 14:03:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>138661</dependson>
    
    <dependson>138671</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1048167</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-12 09:22:58 -0800</bug_when>
    <thetext>Sometimes, it&apos;s be nice to be able to just print the values of constants or registers that JITted code is using, or even just a string to log that certain pieces of JITted code has been executed.  We can implement this some enhancements to the JIT probe mechanism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048170</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-12 09:25:14 -0800</bug_when>
    <thetext>This is functionality that I&apos;ve developed in recent debugging work.  Just cleaning it up to land so that I don&apos;t have to re-invent it the next time it is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048982</commentid>
    <comment_count>2</comment_count>
      <attachid>241654</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-14 19:03:28 -0800</bug_when>
    <thetext>Created attachment 241654
the payola for all the recent probe changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048983</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-14 19:05:11 -0800</bug_when>
    <thetext>Attachment 241654 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:852:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:851:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:855:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:864:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:863:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:867:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:876:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:875:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:879:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:888:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:887:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:891:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:104:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:110:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:112:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:118:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:39:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:45:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:47:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:53:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 20 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049265</commentid>
    <comment_count>4</comment_count>
      <attachid>241654</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-17 11:45:21 -0800</bug_when>
    <thetext>Comment on attachment 241654
the payola for all the recent probe changes

View in context: https://bugs.webkit.org/attachment.cgi?id=241654&amp;action=review

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:945
&gt; +    struct PrintCPU {

I think this would make more sense if you called it &quot;AllRegisters&quot;. Then you wouldn&apos;t need a comment to explain that it meant all registers.

Why does this struct also accept an indentation level? That&apos;s pretty random. It seems like either you should remove the concept of indentation level, or you should add indentation as a separate argument to the PrintArg constructor.

&gt; Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:1288
&gt; +        extern void macroAssemblerPrint(ProbeContext*);

Please remove.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:127
&gt; +        void* voidPtr;

Should this be GPRStorageType?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:138
&gt; +        double doubleValue;

FPRStorageType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049286</commentid>
    <comment_count>5</comment_count>
      <attachid>241736</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-17 12:51:47 -0800</bug_when>
    <thetext>Created attachment 241736
patch 2

Per offline discussion with Geoff, I&apos;ve removed all uses of the GPRStorageType, FPRStorageType, and SPRStortageType abstractions, and replaced them with the concrete types that they map to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049287</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-17 12:54:24 -0800</bug_when>
    <thetext>Attachment 241736 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:852:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:851:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:855:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:864:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:863:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:867:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:876:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:875:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:879:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:888:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:887:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:891:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:958:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:104:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:110:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:112:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:118:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:39:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:45:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:47:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:53:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 21 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049288</commentid>
    <comment_count>7</comment_count>
      <attachid>241737</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-17 12:55:16 -0800</bug_when>
    <thetext>Created attachment 241737
patch 3: removed some unused code due to a failed attempt at supporting indentation when printing AllRegisters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049289</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-17 12:57:21 -0800</bug_when>
    <thetext>Attachment 241737 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:852:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:851:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:855:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:864:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:863:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:867:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:876:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:875:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:879:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:888:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:887:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:891:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:958:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:104:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:110:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:112:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARM.cpp:118:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:39:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:45:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:47:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/MacroAssemblerARMv7.cpp:53:  preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.  [whitespace/indent] [4]
Total errors found: 21 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049311</commentid>
    <comment_count>9</comment_count>
      <attachid>241737</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-17 13:59:17 -0800</bug_when>
    <thetext>Comment on attachment 241737
patch 3: removed some unused code due to a failed attempt at supporting indentation when printing AllRegisters.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049313</commentid>
    <comment_count>10</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2014-11-17 14:03:43 -0800</bug_when>
    <thetext>Thanks.  Landed in r176233: &lt;http://trac.webkit.org/r176233&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241654</attachid>
            <date>2014-11-14 19:03:28 -0800</date>
            <delta_ts>2014-11-17 12:51:47 -0800</delta_ts>
            <desc>the payola for all the recent probe changes</desc>
            <filename>bug-138660.patch</filename>
            <type>text/plain</type>
            <size>31197</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBA
CisyMDE0LTExLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgcHJpbnRpbmcgZnVuY3Rpb25hbGl0eSBpbiBKSVR0ZWQgY29kZSBmb3IgZGVidWdnaW5nIHB1
cnBvc2VzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM4NjYwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aW1lcywgZm9yIGRl
YnVnZ2luZywgaXQnZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8ganVzdCBwcmludCB0aGUKKyAgICAg
ICAgdmFsdWVzIG9mIGNvbnN0YW50cyBvciByZWdpc3RlcnMgdXNlZCBpbiBKSVR0ZWQgY29kZSwg
b3IgZXZlbiBqdXN0CisgICAgICAgIGEgc3RyaW5nIHRvIGxvZyB0aGF0IGNlcnRhaW4gcGllY2Vz
IG9mIEpJVHRlZCBjb2RlIGhhdmUgYmVlbiBleGVjdXRlZC4KKyAgICAgICAgVXNpbmcgdGhlIEpJ
VCBwcm9iZSBtZWNoYW5pc20sIHdlIGNhbiBtYWtlIHRoaXMgaGFwcGVuLgorCisgICAgICAgICog
YXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9BUk12N0Fzc2Vt
Ymxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OkNQVVN0YXRlOjpyZWdpc3Rlck5h
bWUpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpDUFVTdGF0ZTo6cmVn
aXN0ZXJWYWx1ZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OlByaW50
Q1BVOjpQcmludENQVSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3NlbWJsZXI6OnBy
aW50KToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6UHJpbnRBcmc6OlBy
aW50QXJnKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6YXBwZW5kUHJp
bnRBcmcpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1ibGVyOjpwcmludEludGVy
bmFsKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6cHJpbnRDYWxsYmFj
ayk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnByaW50Q1BVUmVnaXN0ZXJzKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06OnByaW50UmVnaXN0ZXIpOgorICAgICAgICAqIGFzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3LmNwcDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cHJpbnRDUFVS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTXY3OjpwcmludFJlZ2lz
dGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHA6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpwcmludFJlZ2lzdGVyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2
QXNzZW1ibGVyLmg6CisKIDIwMTQtMTEtMTMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZHVjZSBhbW91bnQgb2YgY3V0LWFuZC1wYXN0ZSBuZWVkZWQgZm9yIHBy
b2JlIG1lY2hhbmlzbSBpbXBsZW1lbnRhdGlvbnMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE3NjEzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIFVuaXZl
cnNpdHkgb2YgU3plZ2VkCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTM2LDY2ICszNyw3MCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHR5cGVkZWYgdWludDMy
X3QgQVJNV29yZDsKIAorICAgIHR5cGVkZWYgdm9pZCogR1BSU3RvcmFnZVR5cGU7CisgICAgdHlw
ZWRlZiB2b2lkKiBTUFJTdG9yYWdlVHlwZTsKKyAgICB0eXBlZGVmIGRvdWJsZSBGUFJTdG9yYWdl
VHlwZTsKKwogICAgICNkZWZpbmUgRk9SX0VBQ0hfQ1BVX1JFR0lTVEVSKFYpIFwKICAgICAgICAg
Rk9SX0VBQ0hfQ1BVX0dQUkVHSVNURVIoVikgXAogICAgICAgICBGT1JfRUFDSF9DUFVfU1BFQ0lB
TF9SRUdJU1RFUihWKSBcCiAgICAgICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKFYpCiAKICAg
ICAjZGVmaW5lIEZPUl9FQUNIX0NQVV9HUFJFR0lTVEVSKFYpIFwKLSAgICAgICAgVih2b2lkKiwg
cjApIFwKLSAgICAgICAgVih2b2lkKiwgcjEpIFwKLSAgICAgICAgVih2b2lkKiwgcjIpIFwKLSAg
ICAgICAgVih2b2lkKiwgcjMpIFwKLSAgICAgICAgVih2b2lkKiwgcjQpIFwKLSAgICAgICAgVih2
b2lkKiwgcjUpIFwKLSAgICAgICAgVih2b2lkKiwgcjYpIFwKLSAgICAgICAgVih2b2lkKiwgcjcp
IFwKLSAgICAgICAgVih2b2lkKiwgcjgpIFwKLSAgICAgICAgVih2b2lkKiwgcjkpIFwKLSAgICAg
ICAgVih2b2lkKiwgcjEwKSBcCi0gICAgICAgIFYodm9pZCosIGZwKSBcCi0gICAgICAgIFYodm9p
ZCosIGlwKSBcCi0gICAgICAgIFYodm9pZCosIHNwKSBcCi0gICAgICAgIFYodm9pZCosIGxyKSBc
Ci0gICAgICAgIFYodm9pZCosIHBjKSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHIwKSBc
CisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHIxKSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5
cGUsIHIyKSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHIzKSBcCisgICAgICAgIFYoR1BS
U3RvcmFnZVR5cGUsIHI0KSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHI1KSBcCisgICAg
ICAgIFYoR1BSU3RvcmFnZVR5cGUsIHI2KSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHI3
KSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHI4KSBcCisgICAgICAgIFYoR1BSU3RvcmFn
ZVR5cGUsIHI5KSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHIxMCkgXAorICAgICAgICBW
KEdQUlN0b3JhZ2VUeXBlLCBmcCkgXAorICAgICAgICBWKEdQUlN0b3JhZ2VUeXBlLCBpcCkgXAor
ICAgICAgICBWKEdQUlN0b3JhZ2VUeXBlLCBzcCkgXAorICAgICAgICBWKEdQUlN0b3JhZ2VUeXBl
LCBscikgXAorICAgICAgICBWKEdQUlN0b3JhZ2VUeXBlLCBwYykgXAogCiAgICAgI2RlZmluZSBG
T1JfRUFDSF9DUFVfU1BFQ0lBTF9SRUdJU1RFUihWKSBcCi0gICAgICAgIFYodm9pZCosIGFwc3Ip
IFwKLSAgICAgICAgVih2b2lkKiwgZnBzY3IpIFwKKyAgICAgICAgVihTUFJTdG9yYWdlVHlwZSwg
YXBzcikgXAorICAgICAgICBWKFNQUlN0b3JhZ2VUeXBlLCBmcHNjcikgXAogCiAgICAgI2RlZmlu
ZSBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihWKSBcCi0gICAgICAgIFYoZG91YmxlLCBkMCkgXAot
ICAgICAgICBWKGRvdWJsZSwgZDEpIFwKLSAgICAgICAgVihkb3VibGUsIGQyKSBcCi0gICAgICAg
IFYoZG91YmxlLCBkMykgXAotICAgICAgICBWKGRvdWJsZSwgZDQpIFwKLSAgICAgICAgVihkb3Vi
bGUsIGQ1KSBcCi0gICAgICAgIFYoZG91YmxlLCBkNikgXAotICAgICAgICBWKGRvdWJsZSwgZDcp
IFwKLSAgICAgICAgVihkb3VibGUsIGQ4KSBcCi0gICAgICAgIFYoZG91YmxlLCBkOSkgXAotICAg
ICAgICBWKGRvdWJsZSwgZDEwKSBcCi0gICAgICAgIFYoZG91YmxlLCBkMTEpIFwKLSAgICAgICAg
Vihkb3VibGUsIGQxMikgXAotICAgICAgICBWKGRvdWJsZSwgZDEzKSBcCi0gICAgICAgIFYoZG91
YmxlLCBkMTQpIFwKLSAgICAgICAgVihkb3VibGUsIGQxNSkgXAotICAgICAgICBWKGRvdWJsZSwg
ZDE2KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMTcpIFwKLSAgICAgICAgVihkb3VibGUsIGQxOCkg
XAotICAgICAgICBWKGRvdWJsZSwgZDE5KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMjApIFwKLSAg
ICAgICAgVihkb3VibGUsIGQyMSkgXAotICAgICAgICBWKGRvdWJsZSwgZDIyKSBcCi0gICAgICAg
IFYoZG91YmxlLCBkMjMpIFwKLSAgICAgICAgVihkb3VibGUsIGQyNCkgXAotICAgICAgICBWKGRv
dWJsZSwgZDI1KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMjYpIFwKLSAgICAgICAgVihkb3VibGUs
IGQyNykgXAotICAgICAgICBWKGRvdWJsZSwgZDI4KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMjkp
IFwKLSAgICAgICAgVihkb3VibGUsIGQzMCkgXAotICAgICAgICBWKGRvdWJsZSwgZDMxKSBcCisg
ICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQwKSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUs
IGQxKSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQyKSBcCisgICAgICAgIFYoRlBSU3Rv
cmFnZVR5cGUsIGQzKSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQ0KSBcCisgICAgICAg
IFYoRlBSU3RvcmFnZVR5cGUsIGQ1KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQ2KSBc
CisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQ3KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5
cGUsIGQ4KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQ5KSBcCisgICAgICAgIFYoRlBS
U3RvcmFnZVR5cGUsIGQxMCkgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMTEpIFwKKyAg
ICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDEyKSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUs
IGQxMykgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMTQpIFwKKyAgICAgICAgVihGUFJT
dG9yYWdlVHlwZSwgZDE1KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQxNikgXAorICAg
ICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMTcpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwg
ZDE4KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQxOSkgXAorICAgICAgICBWKEZQUlN0
b3JhZ2VUeXBlLCBkMjApIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDIxKSBcCisgICAg
ICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQyMikgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBk
MjMpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDI0KSBcCisgICAgICAgIFYoRlBSU3Rv
cmFnZVR5cGUsIGQyNSkgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMjYpIFwKKyAgICAg
ICAgVihGUFJTdG9yYWdlVHlwZSwgZDI3KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQy
OCkgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMjkpIFwKKyAgICAgICAgVihGUFJTdG9y
YWdlVHlwZSwgZDMwKSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQzMSkgXAogCiAgICAg
bmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE3NjEzNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsMTAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3R5cGVkZWYgdm9p
ZCogR1BSU3RvcmFnZVR5cGU7Cit0eXBlZGVmIHZvaWQqIFNQUlN0b3JhZ2VUeXBlOwordHlwZWRl
ZiBkb3VibGUgRlBSU3RvcmFnZVR5cGU7IC8vIFRoZSBKSVRzIG9ubHkgc3RvcmVzIGRvdWJsZSB2
YWx1ZXMgaW4gdGhlIEZQIHJlZ2lzdGVycy4KKwogbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7CiAK
ICAgICAjZGVmaW5lIEZPUl9FQUNIX0NQVV9SRUdJU1RFUihWKSBcCkBAIC00OCw2MCArNTIsNjAg
QEAgbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7CiAgICAgLy8gMS4gdHlwZSBvZiB0aGUgc3RvcmFn
ZSBuZWVkZWQgdG8gc2F2ZSB0aGUgcmVnaXN0ZXIgdmFsdWUgYnkgdGhlIEpJVCBwcm9iZS4KICAg
ICAvLyAyLiBuYW1lIG9mIHRoZSByZWdpc3Rlci4KICAgICAjZGVmaW5lIEZPUl9FQUNIX0NQVV9H
UFJFR0lTVEVSKFYpIFwKLSAgICAgICAgVih2b2lkKiwgcjApIFwKLSAgICAgICAgVih2b2lkKiwg
cjEpIFwKLSAgICAgICAgVih2b2lkKiwgcjIpIFwKLSAgICAgICAgVih2b2lkKiwgcjMpIFwKLSAg
ICAgICAgVih2b2lkKiwgcjQpIFwKLSAgICAgICAgVih2b2lkKiwgcjUpIFwKLSAgICAgICAgVih2
b2lkKiwgcjYpIFwKLSAgICAgICAgVih2b2lkKiwgcjcpIFwKLSAgICAgICAgVih2b2lkKiwgcjgp
IFwKLSAgICAgICAgVih2b2lkKiwgcjkpIFwKLSAgICAgICAgVih2b2lkKiwgcjEwKSBcCi0gICAg
ICAgIFYodm9pZCosIHIxMSkgXAotICAgICAgICBWKHZvaWQqLCBpcCkgXAotICAgICAgICBWKHZv
aWQqLCBzcCkgXAotICAgICAgICBWKHZvaWQqLCBscikgXAotICAgICAgICBWKHZvaWQqLCBwYykK
KyAgICAgICAgVihHUFJTdG9yYWdlVHlwZSwgcjApIFwKKyAgICAgICAgVihHUFJTdG9yYWdlVHlw
ZSwgcjEpIFwKKyAgICAgICAgVihHUFJTdG9yYWdlVHlwZSwgcjIpIFwKKyAgICAgICAgVihHUFJT
dG9yYWdlVHlwZSwgcjMpIFwKKyAgICAgICAgVihHUFJTdG9yYWdlVHlwZSwgcjQpIFwKKyAgICAg
ICAgVihHUFJTdG9yYWdlVHlwZSwgcjUpIFwKKyAgICAgICAgVihHUFJTdG9yYWdlVHlwZSwgcjYp
IFwKKyAgICAgICAgVihHUFJTdG9yYWdlVHlwZSwgcjcpIFwKKyAgICAgICAgVihHUFJTdG9yYWdl
VHlwZSwgcjgpIFwKKyAgICAgICAgVihHUFJTdG9yYWdlVHlwZSwgcjkpIFwKKyAgICAgICAgVihH
UFJTdG9yYWdlVHlwZSwgcjEwKSBcCisgICAgICAgIFYoR1BSU3RvcmFnZVR5cGUsIHIxMSkgXAor
ICAgICAgICBWKEdQUlN0b3JhZ2VUeXBlLCBpcCkgXAorICAgICAgICBWKEdQUlN0b3JhZ2VUeXBl
LCBzcCkgXAorICAgICAgICBWKEdQUlN0b3JhZ2VUeXBlLCBscikgXAorICAgICAgICBWKEdQUlN0
b3JhZ2VUeXBlLCBwYykKIAogICAgICNkZWZpbmUgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxfUkVHSVNU
RVIoVikgXAotICAgICAgICBWKHZvaWQqLCBhcHNyKSBcCi0gICAgICAgIFYodm9pZCosIGZwc2Ny
KSBcCisgICAgICAgIFYoU1BSU3RvcmFnZVR5cGUsIGFwc3IpIFwKKyAgICAgICAgVihTUFJTdG9y
YWdlVHlwZSwgZnBzY3IpIFwKIAogICAgICNkZWZpbmUgRk9SX0VBQ0hfQ1BVX0ZQUkVHSVNURVIo
VikgXAotICAgICAgICBWKGRvdWJsZSwgZDApIFwKLSAgICAgICAgVihkb3VibGUsIGQxKSBcCi0g
ICAgICAgIFYoZG91YmxlLCBkMikgXAotICAgICAgICBWKGRvdWJsZSwgZDMpIFwKLSAgICAgICAg
Vihkb3VibGUsIGQ0KSBcCi0gICAgICAgIFYoZG91YmxlLCBkNSkgXAotICAgICAgICBWKGRvdWJs
ZSwgZDYpIFwKLSAgICAgICAgVihkb3VibGUsIGQ3KSBcCi0gICAgICAgIFYoZG91YmxlLCBkOCkg
XAotICAgICAgICBWKGRvdWJsZSwgZDkpIFwKLSAgICAgICAgVihkb3VibGUsIGQxMCkgXAotICAg
ICAgICBWKGRvdWJsZSwgZDExKSBcCi0gICAgICAgIFYoZG91YmxlLCBkMTIpIFwKLSAgICAgICAg
Vihkb3VibGUsIGQxMykgXAotICAgICAgICBWKGRvdWJsZSwgZDE0KSBcCi0gICAgICAgIFYoZG91
YmxlLCBkMTUpIFwKLSAgICAgICAgVihkb3VibGUsIGQxNikgXAotICAgICAgICBWKGRvdWJsZSwg
ZDE3KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMTgpIFwKLSAgICAgICAgVihkb3VibGUsIGQxOSkg
XAotICAgICAgICBWKGRvdWJsZSwgZDIwKSBcCi0gICAgICAgIFYoZG91YmxlLCBkMjEpIFwKLSAg
ICAgICAgVihkb3VibGUsIGQyMikgXAotICAgICAgICBWKGRvdWJsZSwgZDIzKSBcCi0gICAgICAg
IFYoZG91YmxlLCBkMjQpIFwKLSAgICAgICAgVihkb3VibGUsIGQyNSkgXAotICAgICAgICBWKGRv
dWJsZSwgZDI2KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMjcpIFwKLSAgICAgICAgVihkb3VibGUs
IGQyOCkgXAotICAgICAgICBWKGRvdWJsZSwgZDI5KSBcCi0gICAgICAgIFYoZG91YmxlLCBkMzAp
IFwKLSAgICAgICAgVihkb3VibGUsIGQzMSkKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDAp
IFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDEpIFwKKyAgICAgICAgVihGUFJTdG9yYWdl
VHlwZSwgZDIpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDMpIFwKKyAgICAgICAgVihG
UFJTdG9yYWdlVHlwZSwgZDQpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDUpIFwKKyAg
ICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDYpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwg
ZDcpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDgpIFwKKyAgICAgICAgVihGUFJTdG9y
YWdlVHlwZSwgZDkpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDEwKSBcCisgICAgICAg
IFYoRlBSU3RvcmFnZVR5cGUsIGQxMSkgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMTIp
IFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDEzKSBcCisgICAgICAgIFYoRlBSU3RvcmFn
ZVR5cGUsIGQxNCkgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMTUpIFwKKyAgICAgICAg
VihGUFJTdG9yYWdlVHlwZSwgZDE2KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQxNykg
XAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMTgpIFwKKyAgICAgICAgVihGUFJTdG9yYWdl
VHlwZSwgZDE5KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQyMCkgXAorICAgICAgICBW
KEZQUlN0b3JhZ2VUeXBlLCBkMjEpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDIyKSBc
CisgICAgICAgIFYoRlBSU3RvcmFnZVR5cGUsIGQyMykgXAorICAgICAgICBWKEZQUlN0b3JhZ2VU
eXBlLCBkMjQpIFwKKyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDI1KSBcCisgICAgICAgIFYo
RlBSU3RvcmFnZVR5cGUsIGQyNikgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMjcpIFwK
KyAgICAgICAgVihGUFJTdG9yYWdlVHlwZSwgZDI4KSBcCisgICAgICAgIFYoRlBSU3RvcmFnZVR5
cGUsIGQyOSkgXAorICAgICAgICBWKEZQUlN0b3JhZ2VUeXBlLCBkMzApIFwKKyAgICAgICAgVihG
UFJTdG9yYWdlVHlwZSwgZDMxKQogCiAgICAgdHlwZWRlZiBlbnVtIHsKICAgICAgICAgI2RlZmlu
ZSBERUNMQVJFX1JFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgX3JlZ05hbWUsCkBAIC0yMDUsNyAr
MjA5LDcgQEAgbmFtZXNwYWNlIEFSTVJlZ2lzdGVycyB7CiAgICAgICAgIHJldHVybiAoRlBEb3Vi
bGVSZWdpc3RlcklEKShyZWcgPj4gMSk7CiAgICAgfQogCi19IC8vIG5hbWVzcGFjZSBBUk1SZWdp
c3RlcgorfSAvLyBuYW1lc3BhY2UgQVJNUmVnaXN0ZXJzCiAKIGNsYXNzIEFSTXY3QXNzZW1ibGVy
OwogY2xhc3MgQVJNVGh1bWJJbW1lZGlhdGUgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlz
aW9uIDE3NjEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NDQsNiArODQ0LDU1IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIF90eXBlIF9yZWdOYW1lOwogICAgICAgICBGT1JfRUFDSF9DUFVfUkVH
SVNURVIoREVDTEFSRV9SRUdJU1RFUikKICAgICAgICAgI3VuZGVmIERFQ0xBUkVfUkVHSVNURVIK
KworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogcmVnaXN0ZXJOYW1lKFJlZ2lzdGVySUQgcmVn
SUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVnSUQpIHsKKyAgICAgICAgICAg
ICAgICAjZGVmaW5lIERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1lKSBcCisgICAgICAg
ICAgICAgICAgY2FzZSBSZWdpc3RlcklEOjpfcmVnTmFtZTogXAorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gI19yZWdOYW1lOworICAgICAgICAgICAgICAgIEZPUl9FQUNIX0NQVV9HUFJFR0lT
VEVSKERFQ0xBUkVfUkVHSVNURVIpCisgICAgICAgICAgICAgICAgI3VuZGVmIERFQ0xBUkVfUkVH
SVNURVIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogcmVnaXN0ZXJO
YW1lKEZQUmVnaXN0ZXJJRCByZWdJRCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChy
ZWdJRCkgeworICAgICAgICAgICAgICAgICNkZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlwZSwg
X3JlZ05hbWUpIFwKKyAgICAgICAgICAgICAgICBjYXNlIEZQUmVnaXN0ZXJJRDo6X3JlZ05hbWU6
IFwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICNfcmVnTmFtZTsKKyAgICAgICAgICAgICAg
ICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihERUNMQVJFX1JFR0lTVEVSKQorICAgICAgICAgICAg
ICAgICN1bmRlZiBERUNMQVJFX1JFR0lTVEVSCisgICAgICAgICAgICB9CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisKKyAgICAgICAgR1BSU3Rv
cmFnZVR5cGUgcmVnaXN0ZXJWYWx1ZShSZWdpc3RlcklEIHJlZ0lEKQorICAgICAgICB7CisgICAg
ICAgICAgICBzd2l0Y2ggKHJlZ0lEKSB7CisgICAgICAgICAgICAgICAgI2RlZmluZSBERUNMQVJF
X1JFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgXAorICAgICAgICAgICAgICAgIGNhc2UgUmVnaXN0
ZXJJRDo6X3JlZ05hbWU6IFwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdOYW1lOwor
ICAgICAgICAgICAgICAgIEZPUl9FQUNIX0NQVV9HUFJFR0lTVEVSKERFQ0xBUkVfUkVHSVNURVIp
CisgICAgICAgICAgICAgICAgI3VuZGVmIERFQ0xBUkVfUkVHSVNURVIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBGUFJTdG9yYWdlVHlwZSByZWdpc3RlclZhbHVlKEZQUmVnaXN0ZXJJRCByZWdJRCkK
KyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChyZWdJRCkgeworICAgICAgICAgICAgICAg
ICNkZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIFwKKyAgICAgICAgICAg
ICAgICBjYXNlIEZQUmVnaXN0ZXJJRDo6X3JlZ05hbWU6IFwKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIF9yZWdOYW1lOworICAgICAgICAgICAgICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVS
KERFQ0xBUkVfUkVHSVNURVIpCisgICAgICAgICAgICAgICAgI3VuZGVmIERFQ0xBUkVfUkVHSVNU
RVIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIH0KKwogICAgIH07CiAKICAgICBzdHJ1Y3QgUHJvYmVDb250ZXh0OwpAQCAt
ODkxLDkgKzk0MCw1MSBAQCBwdWJsaWM6CiAgICAgICAgICN1bmRlZiBJTkRFTlQKICAgICB9CiAK
KyAgICAvLyBUaGlzIGlzIGEgbWFya2VyIHR5cGUgd2hvc2Ugb25seSBwdXJwb3NlIGlzIHRvIHRl
bGwgcHJpbnQoKSB0bworICAgIC8vIHByaW50IGFsbCB0aGUgY29udGVudHMgb2YgdGhlIENQVS4g
U2VlIHByaW50KCkgYmVsb3cgZm9yIGRldGFpbHMuCisgICAgc3RydWN0IFByaW50Q1BVIHsKKyAg
ICAgICAgUHJpbnRDUFUoaW50IGluZGVudGF0aW9uTGV2ZWwgPSAwKQorICAgICAgICAgICAgOiBp
bmRlbnRhdGlvbihpbmRlbnRhdGlvbkxldmVsKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBpbnQgaW5kZW50YXRpb247CisgICAgfTsKKworICAgIC8vIEVtaXRzIGNvZGUgd2hpY2gg
d2lsbCBwcmludCBkZWJ1Z2dpbmcgaW5mbyBhdCBydW50aW1lLiBUaGUgdHlwZSBvZiB2YWx1ZXMg
dGhhdAorICAgIC8vIGNhbiBiZSBwcmludGVkIGlzIGVuY2Fwc3VsYXRlZCBpbiB0aGUgUHJpbnRB
cmcgc3RydWN0IGJlbG93LiBIZXJlIGFyZSBzb21lCisgICAgLy8gZXhhbXBsZXM6CisgICAgLy8K
KyAgICAvLyAgICAgIHByaW50KCJIZWxsbyB3b3JsZFxuIik7IC8vIEVtaXRzIGNvZGUgdG8gcHJp
bnQgdGhlIHN0cmluZy4KKyAgICAvLworICAgIC8vICAgICAgQ29kZUJsb2NrKiBjYiA9IC4uLjsK
KyAgICAvLyAgICAgIHByaW50KGNiKTsgICAgICAgICAgICAgIC8vIEVtaXRzIGNvZGUgdG8gcHJp
bnQgdGhlIHBvaW50ZXIgdmFsdWUuCisgICAgLy8KKyAgICAvLyAgICAgIFJlZ2lzdGVySUQgcmVn
SUQgPSAuLi47CisgICAgLy8gICAgICBwcmludChyZWdJRCk7ICAgICAgICAgICAvLyBFbWl0cyBj
b2RlIHRvIHByaW50IHRoZSByZWdpc3RlciB2YWx1ZSAobm90IHRoZSBpZCkuCisgICAgLy8KKyAg
ICAvLyAgICAgIC8vIEVtaXRzIGNvZGUgdG8gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZSBDUFUg
KGkuZS4gcHJpbnRzIGFsbCByZWdzKQorICAgIC8vICAgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWVk
IGluZGVudGF0aW9uTGV2ZWwuIFVubGlrZSBvdGhlciBpdGVtcywgdGhlIENQVSBjb250ZW50Cisg
ICAgLy8gICAgICAvLyBpcyBwcmludGVkIG9uIG11bHRpcGxlIGxpbmVzIGUuZy4KKyAgICAvLyAg
ICAgIC8vICAgICAgY3B1IHsKKyAgICAvLyAgICAgIC8vICAgICAgICAgIGVheDogMHgxMjM0NTY3
ODkKKyAgICAvLyAgICAgIC8vICAgICAgICAgIGVieDogMHgwMDAwMDBhYmMKKyAgICAvLyAgICAg
IC8vICAgICAgICAgIC4uLgorICAgIC8vICAgICAgLy8gICAgICB9CisgICAgLy8gICAgICBwcmlu
dChQcmludENQVSgxKSk7ICAgICAvLyBFbWl0cyBjb2RlIHRvIHByaW50IHdpdGggaW5kZW50YXRp
b24gbGV2ZWwgMS4KKyAgICAvLworICAgIC8vICAgICAgLy8gUHJpbnQgbXVsdGlwbGUgdGhpbmdz
IGF0IG9uY2UuIFRoaXMgaW5jdXJzIHRoZSBwcm9iZSBvdmVyaGVhZCBvbmx5IG9uY2UKKyAgICAv
LyAgICAgIC8vIHRvIHByaW50IGFsbCB0aGUgaXRlbXMuCisgICAgLy8gICAgICBwcmludCgiY2I6
IiwgY2IsICIgcmVnSUQ6IiwgcmVnSUQsICIgY3B1OlxuIiwgUHJpbnRDUFUoKSk7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgdm9pZCBwcmludChBcmd1bWVudHMu
Li4gYXJncykKKyAgICB7CisgICAgICAgIHByaW50SW50ZXJuYWwoc3RhdGljX2Nhc3Q8TWFjcm9B
c3NlbWJsZXJUeXBlKj4odGhpcyksIGFyZ3MuLi4pOworICAgIH0KIAogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gd2lsbCBiZSBjYWxsZWQgYnkgcHJpbnRDUFUoKSB0byBwcmludCB0aGUgY29udGVudHMg
b2YgdGhlCi0gICAgLy8gdGFyZ2V0IHNwZWNpZmljIHJlZ2lzdGVycyB3aGljaCBhcmUgc2F2ZWQg
YXdheSBpbiB0aGUgQ1BVSW5mbyBzdHJ1Y3QuCisgICAgLy8gdGFyZ2V0IHNwZWNpZmljIHJlZ2lz
dGVycyB3aGljaCBhcmUgc2F2ZWQgYXdheSBpbiB0aGUgQ1BVU3RhdGUgc3RydWN0LgogICAgIC8v
IHByaW50Q1BVUmVnaXN0ZXJzKCkgc2hvdWxkIG1ha2UgdXNlIG9mIHByaW50SW5kZW50YXRpb24o
KSB0byBwcmludCB0aGUKICAgICAvLyByZWdpc3RlcnMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgYW1v
dW50IG9mIGluZGVudGF0aW9uLgogICAgIC8vCkBAIC05MDMsMTQgKzk5NCwyNSBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYsIGludCBpbmRl
bnRhdGlvbiA9IDApOwogCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBlbWl0cyBjb2RlIHRvIHByZXNl
cnZlIHRoZSBDUFVJbmZvIChlLmcuIHJlZ2lzdGVycyksCi0gICAgLy8gY2FsbCBhIHVzZXIgc3Vw
cGxpZWQgcHJvYmUgZnVuY3Rpb24sIGFuZCByZXN0b3JlIHRoZSBDUFVJbmZvIGJlZm9yZQorICAg
IC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYnkgcHJpbnQoKSB0byBwcmludCB0aGUg
Y29udGVudHMgb2YgYQorICAgIC8vIHNwZWNpZmljIHJlZ2lzdGVyIChmcm9tIHRoZSBDUFVTdGF0
ZSkgaW4gbGluZSB3aXRoIG90aGVyIGl0ZW1zIGluIHRoZQorICAgIC8vIHByaW50IHN0cmVhbS4g
SGVuY2UsIG5vIGluZGVudGF0aW9uIGlzIG5lZWRlZC4KKyAgICAvLworICAgIC8vIE5vdGU6IHBy
aW50UmVnaXN0ZXIoKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgdGhlIHRhcmdldCBzcGVjaWZp
YworICAgIC8vIE1hY3JvQXNzZW1ibGVyLiBUaGVzZSBwcm90b3R5cGVzIGFyZSBvbmx5IHByb3Zp
ZGVkIGhlcmUgdG8gZG9jdW1lbnQgdGhlaXIKKyAgICAvLyBpbnRlcmZhY2UuCisKKyAgICBzdGF0
aWMgdm9pZCBwcmludFJlZ2lzdGVyKENQVVN0YXRlJiwgUmVnaXN0ZXJJRCk7CisgICAgc3RhdGlj
IHZvaWQgcHJpbnRSZWdpc3RlcihDUFVTdGF0ZSYsIEZQUmVnaXN0ZXJJRCk7CisKKyAgICAvLyBU
aGlzIGZ1bmN0aW9uIGVtaXRzIGNvZGUgdG8gcHJlc2VydmUgdGhlIENQVVN0YXRlIChlLmcuIHJl
Z2lzdGVycyksCisgICAgLy8gY2FsbCBhIHVzZXIgc3VwcGxpZWQgcHJvYmUgZnVuY3Rpb24sIGFu
ZCByZXN0b3JlIHRoZSBDUFVTdGF0ZSBiZWZvcmUKICAgICAvLyBjb250aW51aW5nIHdpdGggb3Ro
ZXIgSklUIGdlbmVyYXRlZCBjb2RlLgogICAgIC8vCiAgICAgLy8gVGhlIHVzZXIgc3VwcGxpZWQg
cHJvYmUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCBhIHNpbmdsZSBwb2ludGVyIHRvCiAg
ICAgLy8gYSBQcm9iZUNvbnRleHQgc3RydWN0IChkZWZpbmVkIGFib3ZlKSB3aGljaCBjb250YWlu
cywgYW1vbmcgb3RoZXIgdGhpbmdzLAotICAgIC8vIHRoZSBwcmVzZXJ2ZWQgQ1BVSW5mby4gVGhp
cyBhbGxvd3MgdGhlIHVzZXIgcHJvYmUgZnVuY3Rpb24gdG8gaW5zcGVjdAotICAgIC8vIHRoZSBD
UFVJbmZvIGF0IHRoYXQgcG9pbnQgaW4gdGhlIEpJVCBnZW5lcmF0ZWQgY29kZS4KKyAgICAvLyB0
aGUgcHJlc2VydmVkIENQVVN0YXRlLiBUaGlzIGFsbG93cyB0aGUgdXNlciBwcm9iZSBmdW5jdGlv
biB0byBpbnNwZWN0CisgICAgLy8gdGhlIENQVVN0YXRlIGF0IHRoYXQgcG9pbnQgaW4gdGhlIEpJ
VCBnZW5lcmF0ZWQgY29kZS4KICAgICAvLwogICAgIC8vIElmIHRoZSB1c2VyIHByb2JlIGZ1bmN0
aW9uIGFsdGVycyB0aGUgcmVnaXN0ZXIgdmFsdWVzIGluIHRoZSBQcm9iZUNvbnRleHQsCiAgICAg
Ly8gdGhlIGFsdGVyZWQgdmFsdWVzIHdpbGwgYmUgbG9hZGVkIGludG8gdGhlIENQVSByZWdpc3Rl
cnMgd2hlbiB0aGUgcHJvYmUKQEAgLTEwODUsNyArMTE4NywxNDcgQEAgcHJvdGVjdGVkOgogICAg
IHsKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24o
bGFiZWwuZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KLX07CisKK3ByaXZhdGU6CisKKyNpZiBFTkFC
TEUoTUFTTV9QUk9CRSkKKworICAgIHN0cnVjdCBQcmludEFyZyB7CisgICAgCisgICAgICAgIGVu
dW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBDcHUsCisgICAgICAgICAgICBSZWdpc3RlcklE
LAorICAgICAgICAgICAgRlBSZWdpc3RlcklELAorICAgICAgICAgICAgQ29uc3RDaGFyUHRyLAor
ICAgICAgICAgICAgQ29uc3RWb2lkUHRyLAorICAgICAgICAgICAgSW50cHRyVmFsdWUsCisgICAg
ICAgICAgICBVaW50cHRyVmFsdWUsCisgICAgICAgIH07CisKKyAgICAgICAgUHJpbnRBcmcoUHJp
bnRDUFUmIHJlcXVlc3QpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6Q3B1KQorICAgICAgICB7
CisgICAgICAgICAgICB1LmluZGVudGF0aW9uID0gcmVxdWVzdC5pbmRlbnRhdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIFByaW50QXJnKFJlZ2lzdGVySUQgcmVnSUQpCisgICAgICAgICAgICA6
IHR5cGUoVHlwZTo6UmVnaXN0ZXJJRCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5ncFJlZ2lz
dGVySUQgPSByZWdJRDsKKyAgICAgICAgfQorCisgICAgICAgIFByaW50QXJnKEZQUmVnaXN0ZXJJ
RCByZWdJRCkKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpGUFJlZ2lzdGVySUQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHUuZnBSZWdpc3RlcklEID0gcmVnSUQ7CisgICAgICAgIH0KKworICAg
ICAgICBQcmludEFyZyhjb25zdCBjaGFyKiBwdHIpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6
Q29uc3RDaGFyUHRyKQorICAgICAgICB7CisgICAgICAgICAgICB1LmNvbnN0Q2hhclB0ciA9IHB0
cjsKKyAgICAgICAgfQorCisgICAgICAgIFByaW50QXJnKGNvbnN0IHZvaWQqIHB0cikKKyAgICAg
ICAgICAgIDogdHlwZShUeXBlOjpDb25zdFZvaWRQdHIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHUuY29uc3RWb2lkUHRyID0gcHRyOworICAgICAgICB9CisKKyAgICAgICAgUHJpbnRBcmcoaW50
IHZhbHVlKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OkludHB0clZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICB1LmludHB0clZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAg
ICBQcmludEFyZyh1bnNpZ25lZCB2YWx1ZSkKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpVaW50
cHRyVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50cHRyVmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgfQorCisgICAgICAgIFByaW50QXJnKGludHB0cl90IHZhbHVlKQorICAgICAgICAg
ICAgOiB0eXBlKFR5cGU6OkludHB0clZhbHVlKQorICAgICAgICB7CisgICAgICAgICAgICB1Lmlu
dHB0clZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBQcmludEFyZyh1aW50cHRy
X3QgdmFsdWUpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6VWludHB0clZhbHVlKQorICAgICAg
ICB7CisgICAgICAgICAgICB1LnVpbnRwdHJWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisKKyAg
ICAgICAgVHlwZSB0eXBlOworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBpbnQgaW5kZW50
YXRpb247CisgICAgICAgICAgICBSZWdpc3RlcklEIGdwUmVnaXN0ZXJJRDsKKyAgICAgICAgICAg
IEZQUmVnaXN0ZXJJRCBmcFJlZ2lzdGVySUQ7CisgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25z
dENoYXJQdHI7CisgICAgICAgICAgICBjb25zdCB2b2lkKiBjb25zdFZvaWRQdHI7CisgICAgICAg
ICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKKyAgICAgICAgICAgIHVpbnRwdHJfdCB1aW50cHRy
VmFsdWU7CisgICAgICAgIH0gdTsKKyAgICB9OworCisgICAgdHlwZWRlZiBWZWN0b3I8UHJpbnRB
cmc+IFByaW50QXJnc0xpc3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdEFyZywgdHlw
ZW5hbWUuLi4gQXJndW1lbnRzPgorICAgIHN0YXRpYyB2b2lkIGFwcGVuZFByaW50QXJnKFByaW50
QXJnc0xpc3QqIGFyZ3NMaXN0LCBGaXJzdEFyZyYgZmlyc3RBcmcsIEFyZ3VtZW50cy4uLiBvdGhl
ckFyZ3MpCisgICAgeworICAgICAgICBhcmdzTGlzdC0+YXBwZW5kKFByaW50QXJnKGZpcnN0QXJn
KSk7CisgICAgICAgIGFwcGVuZFByaW50QXJnKGFyZ3NMaXN0LCBvdGhlckFyZ3MuLi4pOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGVuZFByaW50QXJnKFByaW50QXJnc0xpc3QqKSB7IH0K
KworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMg
dm9pZCBwcmludEludGVybmFsKE1hY3JvQXNzZW1ibGVyVHlwZSogbWFzbSwgQXJndW1lbnRzLi4u
IGFyZ3MpCisgICAgeworICAgICAgICBleHRlcm4gdm9pZCBtYWNyb0Fzc2VtYmxlclByaW50KFBy
b2JlQ29udGV4dCopOworCisgICAgICAgIGF1dG8gYXJnc0xpc3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PFByaW50QXJnc0xpc3Q+KCk7CisgICAgICAgIGFwcGVuZFByaW50QXJnKGFyZ3NMaXN0LmdldCgp
LCBhcmdzLi4uKTsKKyAgICAgICAgbWFzbS0+cHJvYmUocHJpbnRDYWxsYmFjaywgYXJnc0xpc3Qu
cmVsZWFzZSgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBwcmludENhbGxiYWNrKFByb2Jl
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgUHJpbnRBcmcgQXJnOwor
ICAgICAgICBQcmludEFyZ3NMaXN0JiBhcmdzTGlzdCA9CisgICAgICAgICAgICAqcmVpbnRlcnBy
ZXRfY2FzdDxQcmludEFyZ3NMaXN0Kj4oY29udGV4dC0+YXJnMSk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXJnc0xpc3Quc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGF1dG8m
IGFyZyA9IGFyZ3NMaXN0W2ldOworICAgICAgICAgICAgc3dpdGNoIChhcmcudHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBBcmc6OlR5cGU6OkNwdToKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
YmxlclR5cGU6OnByaW50Q1BVKGNvbnRleHQtPmNwdSwgYXJnLnUuaW5kZW50YXRpb24pOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcmc6OlR5cGU6OlJlZ2lzdGVy
SUQ6CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJUeXBlOjpwcmludFJlZ2lzdGVyKGNv
bnRleHQtPmNwdSwgYXJnLnUuZ3BSZWdpc3RlcklEKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQXJnOjpUeXBlOjpGUFJlZ2lzdGVySUQ6CisgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJUeXBlOjpwcmludFJlZ2lzdGVyKGNvbnRleHQtPmNwdSwgYXJnLnUu
ZnBSZWdpc3RlcklEKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
QXJnOjpUeXBlOjpDb25zdENoYXJQdHI6CisgICAgICAgICAgICAgICAgZGF0YUxvZyhhcmcudS5j
b25zdENoYXJQdHIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBB
cmc6OlR5cGU6OkNvbnN0Vm9pZFB0cjoKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXAiLCBh
cmcudS5jb25zdFZvaWRQdHIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBcmc6OlR5cGU6OkludHB0clZhbHVlOgorICAgICAgICAgICAgICAgIGRhdGFMb2coYXJn
LnUuaW50cHRyVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBBcmc6OlR5cGU6OlVpbnRwdHJWYWx1ZToKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGFyZy51
LnVpbnRwdHJWYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKworfTsgLy8g
Y2xhc3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTS5jcHAJKHJldmlzaW9uIDE3NjEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMjUg
KzEwMSw0NyBAQCB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoVW5hbGlnCiAKIHZv
aWQgTWFjcm9Bc3NlbWJsZXJBUk06OnByaW50Q1BVUmVnaXN0ZXJzKENQVVN0YXRlJiBjcHUsIGlu
dCBpbmRlbnRhdGlvbikKIHsKLSAgICAjZGVmaW5lIERVTVBfR1BSRUdJU1RFUihfdHlwZSwgX3Jl
Z05hbWUpIHsgXAorICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUp
IHsgXAogICAgICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90Pihj
cHUuX3JlZ05hbWUpOyBcCiAgICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1czogMHglMDh4ICAl
ZFxuIiwgI19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAogICAgIH0KLSAgICBGT1JfRUFDSF9D
UFVfR1BSRUdJU1RFUihEVU1QX0dQUkVHSVNURVIpCi0gICAgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxf
UkVHSVNURVIoRFVNUF9HUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0dQUkVHSVNURVIKKyAg
ICBGT1JfRUFDSF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgIEZPUl9FQUNI
X0NQVV9TUEVDSUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCisgICAgI3VuZGVmIFBSSU5U
X0dQUkVHSVNURVIKIAotICAgICNkZWZpbmUgRFVNUF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFt
ZSkgeyBcCisgICAgI2RlZmluZSBQUklOVF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBc
CiAgICAgICAgIHVpbnQ2NF90KiB1ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZjcHUu
X3JlZ05hbWUpOyBcCiAgICAgICAgIGRvdWJsZSogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZG91Ymxl
Kj4oJmNwdS5fcmVnTmFtZSk7IFwKICAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTVzOiAweCUw
MTZsbHggICUuMTNnXG4iLCAjX3JlZ05hbWUsICp1LCAqZCk7IFwKICAgICB9Ci0gICAgRk9SX0VB
Q0hfQ1BVX0ZQUkVHSVNURVIoRFVNUF9GUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0ZQUkVH
SVNURVIKKyAgICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihQUklOVF9GUFJFR0lTVEVSKQorICAg
ICN1bmRlZiBQUklOVF9GUFJFR0lTVEVSCiB9CiAKICN1bmRlZiBJTkRFTlQKIAordm9pZCBNYWNy
b0Fzc2VtYmxlckFSTTo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlckFSTTo6Q1BVU3RhdGUm
IGNwdSwgUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3Rh
dGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24geworICAgICAgICB2b2lkKiB2b2lk
UHRyOworICAgICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKKyAgICB9IHU7CisgICAgdS52b2lk
UHRyID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8JXAgJWxk
PiIsIG5hbWUsIHUudm9pZFB0ciwgdS5pbnRwdHJWYWx1ZSk7Cit9CisKK3ZvaWQgTWFjcm9Bc3Nl
bWJsZXJBUk06OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk06OkNQVVN0YXRlJiBjcHUs
IEZQUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6
OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24geworICAgICAgICBkb3VibGUgZG91Ymxl
VmFsdWU7CisgICAgICAgIHVpbnQ2NF90IHVpbnQ2NFZhbHVlOworICAgIH0gdTsKKyAgICB1LmRv
dWJsZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8
MHglMDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUudWludDY0VmFsdWUsIHUuZG91YmxlVmFsdWUpOwor
fQorCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOwogCiAvLyBGb3Ig
ZGV0YWlscyBvbiAiV2hhdCBjb2RlIGlzIGVtaXR0ZWQgZm9yIHRoZSBwcm9iZT8iIGFuZCAiV2hh
dCB2YWx1ZXMgYXJlIGluCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAxNzYxMzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MzYsNiArMTQzNiw4IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIHJlcXVpcmVk
IGJ5IHRoZSBNQVNNX1BST0JFIG1lY2hhbmlzbSBhcyBkZWZpbmVkIGluCiAgICAgLy8gQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlci5oLiAKICAgICBzdGF0aWMgdm9pZCBwcmludENQVVJlZ2lzdGVycyhD
UFVTdGF0ZSYsIGludCBpbmRlbnRhdGlvbiA9IDApOworICAgIHN0YXRpYyB2b2lkIHByaW50UmVn
aXN0ZXIoQ1BVU3RhdGUmLCBSZWdpc3RlcklEKTsKKyAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lz
dGVyKENQVVN0YXRlJiwgRlBSZWdpc3RlcklEKTsKICAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rp
b24sIHZvaWQqIGFyZzEgPSAwLCB2b2lkKiBhcmcyID0gMCk7CiAjZW5kaWYgLy8gRU5BQkxFKE1B
U01fUFJPQkUpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk12Ny5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkocmV2aXNpb24gMTc2MTM1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzYsMjUgKzM2LDQ3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIE1hY3Jv
QXNzZW1ibGVyQVJNdjc6OnByaW50Q1BVUmVnaXN0ZXJzKENQVVN0YXRlJiBjcHUsIGludCBpbmRl
bnRhdGlvbikKIHsKLSAgICAjZGVmaW5lIERVTVBfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUp
IHsgXAorICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsgXAog
ICAgICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihjcHUuX3Jl
Z05hbWUpOyBcCiAgICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1czogMHglMDh4ICAlZFxuIiwg
I19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAogICAgIH0KLSAgICBGT1JfRUFDSF9DUFVfR1BS
RUdJU1RFUihEVU1QX0dQUkVHSVNURVIpCi0gICAgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxfUkVHSVNU
RVIoRFVNUF9HUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0dQUkVHSVNURVIKKyAgICBGT1Jf
RUFDSF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgIEZPUl9FQUNIX0NQVV9T
UEVDSUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCisgICAgI3VuZGVmIFBSSU5UX0dQUkVH
SVNURVIKIAotICAgICNkZWZpbmUgRFVNUF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBc
CisgICAgI2RlZmluZSBQUklOVF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBcCiAgICAg
ICAgIHVpbnQ2NF90KiB1ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZjcHUuX3JlZ05h
bWUpOyBcCiAgICAgICAgIGRvdWJsZSogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZG91YmxlKj4oJmNw
dS5fcmVnTmFtZSk7IFwKICAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTVzOiAweCUwMTZsbHgg
ICUuMTNnXG4iLCAjX3JlZ05hbWUsICp1LCAqZCk7IFwKICAgICB9Ci0gICAgRk9SX0VBQ0hfQ1BV
X0ZQUkVHSVNURVIoRFVNUF9GUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0ZQUkVHSVNURVIK
KyAgICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihQUklOVF9GUFJFR0lTVEVSKQorICAgICN1bmRl
ZiBQUklOVF9GUFJFR0lTVEVSCiB9CiAKICN1bmRlZiBJTkRFTlQKIAordm9pZCBNYWNyb0Fzc2Vt
YmxlckFSTXY3OjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNdjc6OkNQVVN0YXRlJiBj
cHUsIFJlZ2lzdGVySUQgcmVnSUQpCit7CisgICAgY29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRl
OjpyZWdpc3Rlck5hbWUocmVnSUQpOworICAgIHVuaW9uIHsKKyAgICAgICAgdm9pZCogdm9pZFB0
cjsKKyAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7CisgICAgfSB1OworICAgIHUudm9pZFB0
ciA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKKyAgICBkYXRhTG9nRigiJXM6PCVwICVsZD4i
LCBuYW1lLCB1LnZvaWRQdHIsIHUuaW50cHRyVmFsdWUpOworfQorCit2b2lkIE1hY3JvQXNzZW1i
bGVyQVJNdjc6OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk12Nzo6Q1BVU3RhdGUmIGNw
dSwgRlBSZWdpc3RlcklEIHJlZ0lEKQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBDUFVTdGF0
ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkb3Vi
bGVWYWx1ZTsKKyAgICAgICAgdWludDY0X3QgdWludDY0VmFsdWU7CisgICAgfSB1OworICAgIHUu
ZG91YmxlVmFsdWUgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7CisgICAgZGF0YUxvZ0YoIiVz
OjwweCUwMTZsbHggJS4xM2c+IiwgbmFtZSwgdS51aW50NjRWYWx1ZSwgdS5kb3VibGVWYWx1ZSk7
Cit9CisKIGV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CiAKIC8vIEZv
ciBkZXRhaWxzIG9uICJXaGF0IGNvZGUgaXMgZW1pdHRlZCBmb3IgdGhlIHByb2JlPyIgYW5kICJX
aGF0IHZhbHVlcyBhcmUgaW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxNzYxMzUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29y
a2luZyBjb3B5KQpAQCAtMTkwNSw2ICsxOTA1LDggQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMg
cmVxdWlyZWQgYnkgdGhlIE1BU01fUFJPQkUgbWVjaGFuaXNtIGFzIGRlZmluZWQgaW4KICAgICAv
LyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmguIAogICAgIHN0YXRpYyB2b2lkIHByaW50Q1BVUmVn
aXN0ZXJzKENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0gMCk7CisgICAgc3RhdGljIHZvaWQg
cHJpbnRSZWdpc3RlcihDUFVTdGF0ZSYsIFJlZ2lzdGVySUQpOworICAgIHN0YXRpYyB2b2lkIHBy
aW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBGUFJlZ2lzdGVySUQpOwogICAgIHZvaWQgcHJvYmUoUHJv
YmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsKICNlbmRpZiAvLyBF
TkFCTEUoTUFTTV9QUk9CRSkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAJKHJldmlzaW9u
IDE3NjEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwyOCBAQCB2b2lkIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpwcmludENQVVJlCiAKICN1bmRlZiBJTkRFTlQKIAordm9p
ZCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbjo6Q1BVU3RhdGUmIGNwdSwgUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBj
aGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24gewor
ICAgICAgICB2b2lkKiB2b2lkUHRyOworICAgICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKKyAg
ICB9IHU7CisgICAgdS52b2lkUHRyID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRh
dGFMb2dGKCIlczo8JXAgJWxkPiIsIG5hbWUsIHUudm9pZFB0ciwgdS5pbnRwdHJWYWx1ZSk7Cit9
CisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OkNQVVN0YXRlJiBjcHUsIEZQUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAg
ICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAg
dW5pb24geworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAgICAgIHVpbnQ2NF90IHVp
bnQ2NFZhbHVlOworICAgIH0gdTsKKyAgICB1LmRvdWJsZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFs
dWUocmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8MHglMDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUu
dWludDY0VmFsdWUsIHUuZG91YmxlVmFsdWUpOworfQorCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFz
bVByb2JlVHJhbXBvbGluZSgpOwogCiAvLyBXaGF0IGNvZGUgaXMgZW1pdHRlZCBmb3IgdGhlIHBy
b2JlPwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTc2MTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xNDczLDYgKzE0NzMsOCBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyByZXF1
aXJlZCBieSB0aGUgTUFTTV9QUk9CRSBtZWNoYW5pc20gYXMgZGVmaW5lZCBpbgogICAgIC8vIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaC4gCiAgICAgc3RhdGljIHZvaWQgcHJpbnRDUFVSZWdpc3Rl
cnMoQ1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBwcmlu
dFJlZ2lzdGVyKENQVVN0YXRlJiwgUmVnaXN0ZXJJRCk7CisgICAgc3RhdGljIHZvaWQgcHJpbnRS
ZWdpc3RlcihDUFVTdGF0ZSYsIEZQUmVnaXN0ZXJJRCk7CiAgICAgdm9pZCBwcm9iZShQcm9iZUZ1
bmN0aW9uLCB2b2lkKiBhcmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwogI2VuZGlmIC8vIEVOQUJM
RShNQVNNX1BST0JFKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4
NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDE3NjEzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiBpbmxpbmUgYm9vbCBDQU5fU0lHTl9FWFRFTkRfOF8z
MihpbnQzMl90IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAoaW50MzJfdCkoc2lnbmVkIGNoYXIp
dmFsdWU7IH0KIAordHlwZWRlZiB2b2lkKiBHUFJTdG9yYWdlVHlwZTsKK3R5cGVkZWYgdm9pZCog
U1BSU3RvcmFnZVR5cGU7Cit0eXBlZGVmIGRvdWJsZSBGUFJTdG9yYWdlVHlwZTsgLy8gVGhlIEpJ
VHMgb25seSBzdG9yZXMgZG91YmxlIHZhbHVlcyBpbiB0aGUgRlAgcmVnaXN0ZXJzLgorCiBuYW1l
c3BhY2UgWDg2UmVnaXN0ZXJzIHsKIAogI2RlZmluZSBGT1JfRUFDSF9DUFVfUkVHSVNURVIoVikg
XApAQCAtNTAsMzAgKzU0LDI5IEBAIG5hbWVzcGFjZSBYODZSZWdpc3RlcnMgewogLy8gMS4gdHlw
ZSBvZiB0aGUgc3RvcmFnZSBuZWVkZWQgdG8gc2F2ZSB0aGUgcmVnaXN0ZXIgdmFsdWUgYnkgdGhl
IEpJVCBwcm9iZS4KIC8vIDIuIG5hbWUgb2YgdGhlIHJlZ2lzdGVyLgogI2RlZmluZSBGT1JfRUFD
SF9DUFVfR1BSRUdJU1RFUihWKSBcCi0gICAgVih2b2lkKiwgZWF4KSBcCi0gICAgVih2b2lkKiwg
ZWN4KSBcCi0gICAgVih2b2lkKiwgZWR4KSBcCi0gICAgVih2b2lkKiwgZWJ4KSBcCi0gICAgVih2
b2lkKiwgZXNwKSBcCi0gICAgVih2b2lkKiwgZWJwKSBcCi0gICAgVih2b2lkKiwgZXNpKSBcCi0g
ICAgVih2b2lkKiwgZWRpKSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgZWF4KSBcCisgICAgVihH
UFJTdG9yYWdlVHlwZSwgZWN4KSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgZWR4KSBcCisgICAg
VihHUFJTdG9yYWdlVHlwZSwgZWJ4KSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgZXNwKSBcCisg
ICAgVihHUFJTdG9yYWdlVHlwZSwgZWJwKSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgZXNpKSBc
CisgICAgVihHUFJTdG9yYWdlVHlwZSwgZWRpKSBcCiAgICAgRk9SX0VBQ0hfWDg2XzY0X0NQVV9H
UFJFR0lTVEVSKFYpCiAKICNkZWZpbmUgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxfUkVHSVNURVIoVikg
XAotICAgIFYodm9pZCosIGVpcCkgXAotICAgIFYodm9pZCosIGVmbGFncykgXAorICAgIFYoU1BS
U3RvcmFnZVR5cGUsIGVpcCkgXAorICAgIFYoU1BSU3RvcmFnZVR5cGUsIGVmbGFncykgXAogCi0v
LyBOb3RlOiB0aGUgSklUcyBvbmx5IHN0b3JlcyBkb3VibGUgdmFsdWVzIGluIHRoZSBGUCByZWdp
c3RlcnMuCiAjZGVmaW5lIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKFYpIFwKLSAgICBWKGRvdWJs
ZSwgeG1tMCkgXAotICAgIFYoZG91YmxlLCB4bW0xKSBcCi0gICAgVihkb3VibGUsIHhtbTIpIFwK
LSAgICBWKGRvdWJsZSwgeG1tMykgXAotICAgIFYoZG91YmxlLCB4bW00KSBcCi0gICAgVihkb3Vi
bGUsIHhtbTUpIFwKLSAgICBWKGRvdWJsZSwgeG1tNikgXAotICAgIFYoZG91YmxlLCB4bW03KSBc
CisgICAgVihGUFJTdG9yYWdlVHlwZSwgeG1tMCkgXAorICAgIFYoRlBSU3RvcmFnZVR5cGUsIHht
bTEpIFwKKyAgICBWKEZQUlN0b3JhZ2VUeXBlLCB4bW0yKSBcCisgICAgVihGUFJTdG9yYWdlVHlw
ZSwgeG1tMykgXAorICAgIFYoRlBSU3RvcmFnZVR5cGUsIHhtbTQpIFwKKyAgICBWKEZQUlN0b3Jh
Z2VUeXBlLCB4bW01KSBcCisgICAgVihGUFJTdG9yYWdlVHlwZSwgeG1tNikgXAorICAgIFYoRlBS
U3RvcmFnZVR5cGUsIHhtbTcpIFwKICAgICBGT1JfRUFDSF9YODZfNjRfQ1BVX0ZQUkVHSVNURVIo
VikKIAogI2lmIENQVShYODYpCkBAIC04NCwyNCArODcsMjQgQEAgbmFtZXNwYWNlIFg4NlJlZ2lz
dGVycyB7CiAjZWxpZiBDUFUoWDg2XzY0KQogCiAjZGVmaW5lIEZPUl9FQUNIX1g4Nl82NF9DUFVf
R1BSRUdJU1RFUihWKSBcCi0gICAgVih2b2lkKiwgcjgpIFwKLSAgICBWKHZvaWQqLCByOSkgXAot
ICAgIFYodm9pZCosIHIxMCkgXAotICAgIFYodm9pZCosIHIxMSkgXAotICAgIFYodm9pZCosIHIx
MikgXAotICAgIFYodm9pZCosIHIxMykgXAotICAgIFYodm9pZCosIHIxNCkgXAotICAgIFYodm9p
ZCosIHIxNSkKKyAgICBWKEdQUlN0b3JhZ2VUeXBlLCByOCkgXAorICAgIFYoR1BSU3RvcmFnZVR5
cGUsIHI5KSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgcjEwKSBcCisgICAgVihHUFJTdG9yYWdl
VHlwZSwgcjExKSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgcjEyKSBcCisgICAgVihHUFJTdG9y
YWdlVHlwZSwgcjEzKSBcCisgICAgVihHUFJTdG9yYWdlVHlwZSwgcjE0KSBcCisgICAgVihHUFJT
dG9yYWdlVHlwZSwgcjE1KQogCiAjZGVmaW5lIEZPUl9FQUNIX1g4Nl82NF9DUFVfRlBSRUdJU1RF
UihWKSBcCi0gICAgVihkb3VibGUsIHhtbTgpIFwKLSAgICBWKGRvdWJsZSwgeG1tOSkgXAotICAg
IFYoZG91YmxlLCB4bW0xMCkgXAotICAgIFYoZG91YmxlLCB4bW0xMSkgXAotICAgIFYoZG91Ymxl
LCB4bW0xMikgXAotICAgIFYoZG91YmxlLCB4bW0xMykgXAotICAgIFYoZG91YmxlLCB4bW0xNCkg
XAotICAgIFYoZG91YmxlLCB4bW0xNSkKKyAgICBWKEZQUlN0b3JhZ2VUeXBlLCB4bW04KSBcCisg
ICAgVihGUFJTdG9yYWdlVHlwZSwgeG1tOSkgXAorICAgIFYoRlBSU3RvcmFnZVR5cGUsIHhtbTEw
KSBcCisgICAgVihGUFJTdG9yYWdlVHlwZSwgeG1tMTEpIFwKKyAgICBWKEZQUlN0b3JhZ2VUeXBl
LCB4bW0xMikgXAorICAgIFYoRlBSU3RvcmFnZVR5cGUsIHhtbTEzKSBcCisgICAgVihGUFJTdG9y
YWdlVHlwZSwgeG1tMTQpIFwKKyAgICBWKEZQUlN0b3JhZ2VUeXBlLCB4bW0xNSkKIAogI2VuZGlm
IC8vIENQVShYODZfNjQpCiAK
</data>
<flag name="review"
          id="266515"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241736</attachid>
            <date>2014-11-17 12:51:47 -0800</date>
            <delta_ts>2014-11-17 12:55:16 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>bug-138660.patch</filename>
            <type>text/plain</type>
            <size>20134</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2MjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE0LTExLTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgcHJpbnRpbmcgZnVuY3Rpb25hbGl0eSBpbiBKSVR0ZWQgY29kZSBmb3IgZGVidWdnaW5nIHB1
cnBvc2VzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM4NjYwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aW1lcywgZm9yIGRl
YnVnZ2luZywgaXQnZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8ganVzdCBwcmludCB0aGUKKyAgICAg
ICAgdmFsdWVzIG9mIGNvbnN0YW50cyBvciByZWdpc3RlcnMgdXNlZCBpbiBKSVR0ZWQgY29kZSwg
b3IgZXZlbiBqdXN0CisgICAgICAgIGEgc3RyaW5nIHRvIGxvZyB0aGF0IGNlcnRhaW4gcGllY2Vz
IG9mIEpJVHRlZCBjb2RlIGhhdmUgYmVlbiBleGVjdXRlZC4KKyAgICAgICAgVXNpbmcgdGhlIEpJ
VCBwcm9iZSBtZWNoYW5pc20sIHdlIGNhbiBtYWtlIHRoaXMgaGFwcGVuLgorCisgICAgICAgICog
YXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OnJlZ2lzdGVyTmFtZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OkNQVVN0YXRlOjpyZWdpc3RlclZhbHVlKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6cHJpbnQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpQcmludEFyZzo6UHJpbnRBcmcpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjphcHBlbmRQcmludEFyZyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpwcmludENhbGxiYWNrKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cHJpbnRDUFVSZWdpc3Rl
cnMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cHJpbnRSZWdpc3Rlcik6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpwcmludENQVVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnByaW50UmVnaXN0ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50UmVnaXN0ZXIp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorCiAyMDE0
LTExLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IEphdmFTY3JpcHRDb3JlIGJ1aWxkIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxl
ci5oCShyZXZpc2lvbiAxNzYyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCBuYW1l
c3BhY2UgQVJNUmVnaXN0ZXJzIHsKICAgICAgICAgcmV0dXJuIChGUERvdWJsZVJlZ2lzdGVySUQp
KHJlZyA+PiAxKTsKICAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIEFSTVJlZ2lzdGVyCit9IC8vIG5h
bWVzcGFjZSBBUk1SZWdpc3RlcnMKIAogY2xhc3MgQVJNdjdBc3NlbWJsZXI7CiBjbGFzcyBBUk1U
aHVtYkltbWVkaWF0ZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTc2MjE2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0NCw2ICs4NDQsNTUgQEAgcHVibGljOgogICAgICAgICAg
ICAgX3R5cGUgX3JlZ05hbWU7CiAgICAgICAgIEZPUl9FQUNIX0NQVV9SRUdJU1RFUihERUNMQVJF
X1JFR0lTVEVSKQogICAgICAgICAjdW5kZWYgREVDTEFSRV9SRUdJU1RFUgorCisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiByZWdpc3Rlck5hbWUoUmVnaXN0ZXJJRCByZWdJRCkKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChyZWdJRCkgeworICAgICAgICAgICAgICAgICNkZWZpbmUg
REVDTEFSRV9SRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIFwKKyAgICAgICAgICAgICAgICBjYXNl
IFJlZ2lzdGVySUQ6Ol9yZWdOYW1lOiBcCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAjX3Jl
Z05hbWU7CisgICAgICAgICAgICAgICAgRk9SX0VBQ0hfQ1BVX0dQUkVHSVNURVIoREVDTEFSRV9S
RUdJU1RFUikKKyAgICAgICAgICAgICAgICAjdW5kZWYgREVDTEFSRV9SRUdJU1RFUgorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZWdpc3Rlck5hbWUoRlBSZWdpc3Rl
cklEIHJlZ0lEKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHJlZ0lEKSB7CisgICAg
ICAgICAgICAgICAgI2RlZmluZSBERUNMQVJFX1JFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgXAor
ICAgICAgICAgICAgICAgIGNhc2UgRlBSZWdpc3RlcklEOjpfcmVnTmFtZTogXAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gI19yZWdOYW1lOworICAgICAgICAgICAgICAgIEZPUl9FQUNIX0NQ
VV9GUFJFR0lTVEVSKERFQ0xBUkVfUkVHSVNURVIpCisgICAgICAgICAgICAgICAgI3VuZGVmIERF
Q0xBUkVfUkVHSVNURVIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkKiByZWdpc3RlclZhbHVl
KFJlZ2lzdGVySUQgcmVnSUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVnSUQp
IHsKKyAgICAgICAgICAgICAgICAjZGVmaW5lIERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdO
YW1lKSBcCisgICAgICAgICAgICAgICAgY2FzZSBSZWdpc3RlcklEOjpfcmVnTmFtZTogXAorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ05hbWU7CisgICAgICAgICAgICAgICAgRk9SX0VB
Q0hfQ1BVX0dQUkVHSVNURVIoREVDTEFSRV9SRUdJU1RFUikKKyAgICAgICAgICAgICAgICAjdW5k
ZWYgREVDTEFSRV9SRUdJU1RFUgorICAgICAgICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSByZWdpc3Rl
clZhbHVlKEZQUmVnaXN0ZXJJRCByZWdJRCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
IChyZWdJRCkgeworICAgICAgICAgICAgICAgICNkZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlw
ZSwgX3JlZ05hbWUpIFwKKyAgICAgICAgICAgICAgICBjYXNlIEZQUmVnaXN0ZXJJRDo6X3JlZ05h
bWU6IFwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdOYW1lOworICAgICAgICAgICAg
ICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKERFQ0xBUkVfUkVHSVNURVIpCisgICAgICAgICAg
ICAgICAgI3VuZGVmIERFQ0xBUkVfUkVHSVNURVIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKwogICAgIH07CiAKICAg
ICBzdHJ1Y3QgUHJvYmVDb250ZXh0OwpAQCAtODkxLDkgKzk0MCw0MiBAQCBwdWJsaWM6CiAgICAg
ICAgICN1bmRlZiBJTkRFTlQKICAgICB9CiAKKyAgICAvLyBUaGlzIGlzIGEgbWFya2VyIHR5cGUg
b25seSB1c2VkIHdpdGggcHJpbnQoKS4gU2VlIHByaW50KCkgYmVsb3cgZm9yIGRldGFpbHMuCisg
ICAgc3RydWN0IEFsbFJlZ2lzdGVycyB7IH07CisKKyAgICAvLyBFbWl0cyBjb2RlIHdoaWNoIHdp
bGwgcHJpbnQgZGVidWdnaW5nIGluZm8gYXQgcnVudGltZS4gVGhlIHR5cGUgb2YgdmFsdWVzIHRo
YXQKKyAgICAvLyBjYW4gYmUgcHJpbnRlZCBpcyBlbmNhcHN1bGF0ZWQgaW4gdGhlIFByaW50QXJn
IHN0cnVjdCBiZWxvdy4gSGVyZSBhcmUgc29tZQorICAgIC8vIGV4YW1wbGVzOgorICAgIC8vCisg
ICAgLy8gICAgICBwcmludCgiSGVsbG8gd29ybGRcbiIpOyAvLyBFbWl0cyBjb2RlIHRvIHByaW50
IHRoZSBzdHJpbmcuCisgICAgLy8KKyAgICAvLyAgICAgIENvZGVCbG9jayogY2IgPSAuLi47Cisg
ICAgLy8gICAgICBwcmludChjYik7ICAgICAgICAgICAgICAvLyBFbWl0cyBjb2RlIHRvIHByaW50
IHRoZSBwb2ludGVyIHZhbHVlLgorICAgIC8vCisgICAgLy8gICAgICBSZWdpc3RlcklEIHJlZ0lE
ID0gLi4uOworICAgIC8vICAgICAgcHJpbnQocmVnSUQpOyAgICAgICAgICAgLy8gRW1pdHMgY29k
ZSB0byBwcmludCB0aGUgcmVnaXN0ZXIgdmFsdWUgKG5vdCB0aGUgaWQpLgorICAgIC8vCisgICAg
Ly8gICAgICAvLyBFbWl0cyBjb2RlIHRvIHByaW50IGFsbCByZWdpc3RlcnMuICBVbmxpa2Ugb3Ro
ZXIgaXRlbXMsIHRoaXMgcHJpbnRzCisgICAgLy8gICAgICAvLyBtdWx0aXBsZSBsaW5lcyBhcyBm
b2xsb3dzOgorICAgIC8vICAgICAgLy8gICAgICBjcHUgeworICAgIC8vICAgICAgLy8gICAgICAg
ICAgZWF4OiAweDEyMzQ1Njc4OQorICAgIC8vICAgICAgLy8gICAgICAgICAgZWJ4OiAweDAwMDAw
MGFiYworICAgIC8vICAgICAgLy8gICAgICAgICAgLi4uCisgICAgLy8gICAgICAvLyAgICAgIH0K
KyAgICAvLyAgICAgIHByaW50KEFsbFJlZ2lzdGVycygpKTsKKyAgICAvLworICAgIC8vICAgICAg
Ly8gUHJpbnQgbXVsdGlwbGUgdGhpbmdzIGF0IG9uY2UuIFRoaXMgaW5jdXJzIHRoZSBwcm9iZSBv
dmVyaGVhZCBvbmx5IG9uY2UKKyAgICAvLyAgICAgIC8vIHRvIHByaW50IGFsbCB0aGUgaXRlbXMu
CisgICAgLy8gICAgICBwcmludCgiY2I6IiwgY2IsICIgcmVnSUQ6IiwgcmVnSUQsICIgY3B1Olxu
IiwgQWxsUmVnaXN0ZXJzKCkpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorICAgIHZvaWQgcHJpbnQoQXJndW1lbnRzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBwcmlu
dEludGVybmFsKHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyVHlwZSo+KHRoaXMpLCBhcmdzLi4u
KTsKKyAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHByaW50
Q1BVKCkgdG8gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIHRhcmdldCBzcGVjaWZp
YyByZWdpc3RlcnMgd2hpY2ggYXJlIHNhdmVkIGF3YXkgaW4gdGhlIENQVUluZm8gc3RydWN0Lgor
ICAgIC8vIHRhcmdldCBzcGVjaWZpYyByZWdpc3RlcnMgd2hpY2ggYXJlIHNhdmVkIGF3YXkgaW4g
dGhlIENQVVN0YXRlIHN0cnVjdC4KICAgICAvLyBwcmludENQVVJlZ2lzdGVycygpIHNob3VsZCBt
YWtlIHVzZSBvZiBwcmludEluZGVudGF0aW9uKCkgdG8gcHJpbnQgdGhlCiAgICAgLy8gcmVnaXN0
ZXJzIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFtb3VudCBvZiBpbmRlbnRhdGlvbi4KICAgICAvLwpA
QCAtOTAzLDE0ICs5ODUsMjUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcHJpbnRDUFVS
ZWdpc3RlcnMoQ1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKIAotICAgIC8vIFRoaXMg
ZnVuY3Rpb24gZW1pdHMgY29kZSB0byBwcmVzZXJ2ZSB0aGUgQ1BVSW5mbyAoZS5nLiByZWdpc3Rl
cnMpLAotICAgIC8vIGNhbGwgYSB1c2VyIHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uLCBhbmQgcmVz
dG9yZSB0aGUgQ1BVSW5mbyBiZWZvcmUKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2Fs
bGVkIGJ5IHByaW50KCkgdG8gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIGEKKyAgICAvLyBzcGVjaWZp
YyByZWdpc3RlciAoZnJvbSB0aGUgQ1BVU3RhdGUpIGluIGxpbmUgd2l0aCBvdGhlciBpdGVtcyBp
biB0aGUKKyAgICAvLyBwcmludCBzdHJlYW0uIEhlbmNlLCBubyBpbmRlbnRhdGlvbiBpcyBuZWVk
ZWQuCisgICAgLy8KKyAgICAvLyBOb3RlOiBwcmludFJlZ2lzdGVyKCkgc2hvdWxkIGJlIGltcGxl
bWVudGVkIGJ5IHRoZSB0YXJnZXQgc3BlY2lmaWMKKyAgICAvLyBNYWNyb0Fzc2VtYmxlci4gVGhl
c2UgcHJvdG90eXBlcyBhcmUgb25seSBwcm92aWRlZCBoZXJlIHRvIGRvY3VtZW50IHRoZWlyCisg
ICAgLy8gaW50ZXJmYWNlLgorCisgICAgc3RhdGljIHZvaWQgcHJpbnRSZWdpc3RlcihDUFVTdGF0
ZSYsIFJlZ2lzdGVySUQpOworICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUm
LCBGUFJlZ2lzdGVySUQpOworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBlbWl0cyBjb2RlIHRvIHBy
ZXNlcnZlIHRoZSBDUFVTdGF0ZSAoZS5nLiByZWdpc3RlcnMpLAorICAgIC8vIGNhbGwgYSB1c2Vy
IHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uLCBhbmQgcmVzdG9yZSB0aGUgQ1BVU3RhdGUgYmVmb3Jl
CiAgICAgLy8gY29udGludWluZyB3aXRoIG90aGVyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LwogICAgIC8vIFRoZSB1c2VyIHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVk
IHdpdGggYSBzaW5nbGUgcG9pbnRlciB0bwogICAgIC8vIGEgUHJvYmVDb250ZXh0IHN0cnVjdCAo
ZGVmaW5lZCBhYm92ZSkgd2hpY2ggY29udGFpbnMsIGFtb25nIG90aGVyIHRoaW5ncywKLSAgICAv
LyB0aGUgcHJlc2VydmVkIENQVUluZm8uIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHByb2JlIGZ1bmN0
aW9uIHRvIGluc3BlY3QKLSAgICAvLyB0aGUgQ1BVSW5mbyBhdCB0aGF0IHBvaW50IGluIHRoZSBK
SVQgZ2VuZXJhdGVkIGNvZGUuCisgICAgLy8gdGhlIHByZXNlcnZlZCBDUFVTdGF0ZS4gVGhpcyBh
bGxvd3MgdGhlIHVzZXIgcHJvYmUgZnVuY3Rpb24gdG8gaW5zcGVjdAorICAgIC8vIHRoZSBDUFVT
dGF0ZSBhdCB0aGF0IHBvaW50IGluIHRoZSBKSVQgZ2VuZXJhdGVkIGNvZGUuCiAgICAgLy8KICAg
ICAvLyBJZiB0aGUgdXNlciBwcm9iZSBmdW5jdGlvbiBhbHRlcnMgdGhlIHJlZ2lzdGVyIHZhbHVl
cyBpbiB0aGUgUHJvYmVDb250ZXh0LAogICAgIC8vIHRoZSBhbHRlcmVkIHZhbHVlcyB3aWxsIGJl
IGxvYWRlZCBpbnRvIHRoZSBDUFUgcmVnaXN0ZXJzIHdoZW4gdGhlIHByb2JlCkBAIC0xMDg1LDcg
KzExNzgsMTQ1IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEFzc2VtYmxlclR5cGU6OnJl
cGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKICAgICB9
Ci19OworCitwcml2YXRlOgorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisKKyAgICBzdHJ1Y3Qg
UHJpbnRBcmcgeworICAgIAorICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAg
QWxsUmVnaXN0ZXJzLAorICAgICAgICAgICAgUmVnaXN0ZXJJRCwKKyAgICAgICAgICAgIEZQUmVn
aXN0ZXJJRCwKKyAgICAgICAgICAgIENvbnN0Q2hhclB0ciwKKyAgICAgICAgICAgIENvbnN0Vm9p
ZFB0ciwKKyAgICAgICAgICAgIEludHB0clZhbHVlLAorICAgICAgICAgICAgVWludHB0clZhbHVl
LAorICAgICAgICB9OworCisgICAgICAgIFByaW50QXJnKEFsbFJlZ2lzdGVycyYsIGludCBpbmRl
bnRhdGlvbiA9IDApCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6QWxsUmVnaXN0ZXJzKQorICAg
ICAgICAgICAgLCBpbmRlbnRhdGlvbihpbmRlbnRhdGlvbikKKyAgICAgICAgeworICAgICAgICB9
CisKKyAgICAgICAgUHJpbnRBcmcoUmVnaXN0ZXJJRCByZWdJRCkKKyAgICAgICAgICAgIDogdHlw
ZShUeXBlOjpSZWdpc3RlcklEKQorICAgICAgICB7CisgICAgICAgICAgICB1LmdwUmVnaXN0ZXJJ
RCA9IHJlZ0lEOworICAgICAgICB9CisKKyAgICAgICAgUHJpbnRBcmcoRlBSZWdpc3RlcklEIHJl
Z0lEKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OkZQUmVnaXN0ZXJJRCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdS5mcFJlZ2lzdGVySUQgPSByZWdJRDsKKyAgICAgICAgfQorCisgICAgICAg
IFByaW50QXJnKGNvbnN0IGNoYXIqIHB0cikKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpDb25z
dENoYXJQdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuY29uc3RDaGFyUHRyID0gcHRyOwor
ICAgICAgICB9CisKKyAgICAgICAgUHJpbnRBcmcoY29uc3Qgdm9pZCogcHRyKQorICAgICAgICAg
ICAgOiB0eXBlKFR5cGU6OkNvbnN0Vm9pZFB0cikKKyAgICAgICAgeworICAgICAgICAgICAgdS5j
b25zdFZvaWRQdHIgPSBwdHI7CisgICAgICAgIH0KKworICAgICAgICBQcmludEFyZyhpbnQgdmFs
dWUpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6SW50cHRyVmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHUuaW50cHRyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFBy
aW50QXJnKHVuc2lnbmVkIHZhbHVlKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OlVpbnRwdHJW
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnRwdHJWYWx1ZSA9IHZhbHVlOworICAg
ICAgICB9CisKKyAgICAgICAgUHJpbnRBcmcoaW50cHRyX3QgdmFsdWUpCisgICAgICAgICAgICA6
IHR5cGUoVHlwZTo6SW50cHRyVmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50cHRy
VmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFByaW50QXJnKHVpbnRwdHJfdCB2
YWx1ZSkKKyAgICAgICAgICAgIDogdHlwZShUeXBlOjpVaW50cHRyVmFsdWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHUudWludHB0clZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KKworICAgICAg
ICBUeXBlIHR5cGU7CisgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgZ3BS
ZWdpc3RlcklEOworICAgICAgICAgICAgRlBSZWdpc3RlcklEIGZwUmVnaXN0ZXJJRDsKKyAgICAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0Q2hhclB0cjsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQq
IGNvbnN0Vm9pZFB0cjsKKyAgICAgICAgICAgIGludHB0cl90IGludHB0clZhbHVlOworICAgICAg
ICAgICAgdWludHB0cl90IHVpbnRwdHJWYWx1ZTsKKyAgICAgICAgfSB1OworICAgICAgICBpbnQg
aW5kZW50YXRpb247CisgICAgfTsKKworICAgIHR5cGVkZWYgVmVjdG9yPFByaW50QXJnPiBQcmlu
dEFyZ3NMaXN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRmlyc3RBcmcsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRQcmludEFyZyhQcmludEFyZ3NMaXN0
KiBhcmdzTGlzdCwgRmlyc3RBcmcmIGZpcnN0QXJnLCBBcmd1bWVudHMuLi4gb3RoZXJBcmdzKQor
ICAgIHsKKyAgICAgICAgYXJnc0xpc3QtPmFwcGVuZChQcmludEFyZyhmaXJzdEFyZykpOworICAg
ICAgICBhcHBlbmRQcmludEFyZyhhcmdzTGlzdCwgb3RoZXJBcmdzLi4uKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgdm9pZCBhcHBlbmRQcmludEFyZyhQcmludEFyZ3NMaXN0KikgeyB9CisKKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1bWVudHM+CisgICAgc3RhdGljIHZvaWQgcHJp
bnRJbnRlcm5hbChNYWNyb0Fzc2VtYmxlclR5cGUqIG1hc20sIEFyZ3VtZW50cy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgYXV0byBhcmdzTGlzdCA9IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRBcmdz
TGlzdD4oKTsKKyAgICAgICAgYXBwZW5kUHJpbnRBcmcoYXJnc0xpc3QuZ2V0KCksIGFyZ3MuLi4p
OworICAgICAgICBtYXNtLT5wcm9iZShwcmludENhbGxiYWNrLCBhcmdzTGlzdC5yZWxlYXNlKCkp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHByaW50Q2FsbGJhY2soUHJvYmVDb250ZXh0KiBj
b250ZXh0KQorICAgIHsKKyAgICAgICAgdHlwZWRlZiBQcmludEFyZyBBcmc7CisgICAgICAgIFBy
aW50QXJnc0xpc3QmIGFyZ3NMaXN0ID0KKyAgICAgICAgICAgICpyZWludGVycHJldF9jYXN0PFBy
aW50QXJnc0xpc3QqPihjb250ZXh0LT5hcmcxKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcmdzTGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgYXV0byYgYXJnID0gYXJn
c0xpc3RbaV07CisgICAgICAgICAgICBzd2l0Y2ggKGFyZy50eXBlKSB7CisgICAgICAgICAgICBj
YXNlIEFyZzo6VHlwZTo6QWxsUmVnaXN0ZXJzOgorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyVHlwZTo6cHJpbnRDUFUoY29udGV4dC0+Y3B1LCBhcmcuaW5kZW50YXRpb24pOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcmc6OlR5cGU6OlJlZ2lzdGVySUQ6
CisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJUeXBlOjpwcmludFJlZ2lzdGVyKGNvbnRl
eHQtPmNwdSwgYXJnLnUuZ3BSZWdpc3RlcklEKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgQXJnOjpUeXBlOjpGUFJlZ2lzdGVySUQ6CisgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJUeXBlOjpwcmludFJlZ2lzdGVyKGNvbnRleHQtPmNwdSwgYXJnLnUuZnBS
ZWdpc3RlcklEKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJn
OjpUeXBlOjpDb25zdENoYXJQdHI6CisgICAgICAgICAgICAgICAgZGF0YUxvZyhhcmcudS5jb25z
dENoYXJQdHIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcmc6
OlR5cGU6OkNvbnN0Vm9pZFB0cjoKKyAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXAiLCBhcmcu
dS5jb25zdFZvaWRQdHIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBBcmc6OlR5cGU6OkludHB0clZhbHVlOgorICAgICAgICAgICAgICAgIGRhdGFMb2coYXJnLnUu
aW50cHRyVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBB
cmc6OlR5cGU6OlVpbnRwdHJWYWx1ZToKKyAgICAgICAgICAgICAgICBkYXRhTG9nKGFyZy51LnVp
bnRwdHJWYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFTTV9QUk9CRSkKKworfTsgLy8gY2xh
c3MgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTS5jcHAJKHJldmlzaW9uIDE3NjIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMjUgKzEw
MSw0NyBAQCB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkMzJXaXRoVW5hbGlnCiAKIHZvaWQg
TWFjcm9Bc3NlbWJsZXJBUk06OnByaW50Q1BVUmVnaXN0ZXJzKENQVVN0YXRlJiBjcHUsIGludCBp
bmRlbnRhdGlvbikKIHsKLSAgICAjZGVmaW5lIERVTVBfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05h
bWUpIHsgXAorICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsg
XAogICAgICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihjcHUu
X3JlZ05hbWUpOyBcCiAgICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1czogMHglMDh4ICAlZFxu
IiwgI19yZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAogICAgIH0KLSAgICBGT1JfRUFDSF9DUFVf
R1BSRUdJU1RFUihEVU1QX0dQUkVHSVNURVIpCi0gICAgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxfUkVH
SVNURVIoRFVNUF9HUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0dQUkVHSVNURVIKKyAgICBG
T1JfRUFDSF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgIEZPUl9FQUNIX0NQ
VV9TUEVDSUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCisgICAgI3VuZGVmIFBSSU5UX0dQ
UkVHSVNURVIKIAotICAgICNkZWZpbmUgRFVNUF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkg
eyBcCisgICAgI2RlZmluZSBQUklOVF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBcCiAg
ICAgICAgIHVpbnQ2NF90KiB1ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZjcHUuX3Jl
Z05hbWUpOyBcCiAgICAgICAgIGRvdWJsZSogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZG91YmxlKj4o
JmNwdS5fcmVnTmFtZSk7IFwKICAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTVzOiAweCUwMTZs
bHggICUuMTNnXG4iLCAjX3JlZ05hbWUsICp1LCAqZCk7IFwKICAgICB9Ci0gICAgRk9SX0VBQ0hf
Q1BVX0ZQUkVHSVNURVIoRFVNUF9GUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0ZQUkVHSVNU
RVIKKyAgICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihQUklOVF9GUFJFR0lTVEVSKQorICAgICN1
bmRlZiBQUklOVF9GUFJFR0lTVEVSCiB9CiAKICN1bmRlZiBJTkRFTlQKIAordm9pZCBNYWNyb0Fz
c2VtYmxlckFSTTo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlckFSTTo6Q1BVU3RhdGUmIGNw
dSwgUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6
OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24geworICAgICAgICB2b2lkKiB2b2lkUHRy
OworICAgICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKKyAgICB9IHU7CisgICAgdS52b2lkUHRy
ID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8JXAgJWxkPiIs
IG5hbWUsIHUudm9pZFB0ciwgdS5pbnRwdHJWYWx1ZSk7Cit9CisKK3ZvaWQgTWFjcm9Bc3NlbWJs
ZXJBUk06OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk06OkNQVVN0YXRlJiBjcHUsIEZQ
UmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJl
Z2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24geworICAgICAgICBkb3VibGUgZG91YmxlVmFs
dWU7CisgICAgICAgIHVpbnQ2NF90IHVpbnQ2NFZhbHVlOworICAgIH0gdTsKKyAgICB1LmRvdWJs
ZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8MHgl
MDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUudWludDY0VmFsdWUsIHUuZG91YmxlVmFsdWUpOworfQor
CiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOwogCiAvLyBGb3IgZGV0
YWlscyBvbiAiV2hhdCBjb2RlIGlzIGVtaXR0ZWQgZm9yIHRoZSBwcm9iZT8iIGFuZCAiV2hhdCB2
YWx1ZXMgYXJlIGluCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCShyZXZpc2lvbiAxNzYyMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0MzYsNiArMTQzNiw4IEBAIHB1YmxpYzoKICAgICAvLyBNZXRob2RzIHJlcXVpcmVkIGJ5
IHRoZSBNQVNNX1BST0JFIG1lY2hhbmlzbSBhcyBkZWZpbmVkIGluCiAgICAgLy8gQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oLiAKICAgICBzdGF0aWMgdm9pZCBwcmludENQVVJlZ2lzdGVycyhDUFVT
dGF0ZSYsIGludCBpbmRlbnRhdGlvbiA9IDApOworICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0
ZXIoQ1BVU3RhdGUmLCBSZWdpc3RlcklEKTsKKyAgICBzdGF0aWMgdm9pZCBwcmludFJlZ2lzdGVy
KENQVVN0YXRlJiwgRlBSZWdpc3RlcklEKTsKICAgICB2b2lkIHByb2JlKFByb2JlRnVuY3Rpb24s
IHZvaWQqIGFyZzEgPSAwLCB2b2lkKiBhcmcyID0gMCk7CiAjZW5kaWYgLy8gRU5BQkxFKE1BU01f
UFJPQkUpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJBUk12Ny5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkocmV2aXNpb24gMTc2MjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzYsMjUgKzM2LDQ3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIE1hY3JvQXNz
ZW1ibGVyQVJNdjc6OnByaW50Q1BVUmVnaXN0ZXJzKENQVVN0YXRlJiBjcHUsIGludCBpbmRlbnRh
dGlvbikKIHsKLSAgICAjZGVmaW5lIERVTVBfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsg
XAorICAgICNkZWZpbmUgUFJJTlRfR1BSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsgXAogICAg
ICAgICBpbnQzMl90IHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihjcHUuX3JlZ05h
bWUpOyBcCiAgICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1czogMHglMDh4ICAlZFxuIiwgI19y
ZWdOYW1lLCB2YWx1ZSwgdmFsdWUpIDsgXAogICAgIH0KLSAgICBGT1JfRUFDSF9DUFVfR1BSRUdJ
U1RFUihEVU1QX0dQUkVHSVNURVIpCi0gICAgRk9SX0VBQ0hfQ1BVX1NQRUNJQUxfUkVHSVNURVIo
RFVNUF9HUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0dQUkVHSVNURVIKKyAgICBGT1JfRUFD
SF9DUFVfR1BSRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgIEZPUl9FQUNIX0NQVV9TUEVD
SUFMX1JFR0lTVEVSKFBSSU5UX0dQUkVHSVNURVIpCisgICAgI3VuZGVmIFBSSU5UX0dQUkVHSVNU
RVIKIAotICAgICNkZWZpbmUgRFVNUF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBcCisg
ICAgI2RlZmluZSBQUklOVF9GUFJFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgeyBcCiAgICAgICAg
IHVpbnQ2NF90KiB1ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdCo+KCZjcHUuX3JlZ05hbWUp
OyBcCiAgICAgICAgIGRvdWJsZSogZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZG91YmxlKj4oJmNwdS5f
cmVnTmFtZSk7IFwKICAgICAgICAgSU5ERU5ULCBkYXRhTG9nRigiJTVzOiAweCUwMTZsbHggICUu
MTNnXG4iLCAjX3JlZ05hbWUsICp1LCAqZCk7IFwKICAgICB9Ci0gICAgRk9SX0VBQ0hfQ1BVX0ZQ
UkVHSVNURVIoRFVNUF9GUFJFR0lTVEVSKQotICAgICN1bmRlZiBEVU1QX0ZQUkVHSVNURVIKKyAg
ICBGT1JfRUFDSF9DUFVfRlBSRUdJU1RFUihQUklOVF9GUFJFR0lTVEVSKQorICAgICN1bmRlZiBQ
UklOVF9GUFJFR0lTVEVSCiB9CiAKICN1bmRlZiBJTkRFTlQKIAordm9pZCBNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNdjc6OkNQVVN0YXRlJiBjcHUs
IFJlZ2lzdGVySUQgcmVnSUQpCit7CisgICAgY29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRlOjpy
ZWdpc3Rlck5hbWUocmVnSUQpOworICAgIHVuaW9uIHsKKyAgICAgICAgdm9pZCogdm9pZFB0cjsK
KyAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7CisgICAgfSB1OworICAgIHUudm9pZFB0ciA9
IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKKyAgICBkYXRhTG9nRigiJXM6PCVwICVsZD4iLCBu
YW1lLCB1LnZvaWRQdHIsIHUuaW50cHRyVmFsdWUpOworfQorCit2b2lkIE1hY3JvQXNzZW1ibGVy
QVJNdjc6OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk12Nzo6Q1BVU3RhdGUmIGNwdSwg
RlBSZWdpc3RlcklEIHJlZ0lEKQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBDUFVTdGF0ZTo6
cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKKyAgICB1bmlvbiB7CisgICAgICAgIGRvdWJsZSBkb3VibGVW
YWx1ZTsKKyAgICAgICAgdWludDY0X3QgdWludDY0VmFsdWU7CisgICAgfSB1OworICAgIHUuZG91
YmxlVmFsdWUgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7CisgICAgZGF0YUxvZ0YoIiVzOjww
eCUwMTZsbHggJS4xM2c+IiwgbmFtZSwgdS51aW50NjRWYWx1ZSwgdS5kb3VibGVWYWx1ZSk7Cit9
CisKIGV4dGVybiAiQyIgdm9pZCBjdGlNYXNtUHJvYmVUcmFtcG9saW5lKCk7CiAKIC8vIEZvciBk
ZXRhaWxzIG9uICJXaGF0IGNvZGUgaXMgZW1pdHRlZCBmb3IgdGhlIHByb2JlPyIgYW5kICJXaGF0
IHZhbHVlcyBhcmUgaW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCShyZXZpc2lvbiAxNzYyMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkwNSw2ICsxOTA1LDggQEAgcHVibGljOgogICAgIC8vIE1ldGhvZHMgcmVx
dWlyZWQgYnkgdGhlIE1BU01fUFJPQkUgbWVjaGFuaXNtIGFzIGRlZmluZWQgaW4KICAgICAvLyBB
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmguIAogICAgIHN0YXRpYyB2b2lkIHByaW50Q1BVUmVnaXN0
ZXJzKENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0gMCk7CisgICAgc3RhdGljIHZvaWQgcHJp
bnRSZWdpc3RlcihDUFVTdGF0ZSYsIFJlZ2lzdGVySUQpOworICAgIHN0YXRpYyB2b2lkIHByaW50
UmVnaXN0ZXIoQ1BVU3RhdGUmLCBGUFJlZ2lzdGVySUQpOwogICAgIHZvaWQgcHJvYmUoUHJvYmVG
dW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsKICNlbmRpZiAvLyBFTkFC
TEUoTUFTTV9QUk9CRSkKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5jcHAJKHJldmlzaW9uIDE3
NjIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJY
ODZDb21tb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwyOCBAQCB2b2lkIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpwcmludENQVVJlCiAKICN1bmRlZiBJTkRFTlQKIAordm9pZCBN
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbjo6Q1BVU3RhdGUmIGNwdSwgUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBjaGFy
KiBuYW1lID0gQ1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24geworICAg
ICAgICB2b2lkKiB2b2lkUHRyOworICAgICAgICBpbnRwdHJfdCBpbnRwdHJWYWx1ZTsKKyAgICB9
IHU7CisgICAgdS52b2lkUHRyID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFM
b2dGKCIlczo8JXAgJWxkPiIsIG5hbWUsIHUudm9pZFB0ciwgdS5pbnRwdHJWYWx1ZSk7Cit9CisK
K3ZvaWQgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OkNQVVN0YXRlJiBjcHUsIEZQUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBj
b25zdCBjaGFyKiBuYW1lID0gQ1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5p
b24geworICAgICAgICBkb3VibGUgZG91YmxlVmFsdWU7CisgICAgICAgIHVpbnQ2NF90IHVpbnQ2
NFZhbHVlOworICAgIH0gdTsKKyAgICB1LmRvdWJsZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFsdWUo
cmVnSUQpOworICAgIGRhdGFMb2dGKCIlczo8MHglMDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUudWlu
dDY0VmFsdWUsIHUuZG91YmxlVmFsdWUpOworfQorCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVBy
b2JlVHJhbXBvbGluZSgpOwogCiAvLyBXaGF0IGNvZGUgaXMgZW1pdHRlZCBmb3IgdGhlIHByb2Jl
PwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAkocmV2aXNpb24gMTc2MjE2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNDczLDYgKzE0NzMsOCBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyByZXF1aXJl
ZCBieSB0aGUgTUFTTV9QUk9CRSBtZWNoYW5pc20gYXMgZGVmaW5lZCBpbgogICAgIC8vIEFic3Ry
YWN0TWFjcm9Bc3NlbWJsZXIuaC4gCiAgICAgc3RhdGljIHZvaWQgcHJpbnRDUFVSZWdpc3RlcnMo
Q1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBwcmludFJl
Z2lzdGVyKENQVVN0YXRlJiwgUmVnaXN0ZXJJRCk7CisgICAgc3RhdGljIHZvaWQgcHJpbnRSZWdp
c3RlcihDUFVTdGF0ZSYsIEZQUmVnaXN0ZXJJRCk7CiAgICAgdm9pZCBwcm9iZShQcm9iZUZ1bmN0
aW9uLCB2b2lkKiBhcmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwogI2VuZGlmIC8vIEVOQUJMRShN
QVNNX1BST0JFKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241737</attachid>
            <date>2014-11-17 12:55:16 -0800</date>
            <delta_ts>2014-11-17 13:59:17 -0800</delta_ts>
            <desc>patch 3: removed some unused code due to a failed attempt at supporting indentation when printing AllRegisters.</desc>
            <filename>bug-138660.patch</filename>
            <type>text/plain</type>
            <size>20030</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc2MjIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE0LTExLTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgcHJpbnRpbmcgZnVuY3Rpb25hbGl0eSBpbiBKSVR0ZWQgY29kZSBmb3IgZGVidWdnaW5nIHB1
cnBvc2VzLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM4NjYwPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWV0aW1lcywgZm9yIGRl
YnVnZ2luZywgaXQnZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8ganVzdCBwcmludCB0aGUKKyAgICAg
ICAgdmFsdWVzIG9mIGNvbnN0YW50cyBvciByZWdpc3RlcnMgdXNlZCBpbiBKSVR0ZWQgY29kZSwg
b3IgZXZlbiBqdXN0CisgICAgICAgIGEgc3RyaW5nIHRvIGxvZyB0aGF0IGNlcnRhaW4gcGllY2Vz
IG9mIEpJVHRlZCBjb2RlIGhhdmUgYmVlbiBleGVjdXRlZC4KKyAgICAgICAgVXNpbmcgdGhlIEpJ
VCBwcm9iZSBtZWNoYW5pc20sIHdlIGNhbiBtYWtlIHRoaXMgaGFwcGVuLgorCisgICAgICAgICog
YXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0
TWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjo6
Q1BVU3RhdGU6OnJlZ2lzdGVyTmFtZSk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OkNQVVN0YXRlOjpyZWdpc3RlclZhbHVlKToKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RN
YWNyb0Fzc2VtYmxlcjo6cHJpbnQpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpQcmludEFyZzo6UHJpbnRBcmcpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyOjphcHBlbmRQcmludEFyZyk6CisgICAgICAgIChKU0M6OkFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyOjpwcmludENhbGxiYWNrKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cHJpbnRDUFVSZWdpc3Rl
cnMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6cHJpbnRSZWdpc3Rlcik6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmg6CisgICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuY3BwOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTXY3OjpwcmludENQVVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNdjc6OnByaW50UmVnaXN0ZXIpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTXY3Lmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50UmVnaXN0ZXIp
OgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oOgorCiAyMDE0
LTExLTE3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IEphdmFTY3JpcHRDb3JlIGJ1aWxkIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgY2xhbmcuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxl
ci5oCShyZXZpc2lvbiAxNzYyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTXY3QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCBuYW1l
c3BhY2UgQVJNUmVnaXN0ZXJzIHsKICAgICAgICAgcmV0dXJuIChGUERvdWJsZVJlZ2lzdGVySUQp
KHJlZyA+PiAxKTsKICAgICB9CiAKLX0gLy8gbmFtZXNwYWNlIEFSTVJlZ2lzdGVyCit9IC8vIG5h
bWVzcGFjZSBBUk1SZWdpc3RlcnMKIAogY2xhc3MgQVJNdjdBc3NlbWJsZXI7CiBjbGFzcyBBUk1U
aHVtYkltbWVkaWF0ZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fi
c3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMTc2MjE2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg0NCw2ICs4NDQsNTUgQEAgcHVibGljOgogICAgICAgICAg
ICAgX3R5cGUgX3JlZ05hbWU7CiAgICAgICAgIEZPUl9FQUNIX0NQVV9SRUdJU1RFUihERUNMQVJF
X1JFR0lTVEVSKQogICAgICAgICAjdW5kZWYgREVDTEFSRV9SRUdJU1RFUgorCisgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyKiByZWdpc3Rlck5hbWUoUmVnaXN0ZXJJRCByZWdJRCkKKyAgICAgICAg
eworICAgICAgICAgICAgc3dpdGNoIChyZWdJRCkgeworICAgICAgICAgICAgICAgICNkZWZpbmUg
REVDTEFSRV9SRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIFwKKyAgICAgICAgICAgICAgICBjYXNl
IFJlZ2lzdGVySUQ6Ol9yZWdOYW1lOiBcCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAjX3Jl
Z05hbWU7CisgICAgICAgICAgICAgICAgRk9SX0VBQ0hfQ1BVX0dQUkVHSVNURVIoREVDTEFSRV9S
RUdJU1RFUikKKyAgICAgICAgICAgICAgICAjdW5kZWYgREVDTEFSRV9SRUdJU1RFUgorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiByZWdpc3Rlck5hbWUoRlBSZWdpc3Rl
cklEIHJlZ0lEKQorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKHJlZ0lEKSB7CisgICAg
ICAgICAgICAgICAgI2RlZmluZSBERUNMQVJFX1JFR0lTVEVSKF90eXBlLCBfcmVnTmFtZSkgXAor
ICAgICAgICAgICAgICAgIGNhc2UgRlBSZWdpc3RlcklEOjpfcmVnTmFtZTogXAorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gI19yZWdOYW1lOworICAgICAgICAgICAgICAgIEZPUl9FQUNIX0NQ
VV9GUFJFR0lTVEVSKERFQ0xBUkVfUkVHSVNURVIpCisgICAgICAgICAgICAgICAgI3VuZGVmIERF
Q0xBUkVfUkVHSVNURVIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkKiByZWdpc3RlclZhbHVl
KFJlZ2lzdGVySUQgcmVnSUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVnSUQp
IHsKKyAgICAgICAgICAgICAgICAjZGVmaW5lIERFQ0xBUkVfUkVHSVNURVIoX3R5cGUsIF9yZWdO
YW1lKSBcCisgICAgICAgICAgICAgICAgY2FzZSBSZWdpc3RlcklEOjpfcmVnTmFtZTogXAorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ05hbWU7CisgICAgICAgICAgICAgICAgRk9SX0VB
Q0hfQ1BVX0dQUkVHSVNURVIoREVDTEFSRV9SRUdJU1RFUikKKyAgICAgICAgICAgICAgICAjdW5k
ZWYgREVDTEFSRV9SRUdJU1RFUgorICAgICAgICAgICAgfQorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSByZWdpc3Rl
clZhbHVlKEZQUmVnaXN0ZXJJRCByZWdJRCkKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNo
IChyZWdJRCkgeworICAgICAgICAgICAgICAgICNkZWZpbmUgREVDTEFSRV9SRUdJU1RFUihfdHlw
ZSwgX3JlZ05hbWUpIFwKKyAgICAgICAgICAgICAgICBjYXNlIEZQUmVnaXN0ZXJJRDo6X3JlZ05h
bWU6IFwKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdOYW1lOworICAgICAgICAgICAg
ICAgIEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKERFQ0xBUkVfUkVHSVNURVIpCisgICAgICAgICAg
ICAgICAgI3VuZGVmIERFQ0xBUkVfUkVHSVNURVIKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKwogICAgIH07CiAKICAg
ICBzdHJ1Y3QgUHJvYmVDb250ZXh0OwpAQCAtODkxLDkgKzk0MCw0MiBAQCBwdWJsaWM6CiAgICAg
ICAgICN1bmRlZiBJTkRFTlQKICAgICB9CiAKKyAgICAvLyBUaGlzIGlzIGEgbWFya2VyIHR5cGUg
b25seSB1c2VkIHdpdGggcHJpbnQoKS4gU2VlIHByaW50KCkgYmVsb3cgZm9yIGRldGFpbHMuCisg
ICAgc3RydWN0IEFsbFJlZ2lzdGVycyB7IH07CisKKyAgICAvLyBFbWl0cyBjb2RlIHdoaWNoIHdp
bGwgcHJpbnQgZGVidWdnaW5nIGluZm8gYXQgcnVudGltZS4gVGhlIHR5cGUgb2YgdmFsdWVzIHRo
YXQKKyAgICAvLyBjYW4gYmUgcHJpbnRlZCBpcyBlbmNhcHN1bGF0ZWQgaW4gdGhlIFByaW50QXJn
IHN0cnVjdCBiZWxvdy4gSGVyZSBhcmUgc29tZQorICAgIC8vIGV4YW1wbGVzOgorICAgIC8vCisg
ICAgLy8gICAgICBwcmludCgiSGVsbG8gd29ybGRcbiIpOyAvLyBFbWl0cyBjb2RlIHRvIHByaW50
IHRoZSBzdHJpbmcuCisgICAgLy8KKyAgICAvLyAgICAgIENvZGVCbG9jayogY2IgPSAuLi47Cisg
ICAgLy8gICAgICBwcmludChjYik7ICAgICAgICAgICAgICAvLyBFbWl0cyBjb2RlIHRvIHByaW50
IHRoZSBwb2ludGVyIHZhbHVlLgorICAgIC8vCisgICAgLy8gICAgICBSZWdpc3RlcklEIHJlZ0lE
ID0gLi4uOworICAgIC8vICAgICAgcHJpbnQocmVnSUQpOyAgICAgICAgICAgLy8gRW1pdHMgY29k
ZSB0byBwcmludCB0aGUgcmVnaXN0ZXIgdmFsdWUgKG5vdCB0aGUgaWQpLgorICAgIC8vCisgICAg
Ly8gICAgICAvLyBFbWl0cyBjb2RlIHRvIHByaW50IGFsbCByZWdpc3RlcnMuICBVbmxpa2Ugb3Ro
ZXIgaXRlbXMsIHRoaXMgcHJpbnRzCisgICAgLy8gICAgICAvLyBtdWx0aXBsZSBsaW5lcyBhcyBm
b2xsb3dzOgorICAgIC8vICAgICAgLy8gICAgICBjcHUgeworICAgIC8vICAgICAgLy8gICAgICAg
ICAgZWF4OiAweDEyMzQ1Njc4OQorICAgIC8vICAgICAgLy8gICAgICAgICAgZWJ4OiAweDAwMDAw
MGFiYworICAgIC8vICAgICAgLy8gICAgICAgICAgLi4uCisgICAgLy8gICAgICAvLyAgICAgIH0K
KyAgICAvLyAgICAgIHByaW50KEFsbFJlZ2lzdGVycygpKTsKKyAgICAvLworICAgIC8vICAgICAg
Ly8gUHJpbnQgbXVsdGlwbGUgdGhpbmdzIGF0IG9uY2UuIFRoaXMgaW5jdXJzIHRoZSBwcm9iZSBv
dmVyaGVhZCBvbmx5IG9uY2UKKyAgICAvLyAgICAgIC8vIHRvIHByaW50IGFsbCB0aGUgaXRlbXMu
CisgICAgLy8gICAgICBwcmludCgiY2I6IiwgY2IsICIgcmVnSUQ6IiwgcmVnSUQsICIgY3B1Olxu
IiwgQWxsUmVnaXN0ZXJzKCkpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRz
PgorICAgIHZvaWQgcHJpbnQoQXJndW1lbnRzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBwcmlu
dEludGVybmFsKHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyVHlwZSo+KHRoaXMpLCBhcmdzLi4u
KTsKKyAgICB9CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHByaW50
Q1BVKCkgdG8gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgIC8vIHRhcmdldCBzcGVjaWZp
YyByZWdpc3RlcnMgd2hpY2ggYXJlIHNhdmVkIGF3YXkgaW4gdGhlIENQVUluZm8gc3RydWN0Lgor
ICAgIC8vIHRhcmdldCBzcGVjaWZpYyByZWdpc3RlcnMgd2hpY2ggYXJlIHNhdmVkIGF3YXkgaW4g
dGhlIENQVVN0YXRlIHN0cnVjdC4KICAgICAvLyBwcmludENQVVJlZ2lzdGVycygpIHNob3VsZCBt
YWtlIHVzZSBvZiBwcmludEluZGVudGF0aW9uKCkgdG8gcHJpbnQgdGhlCiAgICAgLy8gcmVnaXN0
ZXJzIHdpdGggdGhlIGFwcHJvcHJpYXRlIGFtb3VudCBvZiBpbmRlbnRhdGlvbi4KICAgICAvLwpA
QCAtOTAzLDE0ICs5ODUsMjUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcHJpbnRDUFVS
ZWdpc3RlcnMoQ1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKIAotICAgIC8vIFRoaXMg
ZnVuY3Rpb24gZW1pdHMgY29kZSB0byBwcmVzZXJ2ZSB0aGUgQ1BVSW5mbyAoZS5nLiByZWdpc3Rl
cnMpLAotICAgIC8vIGNhbGwgYSB1c2VyIHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uLCBhbmQgcmVz
dG9yZSB0aGUgQ1BVSW5mbyBiZWZvcmUKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2Fs
bGVkIGJ5IHByaW50KCkgdG8gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIGEKKyAgICAvLyBzcGVjaWZp
YyByZWdpc3RlciAoZnJvbSB0aGUgQ1BVU3RhdGUpIGluIGxpbmUgd2l0aCBvdGhlciBpdGVtcyBp
biB0aGUKKyAgICAvLyBwcmludCBzdHJlYW0uIEhlbmNlLCBubyBpbmRlbnRhdGlvbiBpcyBuZWVk
ZWQuCisgICAgLy8KKyAgICAvLyBOb3RlOiBwcmludFJlZ2lzdGVyKCkgc2hvdWxkIGJlIGltcGxl
bWVudGVkIGJ5IHRoZSB0YXJnZXQgc3BlY2lmaWMKKyAgICAvLyBNYWNyb0Fzc2VtYmxlci4gVGhl
c2UgcHJvdG90eXBlcyBhcmUgb25seSBwcm92aWRlZCBoZXJlIHRvIGRvY3VtZW50IHRoZWlyCisg
ICAgLy8gaW50ZXJmYWNlLgorCisgICAgc3RhdGljIHZvaWQgcHJpbnRSZWdpc3RlcihDUFVTdGF0
ZSYsIFJlZ2lzdGVySUQpOworICAgIHN0YXRpYyB2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUm
LCBGUFJlZ2lzdGVySUQpOworCisgICAgLy8gVGhpcyBmdW5jdGlvbiBlbWl0cyBjb2RlIHRvIHBy
ZXNlcnZlIHRoZSBDUFVTdGF0ZSAoZS5nLiByZWdpc3RlcnMpLAorICAgIC8vIGNhbGwgYSB1c2Vy
IHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uLCBhbmQgcmVzdG9yZSB0aGUgQ1BVU3RhdGUgYmVmb3Jl
CiAgICAgLy8gY29udGludWluZyB3aXRoIG90aGVyIEpJVCBnZW5lcmF0ZWQgY29kZS4KICAgICAv
LwogICAgIC8vIFRoZSB1c2VyIHN1cHBsaWVkIHByb2JlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVk
IHdpdGggYSBzaW5nbGUgcG9pbnRlciB0bwogICAgIC8vIGEgUHJvYmVDb250ZXh0IHN0cnVjdCAo
ZGVmaW5lZCBhYm92ZSkgd2hpY2ggY29udGFpbnMsIGFtb25nIG90aGVyIHRoaW5ncywKLSAgICAv
LyB0aGUgcHJlc2VydmVkIENQVUluZm8uIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHByb2JlIGZ1bmN0
aW9uIHRvIGluc3BlY3QKLSAgICAvLyB0aGUgQ1BVSW5mbyBhdCB0aGF0IHBvaW50IGluIHRoZSBK
SVQgZ2VuZXJhdGVkIGNvZGUuCisgICAgLy8gdGhlIHByZXNlcnZlZCBDUFVTdGF0ZS4gVGhpcyBh
bGxvd3MgdGhlIHVzZXIgcHJvYmUgZnVuY3Rpb24gdG8gaW5zcGVjdAorICAgIC8vIHRoZSBDUFVT
dGF0ZSBhdCB0aGF0IHBvaW50IGluIHRoZSBKSVQgZ2VuZXJhdGVkIGNvZGUuCiAgICAgLy8KICAg
ICAvLyBJZiB0aGUgdXNlciBwcm9iZSBmdW5jdGlvbiBhbHRlcnMgdGhlIHJlZ2lzdGVyIHZhbHVl
cyBpbiB0aGUgUHJvYmVDb250ZXh0LAogICAgIC8vIHRoZSBhbHRlcmVkIHZhbHVlcyB3aWxsIGJl
IGxvYWRlZCBpbnRvIHRoZSBDUFUgcmVnaXN0ZXJzIHdoZW4gdGhlIHByb2JlCkBAIC0xMDg1LDcg
KzExNzgsMTQzIEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIEFzc2VtYmxlclR5cGU6OnJl
cGxhY2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKGxhYmVsLmRhdGFMb2NhdGlvbigpKTsKICAgICB9
Ci19OworCitwcml2YXRlOgorCisjaWYgRU5BQkxFKE1BU01fUFJPQkUpCisKKyAgICBzdHJ1Y3Qg
UHJpbnRBcmcgeworICAgIAorICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAg
QWxsUmVnaXN0ZXJzLAorICAgICAgICAgICAgUmVnaXN0ZXJJRCwKKyAgICAgICAgICAgIEZQUmVn
aXN0ZXJJRCwKKyAgICAgICAgICAgIENvbnN0Q2hhclB0ciwKKyAgICAgICAgICAgIENvbnN0Vm9p
ZFB0ciwKKyAgICAgICAgICAgIEludHB0clZhbHVlLAorICAgICAgICAgICAgVWludHB0clZhbHVl
LAorICAgICAgICB9OworCisgICAgICAgIFByaW50QXJnKEFsbFJlZ2lzdGVycyYpCisgICAgICAg
ICAgICA6IHR5cGUoVHlwZTo6QWxsUmVnaXN0ZXJzKQorICAgICAgICB7CisgICAgICAgIH0KKwor
ICAgICAgICBQcmludEFyZyhSZWdpc3RlcklEIHJlZ0lEKQorICAgICAgICAgICAgOiB0eXBlKFR5
cGU6OlJlZ2lzdGVySUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuZ3BSZWdpc3RlcklEID0g
cmVnSUQ7CisgICAgICAgIH0KKworICAgICAgICBQcmludEFyZyhGUFJlZ2lzdGVySUQgcmVnSUQp
CisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6RlBSZWdpc3RlcklEKQorICAgICAgICB7CisgICAg
ICAgICAgICB1LmZwUmVnaXN0ZXJJRCA9IHJlZ0lEOworICAgICAgICB9CisKKyAgICAgICAgUHJp
bnRBcmcoY29uc3QgY2hhciogcHRyKQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OkNvbnN0Q2hh
clB0cikKKyAgICAgICAgeworICAgICAgICAgICAgdS5jb25zdENoYXJQdHIgPSBwdHI7CisgICAg
ICAgIH0KKworICAgICAgICBQcmludEFyZyhjb25zdCB2b2lkKiBwdHIpCisgICAgICAgICAgICA6
IHR5cGUoVHlwZTo6Q29uc3RWb2lkUHRyKQorICAgICAgICB7CisgICAgICAgICAgICB1LmNvbnN0
Vm9pZFB0ciA9IHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIFByaW50QXJnKGludCB2YWx1ZSkK
KyAgICAgICAgICAgIDogdHlwZShUeXBlOjpJbnRwdHJWYWx1ZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgdS5pbnRwdHJWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgUHJpbnRB
cmcodW5zaWduZWQgdmFsdWUpCisgICAgICAgICAgICA6IHR5cGUoVHlwZTo6VWludHB0clZhbHVl
KQorICAgICAgICB7CisgICAgICAgICAgICB1LmludHB0clZhbHVlID0gdmFsdWU7CisgICAgICAg
IH0KKworICAgICAgICBQcmludEFyZyhpbnRwdHJfdCB2YWx1ZSkKKyAgICAgICAgICAgIDogdHlw
ZShUeXBlOjpJbnRwdHJWYWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnRwdHJWYWx1
ZSA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgUHJpbnRBcmcodWludHB0cl90IHZhbHVl
KQorICAgICAgICAgICAgOiB0eXBlKFR5cGU6OlVpbnRwdHJWYWx1ZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS51aW50cHRyVmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgdW5pb24geworICAgICAgICAgICAgUmVnaXN0ZXJJRCBncFJlZ2lz
dGVySUQ7CisgICAgICAgICAgICBGUFJlZ2lzdGVySUQgZnBSZWdpc3RlcklEOworICAgICAgICAg
ICAgY29uc3QgY2hhciogY29uc3RDaGFyUHRyOworICAgICAgICAgICAgY29uc3Qgdm9pZCogY29u
c3RWb2lkUHRyOworICAgICAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7CisgICAgICAgICAg
ICB1aW50cHRyX3QgdWludHB0clZhbHVlOworICAgICAgICB9IHU7CisgICAgfTsKKworICAgIHR5
cGVkZWYgVmVjdG9yPFByaW50QXJnPiBQcmludEFyZ3NMaXN0OworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRmlyc3RBcmcsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KKyAgICBzdGF0aWMgdm9pZCBh
cHBlbmRQcmludEFyZyhQcmludEFyZ3NMaXN0KiBhcmdzTGlzdCwgRmlyc3RBcmcmIGZpcnN0QXJn
LCBBcmd1bWVudHMuLi4gb3RoZXJBcmdzKQorICAgIHsKKyAgICAgICAgYXJnc0xpc3QtPmFwcGVu
ZChQcmludEFyZyhmaXJzdEFyZykpOworICAgICAgICBhcHBlbmRQcmludEFyZyhhcmdzTGlzdCwg
b3RoZXJBcmdzLi4uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRQcmludEFyZyhQ
cmludEFyZ3NMaXN0KikgeyB9CisKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmd1
bWVudHM+CisgICAgc3RhdGljIHZvaWQgcHJpbnRJbnRlcm5hbChNYWNyb0Fzc2VtYmxlclR5cGUq
IG1hc20sIEFyZ3VtZW50cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgYXV0byBhcmdzTGlzdCA9
IHN0ZDo6bWFrZV91bmlxdWU8UHJpbnRBcmdzTGlzdD4oKTsKKyAgICAgICAgYXBwZW5kUHJpbnRB
cmcoYXJnc0xpc3QuZ2V0KCksIGFyZ3MuLi4pOworICAgICAgICBtYXNtLT5wcm9iZShwcmludENh
bGxiYWNrLCBhcmdzTGlzdC5yZWxlYXNlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHBy
aW50Q2FsbGJhY2soUHJvYmVDb250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgdHlwZWRl
ZiBQcmludEFyZyBBcmc7CisgICAgICAgIFByaW50QXJnc0xpc3QmIGFyZ3NMaXN0ID0KKyAgICAg
ICAgICAgICpyZWludGVycHJldF9jYXN0PFByaW50QXJnc0xpc3QqPihjb250ZXh0LT5hcmcxKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmdzTGlzdC5zaXplKCk7IGkrKykgewor
ICAgICAgICAgICAgYXV0byYgYXJnID0gYXJnc0xpc3RbaV07CisgICAgICAgICAgICBzd2l0Y2gg
KGFyZy50eXBlKSB7CisgICAgICAgICAgICBjYXNlIEFyZzo6VHlwZTo6QWxsUmVnaXN0ZXJzOgor
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRDUFUoY29udGV4dC0+Y3B1
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJnOjpUeXBlOjpS
ZWdpc3RlcklEOgorICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRSZWdp
c3Rlcihjb250ZXh0LT5jcHUsIGFyZy51LmdwUmVnaXN0ZXJJRCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEFyZzo6VHlwZTo6RlBSZWdpc3RlcklEOgorICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyVHlwZTo6cHJpbnRSZWdpc3Rlcihjb250ZXh0LT5jcHUs
IGFyZy51LmZwUmVnaXN0ZXJJRCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEFyZzo6VHlwZTo6Q29uc3RDaGFyUHRyOgorICAgICAgICAgICAgICAgIGRhdGFMb2co
YXJnLnUuY29uc3RDaGFyUHRyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgQXJnOjpUeXBlOjpDb25zdFZvaWRQdHI6CisgICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IiVwIiwgYXJnLnUuY29uc3RWb2lkUHRyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQXJnOjpUeXBlOjpJbnRwdHJWYWx1ZToKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKGFyZy51LmludHB0clZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQXJnOjpUeXBlOjpVaW50cHRyVmFsdWU6CisgICAgICAgICAgICAgICAgZGF0YUxv
ZyhhcmcudS51aW50cHRyVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCisK
K307IC8vIGNsYXNzIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwCShyZXZpc2lvbiAxNzYyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAxLDI1ICsxMDEsNDcgQEAgdm9pZCBNYWNyb0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aFVuYWxp
ZwogCiB2b2lkIE1hY3JvQXNzZW1ibGVyQVJNOjpwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYg
Y3B1LCBpbnQgaW5kZW50YXRpb24pCiB7Ci0gICAgI2RlZmluZSBEVU1QX0dQUkVHSVNURVIoX3R5
cGUsIF9yZWdOYW1lKSB7IFwKKyAgICAjZGVmaW5lIFBSSU5UX0dQUkVHSVNURVIoX3R5cGUsIF9y
ZWdOYW1lKSB7IFwKICAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
MzJfdD4oY3B1Ll9yZWdOYW1lKTsgXAogICAgICAgICBJTkRFTlQsIGRhdGFMb2dGKCIlNXM6IDB4
JTA4eCAgJWRcbiIsICNfcmVnTmFtZSwgdmFsdWUsIHZhbHVlKSA7IFwKICAgICB9Ci0gICAgRk9S
X0VBQ0hfQ1BVX0dQUkVHSVNURVIoRFVNUF9HUFJFR0lTVEVSKQotICAgIEZPUl9FQUNIX0NQVV9T
UEVDSUFMX1JFR0lTVEVSKERVTVBfR1BSRUdJU1RFUikKLSAgICAjdW5kZWYgRFVNUF9HUFJFR0lT
VEVSCisgICAgRk9SX0VBQ0hfQ1BVX0dQUkVHSVNURVIoUFJJTlRfR1BSRUdJU1RFUikKKyAgICBG
T1JfRUFDSF9DUFVfU1BFQ0lBTF9SRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgICN1bmRl
ZiBQUklOVF9HUFJFR0lTVEVSCiAKLSAgICAjZGVmaW5lIERVTVBfRlBSRUdJU1RFUihfdHlwZSwg
X3JlZ05hbWUpIHsgXAorICAgICNkZWZpbmUgUFJJTlRfRlBSRUdJU1RFUihfdHlwZSwgX3JlZ05h
bWUpIHsgXAogICAgICAgICB1aW50NjRfdCogdSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Qq
PigmY3B1Ll9yZWdOYW1lKTsgXAogICAgICAgICBkb3VibGUqIGQgPSByZWludGVycHJldF9jYXN0
PGRvdWJsZSo+KCZjcHUuX3JlZ05hbWUpOyBcCiAgICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1
czogMHglMDE2bGx4ICAlLjEzZ1xuIiwgI19yZWdOYW1lLCAqdSwgKmQpOyBcCiAgICAgfQotICAg
IEZPUl9FQUNIX0NQVV9GUFJFR0lTVEVSKERVTVBfRlBSRUdJU1RFUikKLSAgICAjdW5kZWYgRFVN
UF9GUFJFR0lTVEVSCisgICAgRk9SX0VBQ0hfQ1BVX0ZQUkVHSVNURVIoUFJJTlRfRlBSRUdJU1RF
UikKKyAgICAjdW5kZWYgUFJJTlRfRlBSRUdJU1RFUgogfQogCiAjdW5kZWYgSU5ERU5UCiAKK3Zv
aWQgTWFjcm9Bc3NlbWJsZXJBUk06OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3NlbWJsZXJBUk06OkNQ
VVN0YXRlJiBjcHUsIFJlZ2lzdGVySUQgcmVnSUQpCit7CisgICAgY29uc3QgY2hhciogbmFtZSA9
IENQVVN0YXRlOjpyZWdpc3Rlck5hbWUocmVnSUQpOworICAgIHVuaW9uIHsKKyAgICAgICAgdm9p
ZCogdm9pZFB0cjsKKyAgICAgICAgaW50cHRyX3QgaW50cHRyVmFsdWU7CisgICAgfSB1OworICAg
IHUudm9pZFB0ciA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKKyAgICBkYXRhTG9nRigiJXM6
PCVwICVsZD4iLCBuYW1lLCB1LnZvaWRQdHIsIHUuaW50cHRyVmFsdWUpOworfQorCit2b2lkIE1h
Y3JvQXNzZW1ibGVyQVJNOjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNOjpDUFVTdGF0
ZSYgY3B1LCBGUFJlZ2lzdGVySUQgcmVnSUQpCit7CisgICAgY29uc3QgY2hhciogbmFtZSA9IENQ
VVN0YXRlOjpyZWdpc3Rlck5hbWUocmVnSUQpOworICAgIHVuaW9uIHsKKyAgICAgICAgZG91Ymxl
IGRvdWJsZVZhbHVlOworICAgICAgICB1aW50NjRfdCB1aW50NjRWYWx1ZTsKKyAgICB9IHU7Cisg
ICAgdS5kb3VibGVWYWx1ZSA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsKKyAgICBkYXRhTG9n
RigiJXM6PDB4JTAxNmxseCAlLjEzZz4iLCBuYW1lLCB1LnVpbnQ2NFZhbHVlLCB1LmRvdWJsZVZh
bHVlKTsKK30KKwogZXh0ZXJuICJDIiB2b2lkIGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKIAog
Ly8gRm9yIGRldGFpbHMgb24gIldoYXQgY29kZSBpcyBlbWl0dGVkIGZvciB0aGUgcHJvYmU/IiBh
bmQgIldoYXQgdmFsdWVzIGFyZSBpbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gMTc2MjE2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDM2LDYgKzE0MzYsOCBAQCBwdWJsaWM6CiAgICAgLy8gTWV0aG9kcyBy
ZXF1aXJlZCBieSB0aGUgTUFTTV9QUk9CRSBtZWNoYW5pc20gYXMgZGVmaW5lZCBpbgogICAgIC8v
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaC4gCiAgICAgc3RhdGljIHZvaWQgcHJpbnRDUFVSZWdp
c3RlcnMoQ1BVU3RhdGUmLCBpbnQgaW5kZW50YXRpb24gPSAwKTsKKyAgICBzdGF0aWMgdm9pZCBw
cmludFJlZ2lzdGVyKENQVVN0YXRlJiwgUmVnaXN0ZXJJRCk7CisgICAgc3RhdGljIHZvaWQgcHJp
bnRSZWdpc3RlcihDUFVTdGF0ZSYsIEZQUmVnaXN0ZXJJRCk7CiAgICAgdm9pZCBwcm9iZShQcm9i
ZUZ1bmN0aW9uLCB2b2lkKiBhcmcxID0gMCwgdm9pZCogYXJnMiA9IDApOwogI2VuZGlmIC8vIEVO
QUJMRShNQVNNX1BST0JFKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNdjcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAJKHJldmlzaW9uIDE3NjIxNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDI1ICszNiw0NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogdm9p
ZCBNYWNyb0Fzc2VtYmxlckFSTXY3OjpwcmludENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYgY3B1LCBp
bnQgaW5kZW50YXRpb24pCiB7Ci0gICAgI2RlZmluZSBEVU1QX0dQUkVHSVNURVIoX3R5cGUsIF9y
ZWdOYW1lKSB7IFwKKyAgICAjZGVmaW5lIFBSSU5UX0dQUkVHSVNURVIoX3R5cGUsIF9yZWdOYW1l
KSB7IFwKICAgICAgICAgaW50MzJfdCB2YWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50MzJfdD4o
Y3B1Ll9yZWdOYW1lKTsgXAogICAgICAgICBJTkRFTlQsIGRhdGFMb2dGKCIlNXM6IDB4JTA4eCAg
JWRcbiIsICNfcmVnTmFtZSwgdmFsdWUsIHZhbHVlKSA7IFwKICAgICB9Ci0gICAgRk9SX0VBQ0hf
Q1BVX0dQUkVHSVNURVIoRFVNUF9HUFJFR0lTVEVSKQotICAgIEZPUl9FQUNIX0NQVV9TUEVDSUFM
X1JFR0lTVEVSKERVTVBfR1BSRUdJU1RFUikKLSAgICAjdW5kZWYgRFVNUF9HUFJFR0lTVEVSCisg
ICAgRk9SX0VBQ0hfQ1BVX0dQUkVHSVNURVIoUFJJTlRfR1BSRUdJU1RFUikKKyAgICBGT1JfRUFD
SF9DUFVfU1BFQ0lBTF9SRUdJU1RFUihQUklOVF9HUFJFR0lTVEVSKQorICAgICN1bmRlZiBQUklO
VF9HUFJFR0lTVEVSCiAKLSAgICAjZGVmaW5lIERVTVBfRlBSRUdJU1RFUihfdHlwZSwgX3JlZ05h
bWUpIHsgXAorICAgICNkZWZpbmUgUFJJTlRfRlBSRUdJU1RFUihfdHlwZSwgX3JlZ05hbWUpIHsg
XAogICAgICAgICB1aW50NjRfdCogdSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3QqPigmY3B1
Ll9yZWdOYW1lKTsgXAogICAgICAgICBkb3VibGUqIGQgPSByZWludGVycHJldF9jYXN0PGRvdWJs
ZSo+KCZjcHUuX3JlZ05hbWUpOyBcCiAgICAgICAgIElOREVOVCwgZGF0YUxvZ0YoIiU1czogMHgl
MDE2bGx4ICAlLjEzZ1xuIiwgI19yZWdOYW1lLCAqdSwgKmQpOyBcCiAgICAgfQotICAgIEZPUl9F
QUNIX0NQVV9GUFJFR0lTVEVSKERVTVBfRlBSRUdJU1RFUikKLSAgICAjdW5kZWYgRFVNUF9GUFJF
R0lTVEVSCisgICAgRk9SX0VBQ0hfQ1BVX0ZQUkVHSVNURVIoUFJJTlRfRlBSRUdJU1RFUikKKyAg
ICAjdW5kZWYgUFJJTlRfRlBSRUdJU1RFUgogfQogCiAjdW5kZWYgSU5ERU5UCiAKK3ZvaWQgTWFj
cm9Bc3NlbWJsZXJBUk12Nzo6cHJpbnRSZWdpc3RlcihNYWNyb0Fzc2VtYmxlckFSTXY3OjpDUFVT
dGF0ZSYgY3B1LCBSZWdpc3RlcklEIHJlZ0lEKQoreworICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBD
UFVTdGF0ZTo6cmVnaXN0ZXJOYW1lKHJlZ0lEKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHZvaWQq
IHZvaWRQdHI7CisgICAgICAgIGludHB0cl90IGludHB0clZhbHVlOworICAgIH0gdTsKKyAgICB1
LnZvaWRQdHIgPSBjcHUucmVnaXN0ZXJWYWx1ZShyZWdJRCk7CisgICAgZGF0YUxvZ0YoIiVzOjwl
cCAlbGQ+IiwgbmFtZSwgdS52b2lkUHRyLCB1LmludHB0clZhbHVlKTsKK30KKwordm9pZCBNYWNy
b0Fzc2VtYmxlckFSTXY3OjpwcmludFJlZ2lzdGVyKE1hY3JvQXNzZW1ibGVyQVJNdjc6OkNQVVN0
YXRlJiBjcHUsIEZQUmVnaXN0ZXJJRCByZWdJRCkKK3sKKyAgICBjb25zdCBjaGFyKiBuYW1lID0g
Q1BVU3RhdGU6OnJlZ2lzdGVyTmFtZShyZWdJRCk7CisgICAgdW5pb24geworICAgICAgICBkb3Vi
bGUgZG91YmxlVmFsdWU7CisgICAgICAgIHVpbnQ2NF90IHVpbnQ2NFZhbHVlOworICAgIH0gdTsK
KyAgICB1LmRvdWJsZVZhbHVlID0gY3B1LnJlZ2lzdGVyVmFsdWUocmVnSUQpOworICAgIGRhdGFM
b2dGKCIlczo8MHglMDE2bGx4ICUuMTNnPiIsIG5hbWUsIHUudWludDY0VmFsdWUsIHUuZG91Ymxl
VmFsdWUpOworfQorCiBleHRlcm4gIkMiIHZvaWQgY3RpTWFzbVByb2JlVHJhbXBvbGluZSgpOwog
CiAvLyBGb3IgZGV0YWlscyBvbiAiV2hhdCBjb2RlIGlzIGVtaXR0ZWQgZm9yIHRoZSBwcm9iZT8i
IGFuZCAiV2hhdCB2YWx1ZXMgYXJlIGluCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gMTc2MjE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5MDUsNiArMTkwNSw4IEBAIHB1YmxpYzoKICAgICAvLyBN
ZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBNQVNNX1BST0JFIG1lY2hhbmlzbSBhcyBkZWZpbmVkIGlu
CiAgICAgLy8gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oLiAKICAgICBzdGF0aWMgdm9pZCBwcmlu
dENQVVJlZ2lzdGVycyhDUFVTdGF0ZSYsIGludCBpbmRlbnRhdGlvbiA9IDApOworICAgIHN0YXRp
YyB2b2lkIHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBSZWdpc3RlcklEKTsKKyAgICBzdGF0aWMg
dm9pZCBwcmludFJlZ2lzdGVyKENQVVN0YXRlJiwgRlBSZWdpc3RlcklEKTsKICAgICB2b2lkIHBy
b2JlKFByb2JlRnVuY3Rpb24sIHZvaWQqIGFyZzEgPSAwLCB2b2lkKiBhcmcyID0gMCk7CiAjZW5k
aWYgLy8gRU5BQkxFKE1BU01fUFJPQkUpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwCShy
ZXZpc2lvbiAxNzYyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMjggQEAg
dm9pZCBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6cHJpbnRDUFVSZQogCiAjdW5kZWYgSU5ERU5U
CiAKK3ZvaWQgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OnByaW50UmVnaXN0ZXIoTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OkNQVVN0YXRlJiBjcHUsIFJlZ2lzdGVySUQgcmVnSUQpCit7CisgICAg
Y29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRlOjpyZWdpc3Rlck5hbWUocmVnSUQpOworICAgIHVu
aW9uIHsKKyAgICAgICAgdm9pZCogdm9pZFB0cjsKKyAgICAgICAgaW50cHRyX3QgaW50cHRyVmFs
dWU7CisgICAgfSB1OworICAgIHUudm9pZFB0ciA9IGNwdS5yZWdpc3RlclZhbHVlKHJlZ0lEKTsK
KyAgICBkYXRhTG9nRigiJXM6PCVwICVsZD4iLCBuYW1lLCB1LnZvaWRQdHIsIHUuaW50cHRyVmFs
dWUpOworfQorCit2b2lkIE1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpwcmludFJlZ2lzdGVyKE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpDUFVTdGF0ZSYgY3B1LCBGUFJlZ2lzdGVySUQgcmVnSUQp
Cit7CisgICAgY29uc3QgY2hhciogbmFtZSA9IENQVVN0YXRlOjpyZWdpc3Rlck5hbWUocmVnSUQp
OworICAgIHVuaW9uIHsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOworICAgICAgICB1aW50
NjRfdCB1aW50NjRWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5kb3VibGVWYWx1ZSA9IGNwdS5yZWdp
c3RlclZhbHVlKHJlZ0lEKTsKKyAgICBkYXRhTG9nRigiJXM6PDB4JTAxNmxseCAlLjEzZz4iLCBu
YW1lLCB1LnVpbnQ2NFZhbHVlLCB1LmRvdWJsZVZhbHVlKTsKK30KKwogZXh0ZXJuICJDIiB2b2lk
IGN0aU1hc21Qcm9iZVRyYW1wb2xpbmUoKTsKIAogLy8gV2hhdCBjb2RlIGlzIGVtaXR0ZWQgZm9y
IHRoZSBwcm9iZT8KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE3NjIxNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ3Myw2ICsxNDczLDggQEAgcHVibGljOgogICAgIC8vIE1ldGhv
ZHMgcmVxdWlyZWQgYnkgdGhlIE1BU01fUFJPQkUgbWVjaGFuaXNtIGFzIGRlZmluZWQgaW4KICAg
ICAvLyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmguIAogICAgIHN0YXRpYyB2b2lkIHByaW50Q1BV
UmVnaXN0ZXJzKENQVVN0YXRlJiwgaW50IGluZGVudGF0aW9uID0gMCk7CisgICAgc3RhdGljIHZv
aWQgcHJpbnRSZWdpc3RlcihDUFVTdGF0ZSYsIFJlZ2lzdGVySUQpOworICAgIHN0YXRpYyB2b2lk
IHByaW50UmVnaXN0ZXIoQ1BVU3RhdGUmLCBGUFJlZ2lzdGVySUQpOwogICAgIHZvaWQgcHJvYmUo
UHJvYmVGdW5jdGlvbiwgdm9pZCogYXJnMSA9IDAsIHZvaWQqIGFyZzIgPSAwKTsKICNlbmRpZiAv
LyBFTkFCTEUoTUFTTV9QUk9CRSkKIAo=
</data>
<flag name="review"
          id="266601"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>