<?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>123076</bug_id>
          
          <creation_ts>2013-10-19 20:45:48 -0700</creation_ts>
          <short_desc>StructureStubInfo&apos;s usedRegisters set should be able to track all registers, not just the ones that our JIT&apos;s view as temporaries</short_desc>
          <delta_ts>2013-10-21 02:48:09 -0700</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>All</rep_platform>
          <op_sys>All</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>123077</dependson>
    
    <dependson>123079</dependson>
          <blocked>122739</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>atrick</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>941634</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-19 20:45:48 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941713</commentid>
    <comment_count>1</comment_count>
      <attachid>214704</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-20 11:50:54 -0700</bug_when>
    <thetext>Created attachment 214704
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941718</commentid>
    <comment_count>2</comment_count>
      <attachid>214706</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-20 14:19:14 -0700</bug_when>
    <thetext>Created attachment 214706
the patch

Heh.  It seems to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941719</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-20 14:20:26 -0700</bug_when>
    <thetext>Attachment 214706 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssembler.h&apos;, u&apos;Source/JavaScriptCore/bytecode/StructureStubInfo.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/ftl/FTLSaveRestore.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITInlineCacheGenerator.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITInlineCacheGenerator.h&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/RegisterSet.cpp&apos;, u&apos;Source/JavaScriptCore/jit/RegisterSet.h&apos;, u&apos;Source/JavaScriptCore/jit/Repatch.cpp&apos;, u&apos;Source/JavaScriptCore/jit/TempRegisterSet.cpp&apos;, u&apos;Source/JavaScriptCore/jit/TempRegisterSet.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/BitVector.cpp&apos;, u&apos;Source/WTF/wtf/BitVector.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecode/StructureStubInfo.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/JITInlineCacheGenerator.h:59:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 22 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>941724</commentid>
    <comment_count>4</comment_count>
      <attachid>214706</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-20 17:44:06 -0700</bug_when>
    <thetext>Comment on attachment 214706
the patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:41
&gt;&gt; +#include &quot;RegisterSet.h&quot;
&gt; 
&gt; Alphabetical sorting problem.  [build/include_order] [4]

Sort please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941727</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-20 21:49:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 214706 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=214706&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/bytecode/StructureStubInfo.h:41
&gt; &gt;&gt; +#include &quot;RegisterSet.h&quot;
&gt; &gt; 
&gt; &gt; Alphabetical sorting problem.  [build/include_order] [4]
&gt; 
&gt; Sort please.

Fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941728</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-20 21:50:06 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/157707</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941787</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-21 02:48:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Landed in http://trac.webkit.org/changeset/157707

FYI: It broke the Apple Windows build:

   1&gt;JITPropertyAccess32_64.obj : error LNK2019: unresolved external symbol &quot;public: static class JSC::RegisterSet __cdecl JSC::RegisterSet::specialRegisters(void)&quot; (?specialRegisters@RegisterSet@JSC@@SA?AV12@XZ) referenced in function &quot;private: void __thiscall JSC::JIT::emit_op_get_by_id(struct JSC::Instruction *)&quot; (?emit_op_get_by_id@JIT@JSC@@AAEXPAUInstruction@2@@Z)
     1&gt;Repatch.obj : error LNK2019: unresolved external symbol &quot;public: __thiscall JSC::TempRegisterSet::TempRegisterSet(class JSC::RegisterSet const &amp;)&quot; (??0TempRegisterSet@JSC@@QAE@ABVRegisterSet@1@@Z) referenced in function &quot;void __cdecl JSC::generateProtoChainAccessStub(class JSC::ExecState *,struct JSC::StructureStubInfo &amp;,class JSC::StructureChain *,unsigned int,int,class JSC::Structure *,class JSC::CodeLocationLabel,class JSC::CodeLocationLabel,class WTF::RefPtr&lt;class JSC::JITStubRoutine&gt; &amp;)&quot; (?generateProtoChainAccessStub@JSC@@YAXPAVExecState@1@AAUStructureStubInfo@1@PAVStructureChain@1@IHPAVStructure@1@VCodeLocationLabel@1@4AAV?$RefPtr@VJITStubRoutine@JSC@@@WTF@@@Z)
     1&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\JavaScriptCore.dll : fatal error LNK1120: 2 unresolved externals
     1&gt;Done Building Project &quot;C:\cygwin\home\buildbot\slave\win-release\build\Source\JavaScriptCore\JavaScriptCore.vcxproj\JavaScriptCore.vcxproj&quot; (build target(s)) -- FAILED.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214704</attachid>
            <date>2013-10-20 11:50:54 -0700</date>
            <delta_ts>2013-10-20 14:19:14 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25969</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNTc2OTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzY5LDYgKzM2OSw4IEBACiAJCTBGQzA5NzkyMTQ2QTZG
NzMwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OEYxNDZBNkY2MzAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlci5jcHAgKi87IH07CiAJCTBGQzA5N0ExMTQ2QjI4Q0EwMENGMjQ0MiAv
KiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZDMDk3OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgKi87IH07CiAJ
CTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVua3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5N0EwMTQ2QjI4QzcwMENGMjQ0MiAv
KiBERkdUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzMxNDEwMTgxNDU1OTEw
MDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0
ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgKi87IH07CiAJ
CTBGQzcxMkRFMTdDRDg3NzkwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzEy
REMxN0NEODc3ODAwOENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi87
IH07CiAJCTBGQzcxMkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzcxMkREMTdDRDg3NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM3MTJF
MjE3Q0Q4NzkxMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzEy
RTAxN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmNwcCAqLzsgfTsKQEAgLTE2MzAsNiArMTYzMiw4IEBACiAJCTBGQzA5NzhGMTQ2QTZGNjMwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHT1NSRXhpdENvbXBpbGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc5RjE0NkIy
OEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR1RodW5rcy5jcHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1Ro
dW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3MuaDsgcGF0
aCA9IGRmZy9ERkdUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMzE0
MTAxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlZ2lzdGVyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGQzMxNDExMTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcFJlZ2lzdGVyU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNzEyREMxN0NEODc3ODAwOENDOTNDIC8qIERlZmVy
cmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJlZENv
bXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM3
MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkM3MTJFMDE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklUVG9ERkdEZWZl
cnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVG9ERkdE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjkwOCwxMSArMjkxMiwxMyBAQAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIwNSAv
KiBKU0ludGVyZmFjZUpJVC5oICovLAogCQkJCTBGNzY2RDMyMTVBRTI1MzUwMDhGMzYzRSAvKiBK
dW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjc2NkQzMzE1QUUyNTM1MDA4
RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oICovLAorCQkJCTBGQzMxNDEwMTgx
NDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovLAogCQkJCTBGMjRFNTQ5MTdFRTI3NDkw
MEFCQjIxNyAvKiBSZXBhdGNoLmNwcCAqLywKIAkJCQkwRjI0RTU0QTE3RUUyNzQ5MDBBQkIyMTcg
LyogUmVwYXRjaC5oICovLAogCQkJCTBGMjRFNTRCMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaCAqLywKIAkJCQlBNzA5RjJFRjE3QTBBQzA0MDA1MTJFOTggLyog
U2xvd1BhdGhDYWxsLmggKi8sCiAJCQkJQTczODY1NTExMTg2OTdCNDAwNTQwMjc5IC8qIFNwZWNp
YWxpemVkVGh1bmtKSVQuaCAqLywKKwkJCQkwRkMzMTQxMTE4MTQ1NTkxMDAwMzMyMzIgLyogVGVt
cFJlZ2lzdGVyU2V0LmNwcCAqLywKIAkJCQkwRjI0RTU0ODE3RUUyNzQ5MDBBQkIyMTcgLyogVGVt
cFJlZ2lzdGVyU2V0LmggKi8sCiAJCQkJMEY1NzJENEQxNjg3OUZEQjAwRTU3RkJEIC8qIFRodW5r
R2VuZXJhdG9yLmggKi8sCiAJCQkJQTczODY1NTIxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2Vu
ZXJhdG9ycy5jcHAgKi8sCkBAIC00NTEwLDYgKzQ1MTYsNyBAQAogCQkJCTg2RDNCMkM2MTAxNTZC
REUwMDI4NjVFNyAvKiBNYWNyb0Fzc2VtYmxlckFSTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZB
REQxNDYwRkRERUE5ODAwMDZFRUMyIC8qIE1hY3JvQXNzZW1ibGVyQVJNdjcuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2M0IyM0UwMEZDNjExODkwMDcwM0FBNCAvKiBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzMxNDEyMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdp
c3RlclNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZBRTY0QTkxMzVFNUUx
QzAwOTYzMDEyIC8qIE1hY3JvQXNzZW1ibGVyU0g0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjAx
NjFFNDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCBpbiBIZWFkZXJzICov
LApAQCAtNTEyNCw2ICs1MTMxLDcgQEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyog
QXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRTEwN0VDMzc2MDA0MjdBNDgg
LyogQXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlG
OTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkMzMTQx
MzE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTc0REUxRDAxMjBCODc1NjAwRDQwRDVCIC8qIEFSTXY3QXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rp
c2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE1NzY5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwzNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RlBSZWdpc3RlcklEPihyZWcgKyAxKTsKICAgICB9CisgICAgCisgICAg
c3RhdGljIHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBsYXN0UmVnaXN0ZXIoKSAtIGZpcnN0UmVnaXN0ZXIoKSArIDE7CisgICAgfQorICAgIAorICAg
IHN0YXRpYyB1bnNpZ25lZCByZWdpc3RlckluZGV4KFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJlZyAtIGZpcnN0UmVnaXN0ZXIoKTsKKyAgICB9CisgICAgCisgICAgc3Rh
dGljIHVuc2lnbmVkIG51bWJlck9mRlBSZWdpc3RlcnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGxhc3RGUFJlZ2lzdGVyKCkgLSBmaXJzdEZQUmVnaXN0ZXIoKSArIDE7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyB1bnNpZ25lZCBmcFJlZ2lzdGVySW5kZXgoRlBSZWdpc3RlcklEIHJlZykKKyAg
ICB7CisgICAgICAgIHJldHVybiByZWcgLSBmaXJzdEZQUmVnaXN0ZXIoKTsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIHVuc2lnbmVkIHJlZ2lzdGVySW5kZXgoRlBSZWdpc3RlcklEIHJlZykKKyAg
ICB7CisgICAgICAgIHJldHVybiBmcFJlZ2lzdGVySW5kZXgocmVnKSArIG51bWJlck9mUmVnaXN0
ZXJzKCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyB1bnNpZ25lZCB0b3RhbE51bWJlck9mUmVn
aXN0ZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBudW1iZXJPZlJlZ2lzdGVycygpICsgbnVt
YmVyT2ZGUFJlZ2lzdGVycygpOworICAgIH0KIAogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFz
ZTo6cG9wOwogICAgIHVzaW5nIE1hY3JvQXNzZW1ibGVyQmFzZTo6anVtcDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5oCShy
ZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUg
IlBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCIKLSNpbmNsdWRl
ICJUZW1wUmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0yMzAsNyArMjMwLDcgQEAgc3Ry
dWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKICAgICAgICAgaW50OF90IHZhbHVlVGFnR1BSOwogI2Vu
ZGlmCiAgICAgICAgIGludDhfdCB2YWx1ZUdQUjsKLSAgICAgICAgVGVtcFJlZ2lzdGVyU2V0IHVz
ZWRSZWdpc3RlcnM7CisgICAgICAgIFJlZ2lzdGVyU2V0IHVzZWRSZWdpc3RlcnM7CiAgICAgICAg
IGludDMyX3QgZGVsdGFDYWxsVG9Eb25lOwogICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3Rv
cmFnZUxvYWQ7CiAgICAgICAgIGludDMyX3QgZGVsdGFDYWxsVG9TdHJ1Y3RDaGVjazsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSwyNiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpmb3J3YXJkVHlwZUNoZWNrKEpTCiAgICAgY29udmVydExhc3RPU1JFeGl0VG9G
b3J3YXJkKHZhbHVlUmVjb3ZlcnkpOwogfQogCitSZWdpc3RlclNldCBTcGVjdWxhdGl2ZUpJVDo6
dXNlZFJlZ2lzdGVycygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIAorICAgIGZv
ciAodW5zaWduZWQgaSA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7CisgICAg
ICAgIEdQUlJlZyBncHIgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICBpZiAobV9n
cHJzLmlzSW5Vc2UoZ3ByKSkKKyAgICAgICAgICAgIHJlc3VsdC5zZXQoZ3ByKTsKKyAgICB9Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsK
KyAgICAgICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgIGlm
IChtX2ZwcnMuaXNJblVzZShmcHIpKQorICAgICAgICAgICAgcmVzdWx0LnNldChmcHIpOworICAg
IH0KKyAgICAKKyAgICByZXN1bHQubWVyZ2UoUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMo
KSk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
YWRkU2xvd1BhdGhHZW5lcmF0b3IoUGFzc093blB0cjxTbG93UGF0aEdlbmVyYXRvcj4gc2xvd1Bh
dGhHZW5lcmF0b3IpCiB7CiAgICAgbV9zbG93UGF0aEdlbmVyYXRvcnMuYXBwZW5kKHNsb3dQYXRo
R2VuZXJhdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHJldmlzaW9uIDE1NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDIxICsyNzgsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHVzZShub2RlVXNlLm5vZGUoKSk7CiAgICAgfQogICAgIAotICAg
IFRlbXBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzKCkKLSAgICB7Ci0gICAgICAgIFRlbXBSZWdp
c3RlclNldCByZXN1bHQ7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IEdQUkluZm86Om51bWJl
ck9mUmVnaXN0ZXJzOyBpLS07KSB7Ci0gICAgICAgICAgICBHUFJSZWcgZ3ByID0gR1BSSW5mbzo6
dG9SZWdpc3RlcihpKTsKLSAgICAgICAgICAgIGlmIChtX2dwcnMuaXNJblVzZShncHIpKQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5zZXQoZ3ByKTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBGUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewotICAgICAgICAg
ICAgRlBSUmVnIGZwciA9IEZQUkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAgICAgICBpZiAo
bV9mcHJzLmlzSW5Vc2UoZnByKSkKLSAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGZwcik7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgUmVnaXN0ZXJTZXQg
dXNlZFJlZ2lzdGVycygpOwogICAgIAogICAgIGJvb2wgbWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdh
dGNocG9pbnRJc1N0aWxsVmFsaWQoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAko
cmV2aXNpb24gMTU3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVz
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBGVEwgewogCiBzdGF0aWMgc2l6ZV90IGJ5dGVzRm9yR1BScygpCiB7Ci0gICAg
cmV0dXJuIChNYWNyb0Fzc2VtYmxlcjo6bGFzdFJlZ2lzdGVyKCkgLSBNYWNyb0Fzc2VtYmxlcjo6
Zmlyc3RSZWdpc3RlcigpICsgMSkgKiBzaXplb2YoaW50NjRfdCk7CisgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpICogc2l6ZW9mKGludDY0X3QpOwogfQogCiBz
dGF0aWMgc2l6ZV90IGJ5dGVzRm9yRlBScygpCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBzaXpl
X3QgYnl0ZXNGb3JGUFJzKCkKICAgICAvLyBGSVhNRTogSXQgbWlnaHQgYmUgd29ydGh3aGlsZSBz
YXZpbmcgdGhlIGZ1bGwgc3RhdGUgb2YgdGhlIEZQIHJlZ2lzdGVycywgYXQgc29tZSBwb2ludC4K
ICAgICAvLyBSaWdodCBub3cgd2UgZG9uJ3QgbmVlZCB0aGlzIHNpbmNlIHdlIG9ubHkgZG8gdGhl
IHNhdmUvcmVzdG9yZSBqdXN0IHByaW9yIHRvIE9TUiBleGl0LCBhbmQKICAgICAvLyBPU1IgZXhp
dCB3aWxsIGJlIGd1YXJhbnRlZWQgdG8gb25seSBuZWVkIHRoZSBkb3VibGUgcG9ydGlvbiBvZiB0
aGUgRlAgcmVnaXN0ZXJzLgotICAgIHJldHVybiAoTWFjcm9Bc3NlbWJsZXI6Omxhc3RGUFJlZ2lz
dGVyKCkgLSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RGUFJlZ2lzdGVyKCkgKyAxKSAqIHNpemVvZihk
b3VibGUpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lzdGVycygp
ICogc2l6ZW9mKGRvdWJsZSk7CiB9CiAKIHNpemVfdCByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXpl
SW5CeXRlcygpCkBAIC01NCwxMiArNTQsMTIgQEAgc2l6ZV90IHJlcXVpcmVkU2NyYXRjaE1lbW9y
eVNpemVJbkJ5dGVzKAogCiBzaXplX3Qgb2Zmc2V0T2ZHUFIoR1BSUmVnIHJlZykKIHsKLSAgICBy
ZXR1cm4gKHJlZyAtIE1hY3JvQXNzZW1ibGVyOjpmaXJzdFJlZ2lzdGVyKCkpICogc2l6ZW9mKGlu
dDY0X3QpOworICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRleChyZWcpICog
c2l6ZW9mKGludDY0X3QpOwogfQogCiBzaXplX3Qgb2Zmc2V0T2ZGUFIoRlBSUmVnIHJlZykKIHsK
LSAgICByZXR1cm4gYnl0ZXNGb3JHUFJzKCkgKyAocmVnIC0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0
RlBSZWdpc3RlcigpKSAqIHNpemVvZihkb3VibGUpOworICAgIHJldHVybiBieXRlc0ZvckdQUnMo
KSArIGZwUmVnaXN0ZXJJbmRleChyZWcpICogc2l6ZW9mKGRvdWJsZSk7CiB9CiAKIHZvaWQgc2F2
ZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVtb3J5KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNo
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE1NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3
ICs0Miw3IEBAIEpJVElubGluZUNhY2hlR2VuZXJhdG9yOjpKSVRJbmxpbmVDYWNoZUcKIH0KIAog
SklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdlbmVyYXRvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRS
ZWdpc3RlcnMsCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCiAgICAgSlNWYWx1ZVJlZ3MgYmFz
ZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCkKICAgICA6IEpJVElu
bGluZUNhY2hlR2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbikKICAgICAsIG1fYmFzZShi
YXNlKQpAQCAtNTIsNyArNTIsNyBAQCBKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9y
KAogICAgIG1fc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMgPSB1c2VkUmVnaXN0ZXJzOwog
ICAgIAogICAgIC8vIFRoaXMgaXMgYSBjb252ZW5pZW5jZSAtIGluIGNhc2VzIHdoZXJlIHRoZSBv
bmx5IHJlZ2lzdGVycyB5b3UncmUgdXNpbmcgYXJlIGJhc2UvdmFsdWUsCi0gICAgLy8gaXQgYWxs
b3dzIHlvdSB0byBwYXNzIFRlbXBSZWdpc3RlclNldCgpIGFzIHRoZSB1c2VkUmVnaXN0ZXJzIGFy
Z3VtZW50LgorICAgIC8vIGl0IGFsbG93cyB5b3UgdG8gcGFzcyBSZWdpc3RlclNldCgpIGFzIHRo
ZSB1c2VkUmVnaXN0ZXJzIGFyZ3VtZW50LgogICAgIG1fc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdp
c3RlcnMuc2V0KGJhc2UpOwogICAgIG1fc3R1YkluZm8tPnBhdGNoLnVzZWRSZWdpc3RlcnMuc2V0
KHZhbHVlKTsKICAgICAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIEpJVEdldEJ5SWRHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhCiB9CiAKIEpJVFB1dEJ5SWRHZW5lcmF0b3I6OkpJVFB1dEJ5SWRH
ZW5lcmF0b3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2Vk
UmVnaXN0ZXJzLAogICAgIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJS
ZWcgc2NyYXRjaCwgYm9vbCByZWdpc3RlcnNGbHVzaGVkLAogICAgIEVDTUFNb2RlIGVjbWFNb2Rl
LCBQdXRLaW5kIHB1dEtpbmQpCiAgICAgOiBKSVRCeUlkR2VuZXJhdG9yKGNvZGVCbG9jaywgY29k
ZU9yaWdpbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFsdWUsIHJlZ2lzdGVyc0ZsdXNoZWQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdl
bmVyYXRvci5oCShyZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgog
I2luY2x1ZGUgIlB1dEtpbmQuaCIKKyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNTUsNyArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSklUQnlJZEdlbmVy
YXRvcigpIHsgfQogCiAgICAgSklUQnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsCisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFJl
Z2lzdGVyU2V0JiwgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNWYWx1ZVJlZ3MgdmFsdWUsCiAgICAgICAg
IGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCk7CiAgICAgCiBwdWJsaWM6CkBAIC05Miw3ICs5Myw3IEBA
IHB1YmxpYzoKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRHZXRCeUlk
R2VuZXJhdG9yKAotICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsCisgICAgICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVy
U2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVn
cyB2YWx1ZSwgYm9vbCByZWdpc3RlcnNGbHVzaGVkKQogICAgICAgICA6IEpJVEJ5SWRHZW5lcmF0
b3IoY29kZUJsb2NrLCBjb2RlT3JpZ2luLCB1c2VkUmVnaXN0ZXJzLCBiYXNlLCB2YWx1ZSwgcmVn
aXN0ZXJzRmx1c2hlZCkKICAgICB7CkBAIC0xMDYsNyArMTA3LDcgQEAgcHVibGljOgogICAgIEpJ
VFB1dEJ5SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IoCi0gICAg
ICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJl
Z2lzdGVycywgSlNWYWx1ZVJlZ3MgYmFzZSwKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdp
biwgY29uc3QgUmVnaXN0ZXJTZXQmIHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsCiAg
ICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlLCBHUFJSZWcgc2NyYXRjaCwgYm9vbCByZWdpc3RlcnNG
bHVzaGVkLCBFQ01BTW9kZSwgUHV0S2luZCk7CiAgICAgCiAgICAgdm9pZCBnZW5lcmF0ZUZhc3RQ
YXRoKE1hY3JvQXNzZW1ibGVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDE1NzY5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQoSW5zdHJ1Y3Rpb24qCiAgICAgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0g
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBUZW1wUmVn
aXN0ZXJTZXQoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9m
ZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIHRydWUp
OwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4u
c2xvd1BhdGhKdW1wKCkpOwpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0V3JpdGVCYXJyaWVyKHJlZ1QwLCByZWdUMSwg
cmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0ZUJhcnJpZXJGb3JQcm9w
ZXJ0eUFjY2Vzcyk7CiAgICAgCiAgICAgSklUUHV0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAg
IG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBUZW1wUmVnaXN0ZXJT
ZXQoKSwKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCks
IFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzOjpw
YXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QzLCByZWdUMiksIHJlZ1QxLCB0cnVl
LAogICAgICAgICBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgZGlyZWN0ID8gRGlyZWN0IDogTm90
RGlyZWN0KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIzLDcg
KzUyMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioKICAgICB9
CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENv
ZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIFRlbXBSZWdpc3RlclNldCgpLAorICAgICAgICBt
X2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNw
ZWNpYWxSZWdpc3RlcnMoKSwKICAgICAgICAgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMCksIHRydWUpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBh
ZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwpAQCAtNTY5LDggKzU2OSw5IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0V3JpdGVCYXJyaWVy
KHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCBTaG91bGRGaWx0ZXJJbW1lZGlhdGVzLCBXcml0
ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcyk7CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yIGdl
bigKLSAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIFRl
bXBSZWdpc3RlclNldCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksCi0gICAgICAgIEpTVmFsdWVSZWdz
KHJlZ1QxKSwgcmVnVDIsIHRydWUsIG1fY29kZUJsb2NrLT5lY21hTW9kZSgpLCBkaXJlY3QgPyBE
aXJlY3QgOiBOb3REaXJlY3QpOworICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5
dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnNwZWNpYWxSZWdpc3RlcnMoKSwKKyAgICAgICAg
SlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSksIHJlZ1QyLCB0cnVlLCBtX2Nv
ZGVCbG9jay0+ZWNtYU1vZGUoKSwKKyAgICAgICAgZGlyZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0
KTsKICAgICAKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVnaXN0ZXJTZXQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNs
dWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK1JlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCkKK3sK
KyAgICBSZWdpc3RlclNldCByZXN1bHQ7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9pbnRlclJl
Z2lzdGVyKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KEdQUkluZm86OnRhZ01hc2tSZWdp
c3Rlcik7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlZ2lzdGVyU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFJlZ2lzdGVy
U2V0X2gKKyNkZWZpbmUgUmVnaXN0ZXJTZXRfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQ
UkluZm8uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlRlbXBSZWdp
c3RlclNldC5oIgorI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFJlZ2lzdGVyU2V0IHsKK3B1YmxpYzoKKyAgICBSZWdpc3RlclNldCgpIHsgfQor
ICAgIAorICAgIHN0YXRpYyBSZWdpc3RlclNldCBzcGVjaWFsUmVnaXN0ZXJzKCk7CisKKyAgICB2
b2lkIHNldChHUFJSZWcgcmVnLCBib29sIHZhbHVlID0gdHJ1ZSkKKyAgICB7CisgICAgICAgIG1f
dmVjdG9yLnNldChNYWNyb0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRleChyZWcpLCB2YWx1ZSk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgZ2V0KEdQUlJlZyByZWcpIHsgcmV0dXJuIG1fdmVjdG9yLmdl
dChNYWNyb0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRleChyZWcpKTsgfQorICAgIAorICAgIHZvaWQg
c2V0KEZQUlJlZyByZWcsIGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIHsKKyAgICAgICAgbV92ZWN0
b3Iuc2V0KE1hY3JvQXNzZW1ibGVyOjpyZWdpc3RlckluZGV4KHJlZyksIHZhbHVlKTsKKyAgICB9
CisgICAgCisgICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KE1h
Y3JvQXNzZW1ibGVyOjpyZWdpc3RlckluZGV4KHJlZykpOyB9CisgICAgCisgICAgdm9pZCBtZXJn
ZShjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIHsgbV92ZWN0b3IubWVyZ2Uob3RoZXIubV92ZWN0
b3IpOyB9CisgICAgCitwcml2YXRlOgorICAgIEJpdFZlY3RvciBtX3ZlY3RvcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIFJl
Z2lzdGVyU2V0X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UZW1wUmVnaXN0
ZXJTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJl
Z2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGVtcFJlZ2lzdGVyU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZW1wUmVnaXN0ZXJTZXQuaCIKKworI2lmIEVOQUJMRShKSVQpCisK
KyNpbmNsdWRlICJSZWdpc3RlclNldC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworVGVtcFJlZ2lz
dGVyU2V0OjpUZW1wUmVnaXN0ZXJTZXQoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKQoreworICAg
IGZvciAodW5zaWduZWQgaSA9IEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBpLS07KSB7Cisg
ICAgICAgIEdQUlJlZyByZWcgPSBHUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAgICAgICBpZiAo
b3RoZXIuZ2V0KHJlZykpCisgICAgICAgICAgICBzZXQocmVnKTsKKyAgICB9CisgICAgZm9yICh1
bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKKyAgICAgICAg
RlBSUmVnIHJlZyA9IEZQUklOZm86OnRvUmVnaXN0ZXIoaSk7CisgICAgICAgIGlmIChvdGhlci5n
ZXQocmVnKSkKKyAgICAgICAgICAgIHNldChyZWcpOworICAgIH0KK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9UZW1wUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5oCShyZXZpc2lvbiAxNTc2OTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBSZWdpc3RlclNldDsKKwog
Y2xhc3MgVGVtcFJlZ2lzdGVyU2V0IHsKIHB1YmxpYzoKICAgICBUZW1wUmVnaXN0ZXJTZXQoKQpA
QCAtNDMsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX3NldFtpXSA9IDA7CiAgICAg
fQogICAgIAorICAgIFRlbXBSZWdpc3RlclNldChjb25zdCBSZWdpc3RlclNldCYpOworICAgIAog
ICAgIHZvaWQgc2V0KEdQUlJlZyByZWcpCiAgICAgewogICAgICAgICBzZXRCaXQoR1BSSW5mbzo6
dG9JbmRleChyZWcpKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAkocmV2aXNpb24gMTU3NjkzKQor
KysgU291cmNlL1dURi93dGYvQml0VmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYg
KzEwNiwyNCBAQCB2b2lkIEJpdFZlY3Rvcjo6cmVzaXplT3V0T2ZMaW5lKHNpemVfdCBuCiAgICAg
bV9iaXRzT3JQb2ludGVyID0gYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4obmV3T3V0T2ZMaW5lQml0
cykgPj4gMTsKIH0KIAordm9pZCBCaXRWZWN0b3I6Om1lcmdlU2xvdyhjb25zdCBCaXRWZWN0b3Im
IG90aGVyKQoreworICAgIGlmIChvdGhlci5pc0lubGluZSgpKSB7CisgICAgICAgIEFTU0VSVCgh
aXNJbmxpbmUoKSk7CisgICAgICAgICpiaXRzKCkgfD0gY2xlYW5zZUlubGluZUJpdHMob3RoZXIu
bV9iaXRzT3JQb2ludGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBlbnN1
cmVTaXplKG90aGVyLnNpemUoKSk7CisgICAgQVNTRVJUKCFpc0lubGluZSgpKTsKKyAgICBBU1NF
UlQoIW90aGVyLmlzSW5saW5lKCkpOworICAgIAorICAgIE91dE9mTGluZUJpdHMqIGEgPSBvdXRP
ZkxpbmVCaXRzKCk7CisgICAgY29uc3QgT3V0T2ZMaW5lQml0cyogYiA9IG90aGVyLm91dE9mTGlu
ZUJpdHMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBhLT5udW1Xb3JkcygpOyBpLS07KQorICAg
ICAgICBhW2ldIHw9IGJbaV07Cit9CisKIHZvaWQgQml0VmVjdG9yOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewpJbmRl
eDogU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvQml0VmVjdG9yLmgJKHJldmlzaW9uIDE1NzY5MykKKysrIFNvdXJjZS9XVEYvd3RmL0JpdFZl
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDE1IEBAIHB1YmxpYzogCiAgICAg
ICAgICAgICBjbGVhcihiaXQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIG1lcmdlKGNvbnN0IEJp
dFZlY3RvciYgb3RoZXIpCisgICAgeworICAgICAgICBpZiAoIWlzSW5saW5lKCkgfHwgIW90aGVy
LmlzSW5saW5lKCkpIHsKKyAgICAgICAgICAgIG1lcmdlU2xvdyhvdGhlcik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9iaXRzT3JQb2ludGVyIHw9IG90aGVyLm1f
Yml0c09yUG9pbnRlcjsKKyAgICB9CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBv
dXQpOwogICAgIAogcHJpdmF0ZToKQEAgLTE5Myw2ICsyMDIsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIGJpdHMgfCAoc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSA8PCBtYXhJbmxpbmVC
aXRzKCkpOwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgdWludHB0cl90IGNsZWFuc2VJbmxpbmVC
aXRzKHVpbnRwdHJfdCBiaXRzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHMgJiB+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgbWF4SW5saW5lQml0cygpKTsKKyAgICB9CisgICAgCiAg
ICAgY2xhc3MgT3V0T2ZMaW5lQml0cyB7CiAgICAgcHVibGljOgogICAgICAgICBzaXplX3QgbnVt
Qml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQml0czsgfQpAQCAtMjIxLDYgKzIzNSw4IEBAIHBy
aXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzaXplT3V0T2ZMaW5lKHNpemVf
dCBudW1CaXRzKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRTbG93KGNvbnN0IEJp
dFZlY3RvciYgb3RoZXIpOwogICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIG1lcmdl
U2xvdyhjb25zdCBCaXRWZWN0b3ImIG90aGVyKTsKKyAgICAKICAgICB1aW50cHRyX3QqIGJpdHMo
KQogICAgIHsKICAgICAgICAgaWYgKGlzSW5saW5lKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214706</attachid>
            <date>2013-10-20 14:19:14 -0700</date>
            <delta_ts>2013-10-20 17:44:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>38539</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3NzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDEzLTEwLTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
U3RydWN0dXJlU3R1YkluZm8ncyB1c2VkUmVnaXN0ZXJzIHNldCBzaG91bGQgYmUgYWJsZSB0byB0
cmFjayBhbGwgcmVnaXN0ZXJzLCBub3QganVzdCB0aGUgb25lcyB0aGF0IG91ciBKSVQncyB2aWV3
IGFzIHRlbXBvcmFyaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjMwNzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIFN0YXJ0IHByZXBhcmluZyBmb3IgYSB3b3JsZCBpbiB3aGljaCB3ZSBh
cmUgcGF0Y2hpbmcgY29kZSBnZW5lcmF0ZWQgYnkgTExWTSwgd2hpY2ggbWF5IGhhdmUKKyAgICAg
ICAgdmVyeSBkaWZmZXJlbnQgcmVnaXN0ZXIgdXNhZ2UgY29udmVudGlvbnMgdGhhbiBvdXIgSklU
cy4gVGhpcyByZXF1aXJlcyB1cyBiZWluZyBtb3JlIGV4cGxpY2l0CisgICAgICAgIGFib3V0IHRo
ZSByZWdpc3RlcnMgd2UgYXJlIHVzaW5nLiBGb3IgZXhhbXBsZSwgdGhlIHJlcGF0Y2hpbmcgY29k
ZSBzaG91bGRuJ3QgdGFrZSBmb3IgZ3JhbnRlZAorICAgICAgICB0aGF0IHRhZ01hc2tSZWdpc3Rl
ciBob2xkcyB0aGUgVGFnTWFzayBvciB0aGF0IHRoZSByZWdpc3RlciBpcyBldmVuIGluIHVzZS4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3Qu
YW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpyZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6Om51
bWJlck9mRlBSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6ZnBSZWdp
c3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnRvdGFsTnVtYmVyT2ZS
ZWdpc3RlcnMpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6dXNlZFJlZ2lzdGVycyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcDoKKyAgICAgICAgKEpTQzo6
RlRMOjpieXRlc0ZvckdQUnMpOgorICAgICAgICAoSlNDOjpGVEw6OmJ5dGVzRm9yRlBScyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6b2Zmc2V0T2ZHUFIpOgorICAgICAgICAoSlNDOjpGVEw6Om9mZnNl
dE9mRlBSKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lQ2FjaGVHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpKSVRCeUlkR2VuZXJhdG9yOjpKSVRCeUlkR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6SklUUHV0QnlJZEdlbmVyYXRvcjo6SklUUHV0QnlJZEdlbmVyYXRvcik6CisgICAgICAg
ICogaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpJVEdldEJ5
SWRHZW5lcmF0b3I6OkpJVEdldEJ5SWRHZW5lcmF0b3IpOgorICAgICAgICAqIGppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKToKKyAgICAgICAg
KiBqaXQvUmVnaXN0ZXJTZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6
OnNwZWNpYWxSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9SZWdpc3RlclNldC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OlJlZ2lzdGVyU2V0KToKKyAgICAgICAgKEpTQzo6
UmVnaXN0ZXJTZXQ6OnNldCk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjbGVhcik6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpnZXQpOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNl
dDo6bWVyZ2UpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJhdGVQcm90b0NoYWluQWNjZXNzU3R1Yik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJ
RCk6CisgICAgICAgIChKU0M6OnRyeUJ1aWxkR2V0QnlJRExpc3QpOgorICAgICAgICAoSlNDOjpl
bWl0UHV0UmVwbGFjZVN0dWIpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAg
ICAoSlNDOjpsaW5rQ2xvc3VyZUNhbGwpOgorICAgICAgICAqIGppdC9UZW1wUmVnaXN0ZXJTZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcFJlZ2lzdGVyU2V0OjpUZW1wUmVnaXN0ZXJT
ZXQpOgorICAgICAgICAqIGppdC9UZW1wUmVnaXN0ZXJTZXQuaDoKKwogMjAxMy0xMC0yMCAgSnVs
aWVuIEJyaWFuY2VhdSAgPGpicmlhbmNlQGNpc2NvLmNvbT4KIAogICAgICAgICBbc2g0XSBGaXgg
YnVpbGQgKGJyb2tlbiBzaW5jZSByMTU3NjkwKS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE1NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw5IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L0pJVFRodW5rcy5jcHAKICAgICBqaXQvSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwCiAgICAgaml0L0p1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQuY3BwCisgICAgaml0L1JlZ2lzdGVyU2V0LmNwcAogICAgIGppdC9SZXBhdGNo
LmNwcAorICAgIGppdC9UZW1wUmVnaXN0ZXJTZXQuY3BwCiAgICAgaml0L1RodW5rR2VuZXJhdG9y
cy5jcHAKIAogICAgIHBhcnNlci9MZXhlci5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNjYxLDExICs2
NjEsMTUgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0p1
bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0p1bXBSZXBsYWNlbWVudFdhdGNocG9pbnQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZWdpc3RlclNldC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJT
ZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU2xvd1BhdGhDYWxsLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6
ZWRUaHVua0pJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RlbXBSZWdpc3RlclNl
dC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTU3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzkwLDkgKzc5MCwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aml0XEpJVFdyaXRlQmFycmllci5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGpp
dFxKU0ludGVyZmFjZUpJVC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxK
dW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caml0XFJlZ2lzdGVyU2V0LmNwcCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxq
aXRcUmVnaXN0ZXJTZXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcUmVw
YXRjaC5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcU3BlY2lh
bGl6ZWRUaHVua0pJVC5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxUZW1w
UmVnaXN0ZXJTZXQuY3BwIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGppdFxUZW1w
UmVnaXN0ZXJTZXQuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcVGh1bmtH
ZW5lcmF0b3IuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxqaXRcVGh1bmtHZW5l
cmF0b3JzLmgiIC8+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE1NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksNiArMzY5LDkgQEAKIAkJ
MEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc4RjE0NkE2RjYz
MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmNwcCAqLzsgfTsKIAkJMEZDMDk3QTExNDZC
MjhDQTAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtz
LmNwcCAqLzsgfTsKIAkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3QTAxNDZC
MjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGQzMxNDEyMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3Rl
clNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
MzE0MTAxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZDMzE0MTMxODE0NTU5MTAwMDMzMjMy
IC8qIFRlbXBSZWdpc3RlclNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMzMTQxMTE4MTQ1NTkxMDAwMzMyMzIgLyogVGVtcFJlZ2lzdGVyU2V0
LmNwcCAqLzsgfTsKKwkJMEZDMzE0MTUxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzMxNDE0
MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgKi87IH07CiAJCTBGQzcxMkRFMTdD
RDg3NzkwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzEyREMxN0NEODc3ODAw
OENDOTNDIC8qIERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi87IH07CiAJCTBGQzcx
MkRGMTdDRDg3N0MwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzcxMkREMTdDRDg3
NzgwMDhDQzkzQyAvKiBEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM3MTJFMjE3Q0Q4NzkxMDA4
Q0M5M0MgLyogSklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDNzEyRTAxN0NEODc4RjAw
OENDOTNDIC8qIEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcCAqLzsgfTsK
QEAgLTE2MzAsNiArMTYzMyw5IEBACiAJCTBGQzA5NzhGMTQ2QTZGNjMwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
REZHT1NSRXhpdENvbXBpbGVyLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIg
LyogREZHVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R1RodW5rcy5jcHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3MuaDsgcGF0aCA9IGRmZy9ERkdU
aHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZDMzE0MTAxODE0NTU5MTAw
MDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlZ2lzdGVyU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzMxNDExMTgx
NDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVGVtcFJlZ2lzdGVyU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEZDMzE0MTQxODE0NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZ2lzdGVyU2V0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDNzEyREMxN0NEODc3ODAwOENDOTNDIC8qIERl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkM3MTJERDE3Q0Q4Nzc4MDA4Q0M5M0MgLyogRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkM3MTJFMDE3Q0Q4NzhGMDA4Q0M5M0MgLyogSklUVG9ERkdE
ZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVG9E
RkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjkwOCwxMSArMjkxNCwxNCBAQAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIw
NSAvKiBKU0ludGVyZmFjZUpJVC5oICovLAogCQkJCTBGNzY2RDMyMTVBRTI1MzUwMDhGMzYzRSAv
KiBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50LmNwcCAqLywKIAkJCQkwRjc2NkQzMzE1QUUyNTM1
MDA4RjM2M0UgLyogSnVtcFJlcGxhY2VtZW50V2F0Y2hwb2ludC5oICovLAorCQkJCTBGQzMxNDE0
MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5jcHAgKi8sCisJCQkJMEZDMzE0MTAxODE0
NTU5MTAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmggKi8sCiAJCQkJMEYyNEU1NDkxN0VFMjc0OTAw
QUJCMjE3IC8qIFJlcGF0Y2guY3BwICovLAogCQkJCTBGMjRFNTRBMTdFRTI3NDkwMEFCQjIxNyAv
KiBSZXBhdGNoLmggKi8sCiAJCQkJMEYyNEU1NEIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hS
ZWdpc3RlckFsbG9jYXRvci5oICovLAogCQkJCUE3MDlGMkVGMTdBMEFDMDQwMDUxMkU5OCAvKiBT
bG93UGF0aENhbGwuaCAqLywKIAkJCQlBNzM4NjU1MTExODY5N0I0MDA1NDAyNzkgLyogU3BlY2lh
bGl6ZWRUaHVua0pJVC5oICovLAorCQkJCTBGQzMxNDExMTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1w
UmVnaXN0ZXJTZXQuY3BwICovLAogCQkJCTBGMjRFNTQ4MTdFRTI3NDkwMEFCQjIxNyAvKiBUZW1w
UmVnaXN0ZXJTZXQuaCAqLywKIAkJCQkwRjU3MkQ0RDE2ODc5RkRCMDBFNTdGQkQgLyogVGh1bmtH
ZW5lcmF0b3IuaCAqLywKIAkJCQlBNzM4NjU1MjExODY5N0I0MDA1NDAyNzkgLyogVGh1bmtHZW5l
cmF0b3JzLmNwcCAqLywKQEAgLTQ1MTAsNiArNDUxOSw3IEBACiAJCQkJODZEM0IyQzYxMDE1NkJE
RTAwMjg2NUU3IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFE
RDE0NjBGRERFQTk4MDAwNkVFQzIgLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODYzQjIzRTAwRkM2MTE4OTAwNzAzQUE0IC8qIE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEZDMzE0MTIxODE0NTU5MTAwMDMzMjMyIC8qIFJlZ2lz
dGVyU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyog
TWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFFNjRBOTEzNUU1RTFD
MDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MDE2
MUU0MEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4Ni5oIGluIEhlYWRlcnMgKi8s
CkBAIC01MTI0LDYgKzUxMzQsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBB
cmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJFMTA3RUMzNzYwMDQyN0E0OCAv
KiBBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5
Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQzMxNDEz
MTgxNDU1OTEwMDAzMzIzMiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBNzRERTFEMDEyMEI4NzU2MDBENDBENUIgLyogQVJNdjdBc3NlbWJsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlz
YXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNTMxMSw2ICs1MzIyLDcgQEAKIAkJCQkw
RjkzMzI5RjE0Q0E3RENBMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkNFRkFERjE4MDczOEMwMDA0NzJDRTQgLyogRlRMTG9jYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTQyODA4NTUxMDdFQzBFNzAwMTNFN0IyIC8qIEdldHRlclNldHRlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkMzMTQxNTE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyRTMxMzUxMzRGRjBBNjAwQUZBREI1IC8q
IEhhbmRsZVNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDJFMzEzNzEzNEZGMEE2MDBBRkFE
QjUgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRCQTdBOTcxM0FBREZG
ODAwNUI3QzJDIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxNTc2
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsMzYgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZQUmVnaXN0ZXJJRD4ocmVnICsgMSk7CiAgICAgfQorICAg
IAorICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycygpCisgICAgeworICAgICAg
ICByZXR1cm4gbGFzdFJlZ2lzdGVyKCkgLSBmaXJzdFJlZ2lzdGVyKCkgKyAxOworICAgIH0KKyAg
ICAKKyAgICBzdGF0aWMgdW5zaWduZWQgcmVnaXN0ZXJJbmRleChSZWdpc3RlcklEIHJlZykKKyAg
ICB7CisgICAgICAgIHJldHVybiByZWcgLSBmaXJzdFJlZ2lzdGVyKCk7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZkZQUmVnaXN0ZXJzKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBsYXN0RlBSZWdpc3RlcigpIC0gZmlyc3RGUFJlZ2lzdGVyKCkgKyAxOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgdW5zaWduZWQgZnBSZWdpc3RlckluZGV4KEZQUmVnaXN0ZXJJRCBy
ZWcpCisgICAgeworICAgICAgICByZXR1cm4gcmVnIC0gZmlyc3RGUFJlZ2lzdGVyKCk7CisgICAg
fQorICAgIAorICAgIHN0YXRpYyB1bnNpZ25lZCByZWdpc3RlckluZGV4KEZQUmVnaXN0ZXJJRCBy
ZWcpCisgICAgeworICAgICAgICByZXR1cm4gZnBSZWdpc3RlckluZGV4KHJlZykgKyBudW1iZXJP
ZlJlZ2lzdGVycygpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdW5zaWduZWQgdG90YWxOdW1i
ZXJPZlJlZ2lzdGVycygpCisgICAgeworICAgICAgICByZXR1cm4gbnVtYmVyT2ZSZWdpc3RlcnMo
KSArIG51bWJlck9mRlBSZWdpc3RlcnMoKTsKKyAgICB9CiAKICAgICB1c2luZyBNYWNyb0Fzc2Vt
YmxlckJhc2U6OnBvcDsKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlckJhc2U6Omp1bXA7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1Yklu
Zm8uaAkocmV2aXNpb24gMTU3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNp
bmNsdWRlICJQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgiCi0j
aW5jbHVkZSAiVGVtcFJlZ2lzdGVyU2V0LmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjMwLDcgKzIzMCw3
IEBAIHN0cnVjdCBTdHJ1Y3R1cmVTdHViSW5mbyB7CiAgICAgICAgIGludDhfdCB2YWx1ZVRhZ0dQ
UjsKICNlbmRpZgogICAgICAgICBpbnQ4X3QgdmFsdWVHUFI7Ci0gICAgICAgIFRlbXBSZWdpc3Rl
clNldCB1c2VkUmVnaXN0ZXJzOworICAgICAgICBSZWdpc3RlclNldCB1c2VkUmVnaXN0ZXJzOwog
ICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvRG9uZTsKICAgICAgICAgaW50MzJfdCBkZWx0YUNh
bGxUb1N0b3JhZ2VMb2FkOwogICAgICAgICBpbnQzMl90IGRlbHRhQ2FsbFRvU3RydWN0Q2hlY2s7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAkocmV2aXNpb24gMTU3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsMjYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Zm9yd2FyZFR5cGVDaGVjayhKUwogICAgIGNvbnZlcnRMYXN0T1NS
RXhpdFRvRm9yd2FyZCh2YWx1ZVJlY292ZXJ5KTsKIH0KIAorUmVnaXN0ZXJTZXQgU3BlY3VsYXRp
dmVKSVQ6OnVzZWRSZWdpc3RlcnMoKQoreworICAgIFJlZ2lzdGVyU2V0IHJlc3VsdDsKKyAgICAK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykg
eworICAgICAgICBHUFJSZWcgZ3ByID0gR1BSSW5mbzo6dG9SZWdpc3RlcihpKTsKKyAgICAgICAg
aWYgKG1fZ3Bycy5pc0luVXNlKGdwcikpCisgICAgICAgICAgICByZXN1bHQuc2V0KGdwcik7Cisg
ICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzOyBp
LS07KSB7CisgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOworICAg
ICAgICBpZiAobV9mcHJzLmlzSW5Vc2UoZnByKSkKKyAgICAgICAgICAgIHJlc3VsdC5zZXQoZnBy
KTsKKyAgICB9CisgICAgCisgICAgcmVzdWx0Lm1lcmdlKFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVn
aXN0ZXJzKCkpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJhdG9yKFBhc3NPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+
IHNsb3dQYXRoR2VuZXJhdG9yKQogewogICAgIG1fc2xvd1BhdGhHZW5lcmF0b3JzLmFwcGVuZChz
bG93UGF0aEdlbmVyYXRvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI3OCwyMSAr
Mjc4LDcgQEAgcHVibGljOgogICAgICAgICB1c2Uobm9kZVVzZS5ub2RlKCkpOwogICAgIH0KICAg
ICAKLSAgICBUZW1wUmVnaXN0ZXJTZXQgdXNlZFJlZ2lzdGVycygpCi0gICAgewotICAgICAgICBU
ZW1wUmVnaXN0ZXJTZXQgcmVzdWx0OwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVyczsgaS0tOykgewotICAgICAgICAgICAgR1BSUmVnIGdwciA9IEdQ
UkluZm86OnRvUmVnaXN0ZXIoaSk7Ci0gICAgICAgICAgICBpZiAobV9ncHJzLmlzSW5Vc2UoZ3By
KSkKLSAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGdwcik7Ci0gICAgICAgIH0KLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gRlBSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnM7IGktLTspIHsKLSAg
ICAgICAgICAgIEZQUlJlZyBmcHIgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkpOwotICAgICAgICAg
ICAgaWYgKG1fZnBycy5pc0luVXNlKGZwcikpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnNldChm
cHIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIFJlZ2lz
dGVyU2V0IHVzZWRSZWdpc3RlcnMoKTsKICAgICAKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4p
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9y
ZS5jcHAJKHJldmlzaW9uIDE1NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
U2F2ZVJlc3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogc3RhdGljIHNpemVfdCBieXRlc0ZvckdQUnMoKQog
ewotICAgIHJldHVybiAoTWFjcm9Bc3NlbWJsZXI6Omxhc3RSZWdpc3RlcigpIC0gTWFjcm9Bc3Nl
bWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIDEpICogc2l6ZW9mKGludDY0X3QpOworICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZSZWdpc3RlcnMoKSAqIHNpemVvZihpbnQ2NF90KTsK
IH0KIAogc3RhdGljIHNpemVfdCBieXRlc0ZvckZQUnMoKQpAQCAtNDQsNyArNDQsNyBAQCBzdGF0
aWMgc2l6ZV90IGJ5dGVzRm9yRlBScygpCiAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IGJlIHdvcnRo
d2hpbGUgc2F2aW5nIHRoZSBmdWxsIHN0YXRlIG9mIHRoZSBGUCByZWdpc3RlcnMsIGF0IHNvbWUg
cG9pbnQuCiAgICAgLy8gUmlnaHQgbm93IHdlIGRvbid0IG5lZWQgdGhpcyBzaW5jZSB3ZSBvbmx5
IGRvIHRoZSBzYXZlL3Jlc3RvcmUganVzdCBwcmlvciB0byBPU1IgZXhpdCwgYW5kCiAgICAgLy8g
T1NSIGV4aXQgd2lsbCBiZSBndWFyYW50ZWVkIHRvIG9ubHkgbmVlZCB0aGUgZG91YmxlIHBvcnRp
b24gb2YgdGhlIEZQIHJlZ2lzdGVycy4KLSAgICByZXR1cm4gKE1hY3JvQXNzZW1ibGVyOjpsYXN0
RlBSZWdpc3RlcigpIC0gTWFjcm9Bc3NlbWJsZXI6OmZpcnN0RlBSZWdpc3RlcigpICsgMSkgKiBz
aXplb2YoZG91YmxlKTsKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mRlBSZWdp
c3RlcnMoKSAqIHNpemVvZihkb3VibGUpOwogfQogCiBzaXplX3QgcmVxdWlyZWRTY3JhdGNoTWVt
b3J5U2l6ZUluQnl0ZXMoKQpAQCAtNTQsMTIgKzU0LDEyIEBAIHNpemVfdCByZXF1aXJlZFNjcmF0
Y2hNZW1vcnlTaXplSW5CeXRlcygKIAogc2l6ZV90IG9mZnNldE9mR1BSKEdQUlJlZyByZWcpCiB7
Ci0gICAgcmV0dXJuIChyZWcgLSBNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpKSAqIHNp
emVvZihpbnQ2NF90KTsKKyAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgo
cmVnKSAqIHNpemVvZihpbnQ2NF90KTsKIH0KIAogc2l6ZV90IG9mZnNldE9mRlBSKEZQUlJlZyBy
ZWcpCiB7Ci0gICAgcmV0dXJuIGJ5dGVzRm9yR1BScygpICsgKHJlZyAtIE1hY3JvQXNzZW1ibGVy
OjpmaXJzdEZQUmVnaXN0ZXIoKSkgKiBzaXplb2YoZG91YmxlKTsKKyAgICByZXR1cm4gYnl0ZXNG
b3JHUFJzKCkgKyBmcFJlZ2lzdGVySW5kZXgocmVnKSAqIHNpemVvZihkb3VibGUpOwogfQogCiB2
b2lkIHNhdmVBbGxSZWdpc3RlcnMoTWFjcm9Bc3NlbWJsZXImIGppdCwgY2hhciogc2NyYXRjaE1l
bW9yeSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lQ2FjaGVHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lQ2FjaGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcjo6SklUSW5saW5lQ2FjaGVH
CiB9CiAKIEpJVEJ5SWRHZW5lcmF0b3I6OkpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0
JiB1c2VkUmVnaXN0ZXJzLAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAogICAgIEpTVmFsdWVS
ZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLCBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpCiAgICAg
OiBKSVRJbmxpbmVDYWNoZUdlbmVyYXRvcihjb2RlQmxvY2ssIGNvZGVPcmlnaW4pCiAgICAgLCBt
X2Jhc2UoYmFzZSkKQEAgLTUyLDcgKzUyLDcgQEAgSklUQnlJZEdlbmVyYXRvcjo6SklUQnlJZEdl
bmVyYXRvcigKICAgICBtX3N0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0ZXJzID0gdXNlZFJlZ2lz
dGVyczsKICAgICAKICAgICAvLyBUaGlzIGlzIGEgY29udmVuaWVuY2UgLSBpbiBjYXNlcyB3aGVy
ZSB0aGUgb25seSByZWdpc3RlcnMgeW91J3JlIHVzaW5nIGFyZSBiYXNlL3ZhbHVlLAotICAgIC8v
IGl0IGFsbG93cyB5b3UgdG8gcGFzcyBUZW1wUmVnaXN0ZXJTZXQoKSBhcyB0aGUgdXNlZFJlZ2lz
dGVycyBhcmd1bWVudC4KKyAgICAvLyBpdCBhbGxvd3MgeW91IHRvIHBhc3MgUmVnaXN0ZXJTZXQo
KSBhcyB0aGUgdXNlZFJlZ2lzdGVycyBhcmd1bWVudC4KICAgICBtX3N0dWJJbmZvLT5wYXRjaC51
c2VkUmVnaXN0ZXJzLnNldChiYXNlKTsKICAgICBtX3N0dWJJbmZvLT5wYXRjaC51c2VkUmVnaXN0
ZXJzLnNldCh2YWx1ZSk7CiAgICAgCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBKSVRHZXRCeUlk
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYQogfQogCiBKSVRQdXRCeUlkR2VuZXJhdG9yOjpKSVRQ
dXRCeUlkR2VuZXJhdG9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIGNvbnN0IFRlbXBSZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBSZWdpc3RlclNl
dCYgdXNlZFJlZ2lzdGVycywKICAgICBKU1ZhbHVlUmVncyBiYXNlLCBKU1ZhbHVlUmVncyB2YWx1
ZSwgR1BSUmVnIHNjcmF0Y2gsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCwKICAgICBFQ01BTW9kZSBl
Y21hTW9kZSwgUHV0S2luZCBwdXRLaW5kKQogICAgIDogSklUQnlJZEdlbmVyYXRvcihjb2RlQmxv
Y2ssIGNvZGVPcmlnaW4sIHVzZWRSZWdpc3RlcnMsIGJhc2UsIHZhbHVlLCByZWdpc3RlcnNGbHVz
aGVkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMTU3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiSklUT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKICNpbmNsdWRlICJQdXRLaW5kLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHJvdGVjdGVkOgogICAgIEpJVEJ5
SWRHZW5lcmF0b3IoKSB7IH0KIAogICAgIEpJVEJ5SWRHZW5lcmF0b3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIGNvbnN0IFRlbXBSZWdpc3RlclNldCYsIEpTVmFsdWVSZWdzIGJh
c2UsIEpTVmFsdWVSZWdzIHZhbHVlLAorICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBj
b25zdCBSZWdpc3RlclNldCYsIEpTVmFsdWVSZWdzIGJhc2UsIEpTVmFsdWVSZWdzIHZhbHVlLAog
ICAgICAgICBib29sIHJlZ2lzdGVyc0ZsdXNoZWQpOwogICAgIAogcHVibGljOgpAQCAtOTIsNyAr
OTMsNyBAQCBwdWJsaWM6CiAgICAgSklUR2V0QnlJZEdlbmVyYXRvcigpIHsgfQogCiAgICAgSklU
R2V0QnlJZEdlbmVyYXRvcigKLSAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgY29uc3QgVGVtcFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLAorICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBjb25zdCBS
ZWdpc3RlclNldCYgdXNlZFJlZ2lzdGVycywKICAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZSwgSlNW
YWx1ZVJlZ3MgdmFsdWUsIGJvb2wgcmVnaXN0ZXJzRmx1c2hlZCkKICAgICAgICAgOiBKSVRCeUlk
R2VuZXJhdG9yKGNvZGVCbG9jaywgY29kZU9yaWdpbiwgdXNlZFJlZ2lzdGVycywgYmFzZSwgdmFs
dWUsIHJlZ2lzdGVyc0ZsdXNoZWQpCiAgICAgewpAQCAtMTA2LDcgKzEwNyw3IEBAIHB1YmxpYzoK
ICAgICBKSVRQdXRCeUlkR2VuZXJhdG9yKCkgeyB9CiAKICAgICBKSVRQdXRCeUlkR2VuZXJhdG9y
KAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBUZW1wUmVnaXN0ZXJTZXQm
IHVzZWRSZWdpc3RlcnMsIEpTVmFsdWVSZWdzIGJhc2UsCisgICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIGNvbnN0IFJlZ2lzdGVyU2V0JiB1c2VkUmVnaXN0ZXJzLCBKU1ZhbHVlUmVncyBi
YXNlLAogICAgICAgICBKU1ZhbHVlUmVncyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gsIGJvb2wgcmVn
aXN0ZXJzRmx1c2hlZCwgRUNNQU1vZGUsIFB1dEtpbmQpOwogICAgIAogICAgIHZvaWQgZ2VuZXJh
dGVGYXN0UGF0aChNYWNyb0Fzc2VtYmxlciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTc2
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODMsNyArNDgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIH0KIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3Ig
Z2VuKAotICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwg
VGVtcFJlZ2lzdGVyU2V0KCksCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVPZmZzZXQpLCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygpLAogICAgICAgICBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
LCB0cnVlKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdFdyaXRlQmFycmllcihyZWdUMCwg
cmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRlcywgV3JpdGVCYXJyaWVy
Rm9yUHJvcGVydHlBY2Nlc3MpOwogICAgIAogICAgIEpJVFB1dEJ5SWRHZW5lcmF0b3IgZ2VuKAot
ICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgVGVtcFJl
Z2lzdGVyU2V0KCksCisgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVP
ZmZzZXQpLCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVycygpLAogICAgICAgICBKU1ZhbHVl
UmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMywgcmVnVDIpLCByZWdU
MSwgdHJ1ZSwKICAgICAgICAgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksIGRpcmVjdCA/IERpcmVj
dCA6IE5vdERpcmVjdCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMTU3NjkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyMyw3ICs1MjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24q
CiAgICAgfQogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJs
b2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBUZW1wUmVnaXN0ZXJTZXQoKSwKKyAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVy
U2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCiAgICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCB0cnVlKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7
CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKQEAgLTU2OSw4ICs1NjksOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdFdyaXRl
QmFycmllcihyZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgU2hvdWxkRmlsdGVySW1tZWRpYXRl
cywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MpOwogCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCi0gICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZz
ZXQpLCBUZW1wUmVnaXN0ZXJTZXQoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLAotICAgICAgICBKU1Zh
bHVlUmVncyhyZWdUMSksIHJlZ1QyLCB0cnVlLCBtX2NvZGVCbG9jay0+ZWNtYU1vZGUoKSwgZGly
ZWN0ID8gRGlyZWN0IDogTm90RGlyZWN0KTsKKyAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzcGVjaWFsUmVnaXN0ZXJzKCksCisg
ICAgICAgIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEpLCByZWdUMiwgdHJ1
ZSwgbV9jb2RlQmxvY2stPmVjbWFNb2RlKCksCisgICAgICAgIGRpcmVjdCA/IERpcmVjdCA6IE5v
dERpcmVjdCk7CiAgICAgCiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyU2V0LmgiCisKKyNpZiBFTkFCTEUoSklUKQor
CisjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitSZWdpc3RlclNldCBSZWdpc3RlclNldDo6c3BlY2lhbFJlZ2lzdGVy
cygpCit7CisgICAgUmVnaXN0ZXJTZXQgcmVzdWx0OworICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgIHJlc3VsdC5zZXQoTWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKKyAgICByZXN1bHQuc2V0KE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBv
aW50ZXJSZWdpc3Rlcik7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgcmVzdWx0LnNldChHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBS
ZWdpc3RlclNldF9oCisjZGVmaW5lIFJlZ2lzdGVyU2V0X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkZQUkluZm8uaCIKKyNpbmNs
dWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJU
ZW1wUmVnaXN0ZXJTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBSZWdpc3RlclNldCB7CitwdWJsaWM6CisgICAgUmVnaXN0ZXJTZXQo
KSB7IH0KKyAgICAKKyAgICBzdGF0aWMgUmVnaXN0ZXJTZXQgc3BlY2lhbFJlZ2lzdGVycygpOwor
CisgICAgdm9pZCBzZXQoR1BSUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCisgICAgeworICAg
ICAgICBtX3ZlY3Rvci5zZXQoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSwgdmFs
dWUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldChKU1ZhbHVlUmVncyByZWdzKQorICAgIHsK
KyAgICAgICAgaWYgKHJlZ3MudGFnR1BSKCkgIT0gSW52YWxpZEdQUlJlZykKKyAgICAgICAgICAg
IHNldChyZWdzLnRhZ0dQUigpKTsKKyAgICAgICAgc2V0KHJlZ3MucGF5bG9hZEdQUigpKTsKKyAg
ICB9CisgICAgCisgICAgdm9pZCBjbGVhcihHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgc2V0
KHJlZywgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBib29sIGdldChHUFJSZWcgcmVnKSBjb25z
dCB7IHJldHVybiBtX3ZlY3Rvci5nZXQoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVn
KSk7IH0KKyAgICAKKyAgICB2b2lkIHNldChGUFJSZWcgcmVnLCBib29sIHZhbHVlID0gdHJ1ZSkK
KyAgICB7CisgICAgICAgIG1fdmVjdG9yLnNldChNYWNyb0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRl
eChyZWcpLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIHNldChyZWcsIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBn
ZXQoRlBSUmVnIHJlZykgY29uc3QgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KE1hY3JvQXNzZW1ibGVy
OjpyZWdpc3RlckluZGV4KHJlZykpOyB9CisgICAgCisgICAgdm9pZCBtZXJnZShjb25zdCBSZWdp
c3RlclNldCYgb3RoZXIpIHsgbV92ZWN0b3IubWVyZ2Uob3RoZXIubV92ZWN0b3IpOyB9CisgICAg
Citwcml2YXRlOgorICAgIEJpdFZlY3RvciBtX3ZlY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIFJlZ2lzdGVyU2V0X2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAxNTc2
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0MiwxOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorLy8gQmV3YXJlOiBp
biB0aGlzIGNvZGUsIGl0IGlzIG5vdCBzYWZlIHRvIGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUg
Zm9sbG93aW5nIHJlZ2lzdGVycworLy8gdGhhdCB3b3VsZCBvcmRpbmFyaWx5IGhhdmUgd2VsbC1r
bm93biB2YWx1ZXM6CisvLyAtIHRhZ1R5cGVOdW1iZXJSZWdpc3RlcgorLy8gLSB0YWdNYXNrUmVn
aXN0ZXIKKy8vIC0gY2FsbEZyYW1lUmVnaXN0ZXIgKioKKy8vCisvLyBUaGUgY2FsbEZyYW1lUmVn
aXN0ZXIgaXMgYSBkb3VibGUtRklYTUU6CisvLyAtIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjMwODUKKy8vICAgV2UncmUgbm90IHlldCBkb25lIGdldHRpbmcgcmlk
IG9mIHBhc3QgdXNlcyBvZiBjYWxsRnJhbWVSZWdpc3Rlci4KKy8vIC0gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzYyMQorLy8gICBPbmNlIHRoZSBjYWxsaW5nIGNv
bnZlbnRpb24gd29yayBpcyBkb25lLCB3ZSB3b24ndCBuZWVkIHRoZSBjYWxsRnJhbWVSZWdpc3Rl
ciBhbnltb3JlCisvLyAgIHNpbmNlIHdlJ2xsIGp1c3QgdXNlIGZyYW1lUG9pbnRlclJlZ2lzdGVy
LgorCiBzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlQmxvY2sqIGNvZGVibG9jaywgQ29kZUxv
Y2F0aW9uQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBuZXdDYWxsZWVGdW5jdGlvbikKIHsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZWJsb2NrKTsKQEAgLTE4MSw3ICsxOTQsNyBA
QCBzdGF0aWMgdm9pZCBnZW5lcmF0ZVByb3RvQ2hhaW5BY2Nlc3NTdHViCiAgICAgR1BSUmVnIHJl
c3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVUYWdH
UFIpOwogI2VuZGlmCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQUlJlZz4o
c3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc3R1Yklu
Zm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKCk7CisgICAgR1BSUmVnIHNjcmF0Y2hH
UFIgPSBUZW1wUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycykuZ2V0RnJl
ZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICAgICAKICAg
ICBpZiAoc2NyYXRjaEdQUiA9PSBJbnZhbGlkR1BSUmVnKSB7CkBAIC0yNTUsNyArMjY4LDcgQEAg
c3RhdGljIGJvb2wgdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZQogICAgICAgICBHUFJSZWcg
cmVzdWx0VGFnR1BSID0gc3RhdGljX2Nhc3Q8R1BSUmVnPihzdHViSW5mby5wYXRjaC52YWx1ZVRh
Z0dQUik7CiAjZW5kaWYKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOwotICAgICAgICBHUFJSZWcgc2NyYXRjaEdQ
UiA9IHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdpc3RlcnMuZ2V0RnJlZUdQUigpOworICAgICAgICBH
UFJSZWcgc2NyYXRjaEdQUiA9IFRlbXBSZWdpc3RlclNldChzdHViSW5mby5wYXRjaC51c2VkUmVn
aXN0ZXJzKS5nZXRGcmVlR1BSKCk7CiAgICAgICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2gg
PSBmYWxzZTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyIHN0dWJKaXQ7CkBAIC0y
ODEsMTAgKzI5NCwxMCBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
CiAgICAgICAgIHN0dWJKaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hH
UFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
ZmFpbHVyZUNhc2VzLmFwcGVuZChzdHViSml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNz
VGhhbiwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigwKSkpOwogCisg
ICAgICAgIHN0dWJKaXQubW92ZShzY3JhdGNoR1BSLCByZXN1bHRHUFIpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIHN0dWJKaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHNjcmF0Y2hHUFIsIHJlc3VsdEdQUik7CisgICAgICAgIHN0dWJKaXQub3I2NChBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgcmVzdWx0R1BSKTsKICNlbGlm
IFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIHN0dWJKaXQubW92ZShzY3JhdGNoR1BSLCByZXN1
bHRHUFIpOwogICAgICAgICBzdHViSml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoMHhmZmZmZmZmZiksIHJlc3VsdFRhZ0dQUik7IC8vIEpTVmFsdWU6OkludDMyVGFnCiAjZW5k
aWYKIApAQCAtNDU1LDcgKzQ2OCw3IEBAIHN0YXRpYyBib29sIHRyeUJ1aWxkR2V0QnlJRExpc3Qo
RXhlY1N0YXQKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHN0YXRpY19jYXN0PEdQUlJl
Zz4oc3R1YkluZm8ucGF0Y2gudmFsdWVUYWdHUFIpOwogI2VuZGlmCiAgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZhbHVlR1BSKTsK
LSAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzdHViSW5mby5wYXRjaC51c2VkUmVnaXN0ZXJz
LmdldEZyZWVHUFIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBUZW1wUmVnaXN0ZXJT
ZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycykuZ2V0RnJlZUdQUigpOwogICAgICAgICAK
ICAgICAgICAgQ0NhbGxIZWxwZXJzIHN0dWJKaXQodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIApA
QCAtNjUxLDcgKzY2NCw3IEBAIHN0YXRpYyB2b2lkIGVtaXRQdXRSZXBsYWNlU3R1YigKICAgICBH
UFJSZWcgdmFsdWVUYWdHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBhdGNoLnZh
bHVlVGFnR1BSKTsKICNlbmRpZgogICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHN0YXRpY19jYXN0PEdQ
UlJlZz4oc3R1YkluZm8ucGF0Y2gudmFsdWVHUFIpOwotICAgIEdQUlJlZyBzY3JhdGNoR1BSID0g
c3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2hHUFIgPSBUZW1wUmVnaXN0ZXJTZXQoc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycyku
Z2V0RnJlZUdQUigpOwogICAgIGJvb2wgbmVlZFRvUmVzdG9yZVNjcmF0Y2ggPSBmYWxzZTsKICNp
ZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIy
OwpAQCAtMTE1OSw3ICsxMTcyLDcgQEAgc3RhdGljIGJvb2wgdHJ5UmVwYXRjaEluKAogICAgIHsK
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnBh
dGNoLmJhc2VHUFIpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gc3RhdGljX2Nhc3Q8R1BS
UmVnPihzdHViSW5mby5wYXRjaC52YWx1ZUdQUik7Ci0gICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc3R1YkluZm8ucGF0Y2gudXNlZFJlZ2lzdGVycy5nZXRGcmVlR1BSKCk7CisgICAgICAgIEdQ
UlJlZyBzY3JhdGNoR1BSID0gVGVtcFJlZ2lzdGVyU2V0KHN0dWJJbmZvLnBhdGNoLnVzZWRSZWdp
c3RlcnMpLmdldEZyZWVHUFIoKTsKICAgICAgICAgCiAgICAgICAgIENDYWxsSGVscGVycyBzdHVi
Sml0KHZtKTsKICAgICAgICAgCkBAIC0xMjkwLDkgKzEzMDMsMTEgQEAgdm9pZCBsaW5rQ2xvc3Vy
ZUNhbGwoRXhlY1N0YXRlKiBleGVjLCBDYQogICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc2xv
d1BhdGg7CiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBzbG93UGF0aC5hcHBlbmQoCi0g
ICAgICAgIHN0dWJKaXQuYnJhbmNoVGVzdDY0KAotICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpO
b25aZXJvLCBjYWxsZWVHUFIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgIC8vIFdl
IGNhbiBzYWZlbHkgY2xvYmJlciBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgY2FsbGVlR1BSLiBXZSBj
YW4ndCByZWx5IG9uIHRhZ01hc2tSZWdpc3RlcgorICAgIC8vIGJlaW5nIHNldC4gU28gd2UgZG8g
dGhpcyB0aGUgaGFyZCB3YXkuCisgICAgR1BSUmVnIHNjcmF0Y2ggPSBBc3NlbWJseUhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoY2FsbGVlR1BSKTsKKyAgICBzdHViSml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW02NChUYWdNYXNrKSwgc2NyYXRjaCk7CisgICAgc2xvd1BhdGguYXBw
ZW5kKHN0dWJKaXQuYnJhbmNoVGVzdDY0KENDYWxsSGVscGVyczo6Tm9uWmVybywgY2FsbGVlR1BS
LCBzY3JhdGNoKSk7CiAjZWxzZQogICAgIC8vIFdlIHdvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2Vk
IHRoYXQgdGhlIGNhbGxlZSBpcyBhIGNlbGwuCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RlbXBSZWdpc3RlclNldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcFJlZ2lzdGVyU2V0Lmgi
CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiUmVnaXN0ZXJTZXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1RlbXBSZWdpc3RlclNldDo6VGVtcFJlZ2lzdGVyU2V0KGNvbnN0IFJlZ2lz
dGVyU2V0JiBvdGhlcikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVyczsgaS0tOykgeworICAgICAgICBHUFJSZWcgcmVnID0gR1BSSW5mbzo6dG9SZWdp
c3RlcihpKTsKKyAgICAgICAgaWYgKG90aGVyLmdldChyZWcpKQorICAgICAgICAgICAgc2V0KHJl
Zyk7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IEZQUkluZm86Om51bWJlck9mUmVnaXN0
ZXJzOyBpLS07KSB7CisgICAgICAgIEZQUlJlZyByZWcgPSBGUFJJbmZvOjp0b1JlZ2lzdGVyKGkp
OworICAgICAgICBpZiAob3RoZXIuZ2V0KHJlZykpCisgICAgICAgICAgICBzZXQocmVnKTsKKyAg
ICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGVtcFJlZ2lzdGVyU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UZW1wUmVnaXN0ZXJTZXQuaAkocmV2aXNp
b24gMTU3Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UZW1wUmVnaXN0ZXJTZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgUmVnaXN0ZXJTZXQ7CisKIGNsYXNzIFRlbXBSZWdpc3RlclNldCB7CiBwdWJsaWM6CiAg
ICAgVGVtcFJlZ2lzdGVyU2V0KCkKQEAgLTQzLDYgKzQ1LDggQEAgcHVibGljOgogICAgICAgICAg
ICAgbV9zZXRbaV0gPSAwOwogICAgIH0KICAgICAKKyAgICBUZW1wUmVnaXN0ZXJTZXQoY29uc3Qg
UmVnaXN0ZXJTZXQmKTsKKyAgICAKICAgICB2b2lkIHNldChHUFJSZWcgcmVnKQogICAgIHsKICAg
ICAgICAgc2V0Qml0KEdQUkluZm86OnRvSW5kZXgocmVnKSk7CkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTU3
NzA0KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwz
MSBAQAorMjAxMy0xMC0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJ3MgdXNlZFJlZ2lzdGVycyBzZXQgc2hvdWxkIGJlIGFibGUg
dG8gdHJhY2sgYWxsIHJlZ2lzdGVycywgbm90IGp1c3QgdGhlIG9uZXMgdGhhdCBvdXIgSklUJ3Mg
dmlldyBhcyB0ZW1wb3JhcmllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIzMDc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisgICAgICAgIAorICAgICAgICBUZWFjaCBCaXRWZWN0b3IgaG93IHRvIGVmZmljaWVudGx5IG1l
cmdlIChpLmUuIGJpdHZlY3RvciB8PSkuCisKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmNwcDoK
KyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjptZXJnZVNsb3cpOgorICAgICAgICAqIHd0Zi9CaXRW
ZWN0b3IuaDoKKyAgICAgICAgKFdURjo6Qml0VmVjdG9yOjptZXJnZSk6CisgICAgICAgIChXVEY6
OkJpdFZlY3Rvcjo6Y2xlYW5zZUlubGluZUJpdHMpOgorCisyMDEzLTEwLTIwICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9u
IChPT1BTISkuCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3Bw
OgorICAgICAgICAoV1RGOjpCaXRWZWN0b3I6Om1lcmdlU2xvdyk6CisgICAgICAgICogd3RmL0Jp
dFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpCaXRWZWN0b3I6Om1lcmdlKToKKyAgICAgICAgKFdU
Rjo6Qml0VmVjdG9yOjpjbGVhbnNlSW5saW5lQml0cyk6CisKIDIwMTMtMTAtMTkgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCByb2xsIG91dCBv
ZiByMTU3Njk1OyBicm9rZSBNYWMgYnVpbGRzLgpJbmRleDogU291cmNlL1dURi93dGYvQml0VmVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCShyZXZp
c2lvbiAxNTc2OTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9CaXRWZWN0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNiArMTA2LDI0IEBAIHZvaWQgQml0VmVjdG9yOjpyZXNpemVPdXRPZkxpbmUo
c2l6ZV90IG4KICAgICBtX2JpdHNPclBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihu
ZXdPdXRPZkxpbmVCaXRzKSA+PiAxOwogfQogCit2b2lkIEJpdFZlY3Rvcjo6bWVyZ2VTbG93KGNv
bnN0IEJpdFZlY3RvciYgb3RoZXIpCit7CisgICAgaWYgKG90aGVyLmlzSW5saW5lKCkpIHsKKyAg
ICAgICAgQVNTRVJUKCFpc0lubGluZSgpKTsKKyAgICAgICAgKmJpdHMoKSB8PSBjbGVhbnNlSW5s
aW5lQml0cyhvdGhlci5tX2JpdHNPclBvaW50ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGVuc3VyZVNpemUob3RoZXIuc2l6ZSgpKTsKKyAgICBBU1NFUlQoIWlzSW5saW5l
KCkpOworICAgIEFTU0VSVCghb3RoZXIuaXNJbmxpbmUoKSk7CisgICAgCisgICAgT3V0T2ZMaW5l
Qml0cyogYSA9IG91dE9mTGluZUJpdHMoKTsKKyAgICBjb25zdCBPdXRPZkxpbmVCaXRzKiBiID0g
b3RoZXIub3V0T2ZMaW5lQml0cygpOworICAgIGZvciAodW5zaWduZWQgaSA9IGEtPm51bVdvcmRz
KCk7IGktLTspCisgICAgICAgIGEtPmJpdHMoKVtpXSB8PSBiLT5iaXRzKClbaV07Cit9CisKIHZv
aWQgQml0VmVjdG9yOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL1dURi93dGYvQml0VmVjdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQml0VmVjdG9yLmgJKHJldmlzaW9uIDE1
NzY5MykKKysrIFNvdXJjZS9XVEYvd3RmL0JpdFZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjksNiArMTY5LDE1IEBAIHB1YmxpYzogCiAgICAgICAgICAgICBjbGVhcihiaXQpOwogICAgIH0K
ICAgICAKKyAgICB2b2lkIG1lcmdlKGNvbnN0IEJpdFZlY3RvciYgb3RoZXIpCisgICAgeworICAg
ICAgICBpZiAoIWlzSW5saW5lKCkgfHwgIW90aGVyLmlzSW5saW5lKCkpIHsKKyAgICAgICAgICAg
IG1lcmdlU2xvdyhvdGhlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgbV9iaXRzT3JQb2ludGVyIHw9IG90aGVyLm1fYml0c09yUG9pbnRlcjsKKyAgICB9CisgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpOwogICAgIAogcHJpdmF0ZToKQEAgLTE5
Myw2ICsyMDIsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGJpdHMgfCAoc3RhdGljX2Nh
c3Q8dWludHB0cl90PigxKSA8PCBtYXhJbmxpbmVCaXRzKCkpOwogICAgIH0KICAgICAKKyAgICBz
dGF0aWMgdWludHB0cl90IGNsZWFuc2VJbmxpbmVCaXRzKHVpbnRwdHJfdCBiaXRzKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJpdHMgJiB+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgbWF4
SW5saW5lQml0cygpKTsKKyAgICB9CisgICAgCiAgICAgY2xhc3MgT3V0T2ZMaW5lQml0cyB7CiAg
ICAgcHVibGljOgogICAgICAgICBzaXplX3QgbnVtQml0cygpIGNvbnN0IHsgcmV0dXJuIG1fbnVt
Qml0czsgfQpAQCAtMjIxLDYgKzIzNSw4IEBAIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzaXplT3V0T2ZMaW5lKHNpemVfdCBudW1CaXRzKTsKICAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRTbG93KGNvbnN0IEJpdFZlY3RvciYgb3RoZXIpOwogICAgIAorICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIG1lcmdlU2xvdyhjb25zdCBCaXRWZWN0b3ImIG90aGVy
KTsKKyAgICAKICAgICB1aW50cHRyX3QqIGJpdHMoKQogICAgIHsKICAgICAgICAgaWYgKGlzSW5s
aW5lKCkpCg==
</data>
<flag name="review"
          id="237280"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>