<?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>79962</bug_id>
          
          <creation_ts>2012-02-29 17:29:49 -0800</creation_ts>
          <short_desc>The JIT should not crash the entire process just because there is not enough executable memory, if the LLInt is enabled</short_desc>
          <delta_ts>2012-03-01 22:29:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>80055</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>loki</cc>
    
    <cc>ossy</cc>
    
    <cc>zecke</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568137</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-29 17:29:49 -0800</bug_when>
    <thetext>Patch forthcoming.

&lt;rdar://problem/10922215&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568140</commentid>
    <comment_count>1</comment_count>
      <attachid>129562</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-29 17:33:26 -0800</bug_when>
    <thetext>Created attachment 129562
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568153</commentid>
    <comment_count>2</comment_count>
      <attachid>129562</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-29 17:47:31 -0800</bug_when>
    <thetext>Comment on attachment 129562
the patch

r=me, minus the debug settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568331</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-29 21:47:54 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/109307 and http://trac.webkit.org/changeset/109308</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568942</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-01 14:43:11 -0800</bug_when>
    <thetext>Reopen, because it broke Qt-ARM and Qt-SH4 builds:

Qt-SH4 build error log:
-------------------------
../../../../Source/JavaScriptCore/assembler/SH4Assembler.h: In member function &apos;WTF::PassRefPtr&lt;WTF::MetaAllocatorHandle&gt; JSC::SH4Assembler::executableCopy(JSC::JSGlobalData&amp;, void*, JSC::JITCompilationEffort)&apos;:
../../../../Source/JavaScriptCore/assembler/SH4Assembler.h:1520:68: error: no matching function for call to &apos;JSC::AssemblerBufferWithConstantPool&lt;512, 4, 2, JSC::SH4Assembler&gt;::executableCopy(JSC::JSGlobalData&amp;, void*&amp;, JSC::JITCompilationEffort&amp;)&apos;In file included from ../../../../Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:32:0,

ARM build error log:
-----------------------
../../../../Source/JavaScriptCore/assembler/ARMAssembler.cpp: In member function &apos;WTF::PassRefPtr&lt;WTF::MetaAllocatorHandle&gt; JSC::ARMAssembler::executableCopy(JSC::JSGlobalData&amp;, void*, JSC::JITCompilationEffort)&apos;:
../../../../Source/JavaScriptCore/assembler/ARMAssembler.cpp:354:97: error: no matching function for call to &apos;JSC::AssemblerBufferWithConstantPool&lt;2048, 4, 4, JSC::ARMAssembler&gt;::executableCopy(JSC::JSGlobalData&amp;, void*&amp;, JSC::JITCompilationEffort&amp;)&apos;
../../../../Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h:198:40: note: candidate is: WTF::PassRefPtr&lt;WTF::MetaAllocatorHandle&gt; JSC::AssemblerBufferWithConstantPool&lt;maxPoolSize, barrierSize, maxInstructionSize, AssemblerType&gt;::executableCopy(JSC::JSGlobalData&amp;, void*) [with int maxPoolSize = 2048, int barrierSize = 4, int maxInstructionSize = 4, AssemblerType = JSC::ARMAssembler]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568946</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-01 14:46:17 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Reopen, because it broke Qt-ARM and Qt-SH4 builds:
&gt; 
&gt; Qt-SH4 build error log:
&gt; -------------------------
&gt; ../../../../Source/JavaScriptCore/assembler/SH4Assembler.h: In member function &apos;WTF::PassRefPtr&lt;WTF::MetaAllocatorHandle&gt; JSC::SH4Assembler::executableCopy(JSC::JSGlobalData&amp;, void*, JSC::JITCompilationEffort)&apos;:
&gt; ../../../../Source/JavaScriptCore/assembler/SH4Assembler.h:1520:68: error: no matching function for call to &apos;JSC::AssemblerBufferWithConstantPool&lt;512, 4, 2, JSC::SH4Assembler&gt;::executableCopy(JSC::JSGlobalData&amp;, void*&amp;, JSC::JITCompilationEffort&amp;)&apos;In file included from ../../../../Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:32:0,
&gt; 
&gt; ARM build error log:
&gt; -----------------------
&gt; ../../../../Source/JavaScriptCore/assembler/ARMAssembler.cpp: In member function &apos;WTF::PassRefPtr&lt;WTF::MetaAllocatorHandle&gt; JSC::ARMAssembler::executableCopy(JSC::JSGlobalData&amp;, void*, JSC::JITCompilationEffort)&apos;:
&gt; ../../../../Source/JavaScriptCore/assembler/ARMAssembler.cpp:354:97: error: no matching function for call to &apos;JSC::AssemblerBufferWithConstantPool&lt;2048, 4, 4, JSC::ARMAssembler&gt;::executableCopy(JSC::JSGlobalData&amp;, void*&amp;, JSC::JITCompilationEffort&amp;)&apos;
&gt; ../../../../Source/JavaScriptCore/assembler/AssemblerBufferWithConstantPool.h:198:40: note: candidate is: WTF::PassRefPtr&lt;WTF::MetaAllocatorHandle&gt; JSC::AssemblerBufferWithConstantPool&lt;maxPoolSize, barrierSize, maxInstructionSize, AssemblerType&gt;::executableCopy(JSC::JSGlobalData&amp;, void*) [with int maxPoolSize = 2048, int barrierSize = 4, int maxInstructionSize = 4, AssemblerType = JSC::ARMAssembler]

Looks like I forgot about threading JITCompilationEffort through AssemblerBufferWithConstantPool::executableCopy().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568948</commentid>
    <comment_count>6</comment_count>
      <attachid>129751</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-01 14:49:23 -0800</bug_when>
    <thetext>Created attachment 129751
the patch for qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569229</commentid>
    <comment_count>7</comment_count>
      <attachid>129751</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-01 21:43:04 -0800</bug_when>
    <thetext>Comment on attachment 129751
the patch for qt

rs=me, thanks for the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569276</commentid>
    <comment_count>8</comment_count>
      <attachid>129751</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-01 22:28:59 -0800</bug_when>
    <thetext>Comment on attachment 129751
the patch for qt

Clearing flags on attachment: 129751

Committed r109511: &lt;http://trac.webkit.org/changeset/109511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569277</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-01 22:29:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129562</attachid>
            <date>2012-02-29 17:33:26 -0800</date>
            <delta_ts>2012-03-01 22:25:49 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>dontcrash_patch_1.diff</filename>
            <type>text/plain</type>
            <size>43955</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5Mjg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkzIEBA
CisyMDEyLTAyLTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEpJVCBzaG91bGQgbm90IGNyYXNoIHRoZSBlbnRpcmUgcHJvY2VzcyBqdXN0IGJlY2F1c2Ug
dGhlcmUgaXMgbm90CisgICAgICAgIGVub3VnaCBleGVjdXRhYmxlIG1lbW9yeSwgaWYgdGhlIExM
SW50IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5OTYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDkyMjIxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIHRo
ZSBub3Rpb24gb2YgSklUQ29tcGlsYXRpb25FZmZvcnQuIElmIHdlJ3JlIEpJVCdpbmcgYXMgYSBy
ZXN1bHQgb2YKKyAgICAgICAgYSB0aWVyLXVwLCB0aGVuIHdlIHNldCBpdCB0byBKSVRDb21waWxh
dGlvbkNhbkZhaWwuIE90aGVyd2lzZSBpdCdzCisgICAgICAgIEpJVENvbXBpbGF0aW9uTXVzdFN1
Y2NlZWQuIFRoaXMgcHJlc2VydmVzIHRoZSBvbGQgYmVoYXZpb3Igb2YgTExJbnQgaXMKKyAgICAg
ICAgZGlzYWJsZWQgb3IgaWYgd2UncmUgY29tcGlsaW5nIHNvbWV0aGluZyB0aGF0IGNhbid0IGJl
IGludGVycHJldGVkIChsaWtlCisgICAgICAgIGFuIE9TUiBleGl0IHN0dWIpLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6QVJNQXNzZW1ibGVyOjpl
eGVjdXRhYmxlQ29weSk6CisgICAgICAgICogYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oOgorICAg
ICAgICAoQVJNQXNzZW1ibGVyKToKKyAgICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVy
Lmg6CisgICAgICAgIChKU0M6OkFzc2VtYmxlckJ1ZmZlcjo6ZXhlY3V0YWJsZUNvcHkpOgorICAg
ICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6
OkxpbmtCdWZmZXIpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjp+TGlua0J1ZmZlcik6Cisg
ICAgICAgIChMaW5rQnVmZmVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6ZGlkRmFpbFRv
QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjppc1ZhbGlkKToKKyAgICAgICAg
KEpTQzo6TGlua0J1ZmZlcjo6bGlua0NvZGUpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpw
ZXJmb3JtRmluYWxpemF0aW9uKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5o
OgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpleGVjdXRhYmxlQ29weSk6CisgICAgICAg
ICogYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6
OmV4ZWN1dGFibGVDb3B5KToKKyAgICAgICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6ZXhlY3V0YWJsZUNvcHkpOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6Olg4Nkluc3RydWN0aW9uRm9ybWF0dGVyOjpleGVjdXRhYmxlQ29weSk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3Jh
bUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2Nr
OjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRD
b21waWxlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAg
ICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChFdmFsQ29kZUJsb2NrKToKKyAgICAgICAg
KEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHRHJpdmVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpjb21waWxlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZH
SklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpJVENvbXBpbGVyKToKKyAgICAgICAgKiBqaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRlbWFuZEV4ZWN1dGFibGVBbGxv
Y2F0b3I6OmFsbG9jYXRlTmV3U3BhY2UpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2Nh
dG9yOjphbGxvY2F0ZSk6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAg
ICAgICAgKEV4ZWN1dGFibGVBbGxvY2F0b3IpOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yRml4ZWRWTVBvb2wuY3BwOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9y
OjphbGxvY2F0ZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpTQzo6SklU
Ojpjb21waWxlKToKKyAgICAgICAgKEpJVCk6CisgICAgICAgICogaml0L0pJVENvbXBpbGF0aW9u
RWZmb3J0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVy
Lmg6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpT
Qzo6aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6
aml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MpOgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlP
U1IpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
OjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxs
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3Ry
dWN0KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEV2YWxFeGVj
dXRhYmxlKToKKyAgICAgICAgKFByb2dyYW1FeGVjdXRhYmxlKToKKyAgICAgICAgKEZ1bmN0aW9u
RXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGls
ZUZvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmg6CisgICAgICAgIChK
U0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25G
b3JFeGVjdXRpb24pOgorCiAyMDEyLTAyLTI5ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RvcCBpbnN0YWxsaW5nIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvci4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDkyODApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsNyBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBD
RjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5
Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
QkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
ICovOyB9OworCQkwRjA3NzZCRjE0RkYwMDJCMDAxMDIzMzIgLyogSklUQ29tcGlsYXRpb25FZmZv
cnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDc3
NkJEMTRGRjAwMjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4MzlBMTRCQ0Y0NUQw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCAqLzsgfTsKIAkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50
RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzOUMxNEJD
RjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRo
dW5rcy5jcHAgKi87IH07CkBAIC05MjYsNiArOTI3LDcgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAw
Q0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQg
LyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwNzc2QkQxNEZG
MDAyODAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVENvbXBpbGF0aW9uRWZmb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2lu
dHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMu
aDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
MjIsNiArMTkyNCw3IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMDc3NkJEMTRGRjAw
MjgwMDEwMjMzMiAvKiBKSVRDb21waWxhdGlvbkVmZm9ydC5oICovLAogCQkJCTBGNDY4MEQwMTRC
QkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKIAkJCQkwRjQ2ODBE
MTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4
MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKQEAgLTM0MDUsNiAr
MzQwOCw3IEBACiAJCQkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFs
dWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI1NDY3QjE0RjVDN0UxMDAyQzI5ODkg
LyogTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZC
NTQ2OTAxNEZBREE3QjAwMkMyOTg5IC8qIFJlZkNvdW50ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwNzc2QkYxNEZGMDAyQjAwMTAyMzMyIC8qIEpJVENvbXBpbGF0aW9uRWZmb3J0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
QXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTUFzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEwOTI4MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ0
LDE0ICszNDQsMTQgQEAgdm9pZCBBUk1Bc3NlbWJsZXI6OmRvdWJsZVRyYW5zZmVyKGJvb2wgaQog
ICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiB9CiAKLVBh
c3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gQVJNQXNzZW1ibGVyOjpleGVjdXRhYmxl
Q29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG93bmVyVUlEKQorUGFzc1JlZlB0
cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZm
b3J0IGVmZm9ydCkKIHsKICAgICAvLyA2NC1iaXQgYWxpZ25tZW50IGlzIHJlcXVpcmVkIGZvciBu
ZXh0IGNvbnN0YW50IHBvb2wgYW5kIEpJVCBjb2RlIGFzIHdlbGwKICAgICBtX2J1ZmZlci5mbHVz
aFdpdGhvdXRCYXJyaWVyKHRydWUpOwogICAgIGlmICghbV9idWZmZXIuaXNBbGlnbmVkKDgpKQog
ICAgICAgICBia3B0KDApOwogCi0gICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHJl
c3VsdCA9IG1fYnVmZmVyLmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEsIG93bmVyVUlEKTsKKyAg
ICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gcmVzdWx0ID0gbV9idWZmZXIuZXhlY3V0
YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQsIGVmZm9ydCk7CiAgICAgY2hhciogZGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHJlc3VsdC0+c3RhcnQoKSk7CiAKICAgICBmb3IgKEp1
bXBzOjpJdGVyYXRvciBpdGVyID0gbV9qdW1wcy5iZWdpbigpOyBpdGVyICE9IG1fanVtcHMuZW5k
KCk7ICsraXRlcikgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1B
c3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTUFzc2VtYmxlci5oCShyZXZpc2lvbiAxMDkyODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaWYgRU5BQkxFKEFTU0VNQkxFUikgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKIAogI2lu
Y2x1ZGUgIkFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCIKKyNpbmNsdWRlICJKSVRD
b21waWxhdGlvbkVmZm9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiBuYW1lc3Bh
Y2UgSlNDIHsKIApAQCAtNjc5LDcgKzY4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGxvYWRCcmFuY2hUYXJnZXQoQVJNUmVnaXN0ZXJzOjpwYywgY2MsIHVzZUNvbnN0
YW50UG9vbCk7CiAgICAgICAgIH0KIAotICAgICAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGU+IGV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYsIHZvaWQqIG93bmVyVUlEKTsK
KyAgICAgICAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBleGVjdXRhYmxlQ29w
eShKU0dsb2JhbERhdGEmLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOwog
CiAgICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdP
ZmZzZXQoKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2Vt
YmxlckJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHJldmlzaW9uIDEwOTI4MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAKKyNpbmNsdWRlICJKSVRDb21w
aWxhdGlvbkVmZm9ydC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgInN0
ZGludC5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTI5LDEyICsxMzAsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gQXNzZW1ibGVyTGFiZWwobV9pbmRleCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4
ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3duZXJVSUQpCisg
ICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gZXhlY3V0YWJsZUNvcHko
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25F
ZmZvcnQgZWZmb3J0KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1faW5kZXgpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVt
b3J5SGFuZGxlPiByZXN1bHQgPSBnbG9iYWxEYXRhLmV4ZWN1dGFibGVBbGxvY2F0b3IuYWxsb2Nh
dGUoZ2xvYmFsRGF0YSwgbV9pbmRleCwgb3duZXJVSUQpOworICAgICAgICAgICAgUmVmUHRyPEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHJlc3VsdCA9IGdsb2JhbERhdGEuZXhlY3V0YWJsZUFsbG9j
YXRvci5hbGxvY2F0ZShnbG9iYWxEYXRhLCBtX2luZGV4LCBvd25lclVJRCwgZWZmb3J0KTsKIAog
ICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNp
b24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5L
X0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAj
ZGVmaW5lIFJFR0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PGludHB0cl90PigtMikpCiAKKyNpbmNsdWRlICJKSVRDb21waWxhdGlvbkVmZm9ydC5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTczLDcgKzc0LDcgQEAgY2xhc3MgTGlua0J1ZmZl
ciB7CiAjZW5kaWYKIAogcHVibGljOgotICAgIExpbmtCdWZmZXIoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBNYWNyb0Fzc2VtYmxlciogbWFzbSwgdm9pZCogb3duZXJVSUQpCisgICAgTGlua0J1
ZmZlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCB2b2lk
KiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0ID0gSklUQ29tcGlsYXRpb25N
dXN0U3VjY2VlZCkKICAgICAgICAgOiBtX3NpemUoMCkKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBB
Q1RJT04pCiAgICAgICAgICwgbV9pbml0aWFsU2l6ZSgwKQpAQCAtODMsMTYgKzg0LDI3IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX2dsb2JhbERhdGEoJmdsb2JhbERhdGEpCiAjaWZuZGVmIE5ERUJV
RwogICAgICAgICAsIG1fY29tcGxldGVkKGZhbHNlKQorICAgICAgICAsIG1fZWZmb3J0KGVmZm9y
dCkKICNlbmRpZgogICAgIHsKLSAgICAgICAgbGlua0NvZGUob3duZXJVSUQpOworICAgICAgICBs
aW5rQ29kZShvd25lclVJRCwgZWZmb3J0KTsKICAgICB9CiAKICAgICB+TGlua0J1ZmZlcigpCiAg
ICAgewotICAgICAgICBBU1NFUlQobV9jb21wbGV0ZWQpOworICAgICAgICBBU1NFUlQobV9jb21w
bGV0ZWQgfHwgKCFtX2V4ZWN1dGFibGVNZW1vcnkgJiYgbV9lZmZvcnQgPT0gSklUQ29tcGlsYXRp
b25DYW5GYWlsKSk7CisgICAgfQorICAgIAorICAgIGJvb2wgZGlkRmFpbFRvQWxsb2NhdGUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX2V4ZWN1dGFibGVNZW1vcnk7CiAgICAgfQog
CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhZGlkRmFp
bFRvQWxsb2NhdGUoKTsKKyAgICB9CisgICAgCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNl
ZCB0byBsaW5rIG9yIHNldCB2YWx1ZXMgYXQgY29kZSBnZW5lcmF0aW9uIHRpbWUuCiAKICAgICB2
b2lkIGxpbmsoQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBmdW5jdGlvbikKQEAgLTIxOCwxMSArMjMw
LDExIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX2NvZGU7CiAgICAgfQogCi0gICAgdm9p
ZCBsaW5rQ29kZSh2b2lkKiBvd25lclVJRCkKKyAgICB2b2lkIGxpbmtDb2RlKHZvaWQqIG93bmVy
VUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgewogICAgICAgICBBU1NFUlQo
IW1fY29kZSk7CiAjaWYgIUVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKLSAgICAgICAgbV9leGVj
dXRhYmxlTWVtb3J5ID0gbV9hc3NlbWJsZXItPm1fYXNzZW1ibGVyLmV4ZWN1dGFibGVDb3B5KCpt
X2dsb2JhbERhdGEsIG93bmVyVUlEKTsKKyAgICAgICAgbV9leGVjdXRhYmxlTWVtb3J5ID0gbV9h
c3NlbWJsZXItPm1fYXNzZW1ibGVyLmV4ZWN1dGFibGVDb3B5KCptX2dsb2JhbERhdGEsIG93bmVy
VUlELCBlZmZvcnQpOwogICAgICAgICBpZiAoIW1fZXhlY3V0YWJsZU1lbW9yeSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgbV9jb2RlID0gbV9leGVjdXRhYmxlTWVtb3J5LT5zdGFydCgp
OwpAQCAtMjMwLDcgKzI0Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChtX2NvZGUpOwog
I2Vsc2UKICAgICAgICAgbV9pbml0aWFsU2l6ZSA9IG1fYXNzZW1ibGVyLT5tX2Fzc2VtYmxlci5j
b2RlU2l6ZSgpOwotICAgICAgICBtX2V4ZWN1dGFibGVNZW1vcnkgPSBtX2dsb2JhbERhdGEtPmV4
ZWN1dGFibGVBbGxvY2F0b3IuYWxsb2NhdGUoKm1fZ2xvYmFsRGF0YSwgbV9pbml0aWFsU2l6ZSwg
b3duZXJVSUQpOworICAgICAgICBtX2V4ZWN1dGFibGVNZW1vcnkgPSBtX2dsb2JhbERhdGEtPmV4
ZWN1dGFibGVBbGxvY2F0b3IuYWxsb2NhdGUoKm1fZ2xvYmFsRGF0YSwgbV9pbml0aWFsU2l6ZSwg
b3duZXJVSUQsIGVmZm9ydCk7CiAgICAgICAgIGlmICghbV9leGVjdXRhYmxlTWVtb3J5KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2NvZGUgPSAodWludDhfdCopbV9leGVjdXRhYmxl
TWVtb3J5LT5zdGFydCgpOwpAQCAtMzA3LDYgKzMxOSw3IEBAIHByaXZhdGU6CiAgICAgewogI2lm
bmRlZiBOREVCVUcKICAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CisgICAgICAgIEFTU0VS
VChpc1ZhbGlkKCkpOwogICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAjZW5kaWYKIApAQCAt
Mzc1LDYgKzM4OCw3IEBAIHByaXZhdGU6CiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7
CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9jb21wbGV0ZWQ7CisgICAgSklUQ29tcGlsYXRp
b25FZmZvcnQgbV9lZmZvcnQ7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMDkyODApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2lmIEVOQUJMRShBU1NFTUJMRVIpICYmIENQVShN
SVBTKQogCiAjaW5jbHVkZSAiQXNzZW1ibGVyQnVmZmVyLmgiCisjaW5jbHVkZSAiSklUQ29tcGls
YXRpb25FZmZvcnQuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9TZWdtZW50ZWRWZWN0b3IuaD4KIApAQCAtNjQ1LDkgKzY0Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyLmNvZGVTaXplKCk7CiAgICAgfQogCi0gICAgUGFzc1JlZlB0cjxF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBleGVjdXRhYmxlQ29weShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIHZvaWQqIG93bmVyVUlEKQorICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhh
bmRsZT4gZXhlY3V0YWJsZUNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvd25l
clVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgIHsKLSAgICAgICAgUmVmUHRy
PEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHJlc3VsdCA9IG1fYnVmZmVyLmV4ZWN1dGFibGVDb3B5
KGdsb2JhbERhdGEsIG93bmVyVUlEKTsKKyAgICAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlI
YW5kbGU+IHJlc3VsdCA9IG1fYnVmZmVyLmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEsIG93bmVy
VUlELCBlZmZvcnQpOwogICAgICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiAw
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDEwOTI4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvU0g0QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2lu
Y2x1ZGUgIkFzc2VtYmxlckJ1ZmZlci5oIgogI2luY2x1ZGUgIkFzc2VtYmxlckJ1ZmZlcldpdGhD
b25zdGFudFBvb2wuaCIKKyNpbmNsdWRlICJKSVRDb21waWxhdGlvbkVmZm9ydC5oIgogI2luY2x1
ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBA
IC0xNTE0LDkgKzE1MTUsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PHZvaWQqPihyZWFkUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYp
LCBpbnN0cnVjdGlvblB0cikpOwogICAgIH0KIAotICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1l
bW9yeUhhbmRsZT4gZXhlY3V0YWJsZUNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lk
KiBvd25lclVJRCkKKyAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1
dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENv
bXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5l
eGVjdXRhYmxlQ29weShnbG9iYWxEYXRhLCBvd25lclVJRCk7CisgICAgICAgIHJldHVybiBtX2J1
ZmZlci5leGVjdXRhYmxlQ29weShnbG9iYWxEYXRhLCBvd25lclVJRCwgZWZmb3J0KTsKICAgICB9
CiAKICAgICB2b2lkIHByZWZpeCh1aW50MTZfdCBwcmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHJldmlzaW9uIDEwOTI4MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQVNTRU1CTEVSKSAmJiAoQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkpCiAKICNpbmNsdWRlICJBc3NlbWJsZXJCdWZmZXIuaCIKKyNpbmNs
dWRlICJKSVRDb21waWxhdGlvbkVmZm9ydC5oIgogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTc4Miw5
ICsxNzgzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYi5tX29mZnNldCAtIGEubV9vZmZz
ZXQ7CiAgICAgfQogICAgIAotICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4g
ZXhlY3V0YWJsZUNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvd25lclVJRCkK
KyAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1dGFibGVDb3B5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZm
b3J0IGVmZm9ydCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5leGVjdXRhYmxl
Q29weShnbG9iYWxEYXRhLCBvd25lclVJRCk7CisgICAgICAgIHJldHVybiBtX2Zvcm1hdHRlci5l
eGVjdXRhYmxlQ29weShnbG9iYWxEYXRhLCBvd25lclVJRCwgZWZmb3J0KTsKICAgICB9CiAKICAg
ICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVyLmRlYnVnT2Zmc2V0
KCk7IH0KQEAgLTIxMzAsOSArMjEzMSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNBbGln
bmVkKGludCBhbGlnbm1lbnQpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmlzQWxpZ25lZChhbGln
bm1lbnQpOyB9CiAgICAgICAgIHZvaWQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5k
YXRhKCk7IH0KIAotICAgICAgICBQYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4
ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb3duZXJVSUQpCisg
ICAgICAgIFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gZXhlY3V0YWJsZUNvcHko
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25F
ZmZvcnQgZWZmb3J0KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuZXhl
Y3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOworICAgICAgICAgICAgcmV0dXJuIG1f
YnVmZmVyLmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEsIG93bmVyVUlELCBlZmZvcnQpOwogICAg
ICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2J1ZmZl
ci5kZWJ1Z09mZnNldCgpOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMjUsMjEgKzIz
MjUsMjEgQEAgdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogICAgIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRp
bWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25z
dHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CiAKLXZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorYm9vbCBQcm9ncmFtQ29kZUJsb2Nr
OjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgQVNTRVJU
KGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKICAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7CiB9
CiAKLXZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQorYm9vbCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCiB7CiAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpp
dENvbXBpbGUoZ2xvYmFsRGF0YSk7CiB9CiAKLXZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK2Jvb2wgRnVuY3Rpb25Db2RlQmxv
Y2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKICAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwogICAgIEFTU0VS
VCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsMTggKzM2
NiwyMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSog
ZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVt
b3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVj
U3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRp
c29uKCkgPSAwOwotICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQorICAgICAgICBlbnVtIEpJVENvbXBpbGF0aW9uUmVzdWx0IHsgQWxyZWFkeUNvbXBpbGVk
LCBDb3VsZE5vdENvbXBpbGUsIENvbXBpbGVkU3VjY2Vzc2Z1bGx5IH07CisgICAgICAgIEpJVENv
bXBpbGF0aW9uUmVzdWx0IGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIEFscmVhZHlDb21waWxlZDsKICAgICAgICAgICAgIH0KICNpZiBFTkFC
TEUoSklUKQotICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChqaXRDb21waWxlSW1wbChnbG9iYWxE
YXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gQ29tcGlsZWRTdWNjZXNzZnVsbHk7CisgICAg
ICAgICAgICByZXR1cm4gQ291bGROb3RDb21waWxlOwogI2Vsc2UKICAgICAgICAgICAgIFVOVVNF
RF9QQVJBTShnbG9iYWxEYXRhKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJldHVybiBDb3VsZE5vdENvbXBpbGU7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CkBAIC0xMDQwLDcgKzEwNDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoSklUKQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOwogI2Vu
ZGlmCiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9y
Jik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwpAQCAt
MTI4NCw3ICsxMjg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2Rl
QmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0
aERGR0ludGVybmFsKCk7CiAjZW5kaWYKQEAgLTEzMTksNyArMTMyMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9w
dGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgamV0dGlzb24oKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xv
YmFsRGF0YSYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0x
MzU3LDcgKzEzNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdmlydHVhbCBi
b29sIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVC
bG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRo
REZHSW50ZXJuYWwoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmNwcAkocmV2aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCwxOCArNzAsMTkgQEAgaW5saW5l
IGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogI2VuZGlmCiAgICAgCiAgICAgSklU
Q29tcGlsZXIgZGF0YUZsb3dKSVQoZGZnKTsKKyAgICBib29sIHJlc3VsdDsKICAgICBpZiAoY29t
cGlsZU1vZGUgPT0gQ29tcGlsZUZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOwogICAgICAgICAKLSAgICAgICAgZGF0YUZsb3dKSVQuY29tcGlsZUZ1bmN0
aW9uKGppdENvZGUsICpqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXN1bHQgPSBk
YXRhRmxvd0pJVC5jb21waWxlRnVuY3Rpb24oaml0Q29kZSwgKmppdENvZGVXaXRoQXJpdHlDaGVj
ayk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGNvbXBpbGVNb2RlID09IENvbXBpbGVP
dGhlcik7CiAgICAgICAgIEFTU0VSVCghaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAgICAg
Ci0gICAgICAgIGRhdGFGbG93SklULmNvbXBpbGUoaml0Q29kZSk7CisgICAgICAgIHJlc3VsdCA9
IGRhdGFGbG93SklULmNvbXBpbGUoaml0Q29kZSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgdHJ5Q29tcGlsZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJl
dmlzaW9uIDEwOTI4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBKSVRDb21waWxl
cjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgIGNvZGVCbG9jaygpLT5zaHJpbmtXZWFrUmVm
ZXJlbmNlVHJhbnNpdGlvbnNUb0ZpdCgpOwogfQogCi12b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
KEpJVENvZGUmIGVudHJ5KQorYm9vbCBKSVRDb21waWxlcjo6Y29tcGlsZShKSVRDb2RlJiBlbnRy
eSkKIHsKICAgICBjb21waWxlRW50cnkoKTsKICAgICBTcGVjdWxhdGl2ZUpJVCBzcGVjdWxhdGl2
ZSgqdGhpcyk7CkBAIC0yMDQsMTQgKzIwNCwxNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxl
KEpJVENvZGUmIGVudHJ5CiAgICAgLy8gQ3JlYXRlIE9TUiBlbnRyeSB0cmFtcG9saW5lcyBpZiBu
ZWNlc3NhcnkuCiAgICAgc3BlY3VsYXRpdmUuY3JlYXRlT1NSRW50cmllcygpOwogCi0gICAgTGlu
a0J1ZmZlciBsaW5rQnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIG1fY29kZUJsb2NrKTsKKyAg
ICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2ss
IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxs
b2NhdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGxpbmsobGlua0J1ZmZlcik7CiAg
ICAgc3BlY3VsYXRpdmUubGlua09TUkVudHJpZXMobGlua0J1ZmZlcik7CiAKICAgICBlbnRyeSA9
IEpJVENvZGUobGlua0J1ZmZlci5maW5hbGl6ZUNvZGUoKSwgSklUQ29kZTo6REZHSklUKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJ
VENvZGUmIGVudHJ5LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGVudHJ5V2l0aEFyaXR5Q2hlY2sp
Citib29sIEpJVENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kZSYgZW50cnksIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciYgZW50cnlXaXRoQXJpdHlDaGVjaykKIHsKICAgICBjb21waWxlRW50
cnkoKTsKIApAQCAtMjcyLDcgKzI3NSw5IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbihKSVRDb2QKIAogCiAgICAgLy8gPT09IExpbmsgPT09Ci0gICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIG1fY29kZUJsb2NrKTsKKyAgICBMaW5rQnVmZmVy
IGxpbmtCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2ssIEpJVENvbXBpbGF0
aW9uQ2FuRmFpbCk7CisgICAgaWYgKGxpbmtCdWZmZXIuZGlkRmFpbFRvQWxsb2NhdGUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGxpbmsobGlua0J1ZmZlcik7CiAgICAgc3BlY3VsYXRp
dmUubGlua09TUkVudHJpZXMobGlua0J1ZmZlcik7CiAgICAgCkBAIC0yODIsNiArMjg3LDcgQEAg
dm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKEpJVENvZAogCiAgICAgZW50cnlXaXRo
QXJpdHlDaGVjayA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihhcml0eUNoZWNrKTsKICAgICBlbnRy
eSA9IEpJVENvZGUobGlua0J1ZmZlci5maW5hbGl6ZUNvZGUoKSwgSklUQ29kZTo6REZHSklUKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTA5
MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTQsOCArMTk0LDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIGNvbXBpbGUoSklUQ29kZSYgZW50cnkpOwotICAgIHZvaWQgY29tcGlsZUZ1bmN0aW9u
KEpJVENvZGUmIGVudHJ5LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGVudHJ5V2l0aEFyaXR5Q2hl
Y2spOworICAgIGJvb2wgY29tcGlsZShKSVRDb2RlJiBlbnRyeSk7CisgICAgYm9vbCBjb21waWxl
RnVuY3Rpb24oSklUQ29kZSYgZW50cnksIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgZW50cnlXaXRo
QXJpdHlDaGVjayk7CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIHByb3BlcnRpZXMuCiAgICAgR3Jh
cGgmIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxMDkyODAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw5IEBAIHByb3RlY3RlZDoKICAgICAgICAgCiAgICAg
ICAgIG51bVBhZ2VzID0gbmV3TnVtUGFnZXM7CiAgICAgICAgIAorICAgICAgICBpZiAodHJ1ZSAm
JiBieXRlc1Jlc2VydmVkKCkgPiAxMDAwMDAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIAogICAgICAgICBQYWdlUmVzZXJ2YXRpb24gcmVzZXJ2YXRpb24gPSBQYWdlUmVzZXJ2YXRp
b246OnJlc2VydmUobnVtUGFnZXMgKiBwYWdlU2l6ZSgpLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7CiAgICAgICAgIGlmICghcmVz
ZXJ2YXRpb24pCiAgICAgICAgICAgICBDUkFTSCgpOwpAQCAtMTEyLDEwICsxMTUsMTAgQEAgYm9v
bCBFeGVjdXRhYmxlQWxsb2NhdG9yOjp1bmRlck1lbW9yeVByZQogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxsb2Nh
dG9yOjphbGxvY2F0ZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93
bmVyVUlEKQorUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBFeGVjdXRhYmxlQWxs
b2NhdG9yOjphbGxvY2F0ZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQq
IG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiB7CiAgICAgUmVmUHRyPEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHJlc3VsdCA9IGFsbG9jYXRvci0+YWxsb2NhdGUoc2l6ZUlu
Qnl0ZXMsIG93bmVyVUlEKTsKLSAgICBpZiAoIXJlc3VsdCkKKyAgICBpZiAoIXJlc3VsdCAmJiBl
ZmZvcnQgPT0gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCkKICAgICAgICAgQ1JBU0goKTsKICAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAxMDkyODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAjaWZuZGVmIEV4ZWN1dGFibGVBbGxvY2F0b3JfaAog
I2RlZmluZSBFeGVjdXRhYmxlQWxsb2NhdG9yX2gKKyNpbmNsdWRlICJKSVRDb21waWxhdGlvbkVm
Zm9ydC5oIgogI2luY2x1ZGUgPHN0ZGRlZi5oPiAvLyBmb3IgcHRyZGlmZl90CiAjaW5jbHVkZSA8
bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0xMTMsNyArMTE0LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIGR1bXBQcm9maWxlKCkgeyB9CiAjZW5kaWYKIAotICAg
IFBhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoSlNHbG9iYWxEYXRh
Jiwgc2l6ZV90IHNpemVJbkJ5dGVzLCB2b2lkKiBvd25lclVJRCk7CisgICAgUGFzc1JlZlB0cjxF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlPiBhbGxvY2F0ZShKU0dsb2JhbERhdGEmLCBzaXplX3Qgc2l6
ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCk7CiAKICNpZiBF
TkFCTEUoQVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSkKICAgICBzdGF0aWMgdm9pZCBtYWtlV3JpdGFi
bGUodm9pZCogc3RhcnQsIHNpemVfdCBzaXplKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNw
cAkocmV2aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTAgKzEx
NSwxMiBAQCBib29sIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnVuZGVyTWVtb3J5UHJlCiAgICAgcmV0
dXJuIHN0YXRpc3RpY3MuYnl0ZXNBbGxvY2F0ZWQgPiBzdGF0aXN0aWNzLmJ5dGVzUmVzZXJ2ZWQg
LyAyOwogfQogCi1QYXNzUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IEV4ZWN1dGFibGVB
bGxvY2F0b3I6OmFsbG9jYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgc2l6ZV90IHNpemVJ
bkJ5dGVzLCB2b2lkKiBvd25lclVJRCkKK1Bhc3NSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRs
ZT4gRXhlY3V0YWJsZUFsbG9jYXRvcjo6YWxsb2NhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRDb21waWxhdGlvbkVmZm9y
dCBlZmZvcnQpCiB7CiAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+IHJlc3VsdCA9
IGFsbG9jYXRvci0+YWxsb2NhdGUoc2l6ZUluQnl0ZXMsIG93bmVyVUlEKTsKICAgICBpZiAoIXJl
c3VsdCkgeworICAgICAgICBpZiAoZWZmb3J0ID09IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCkKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5
KGdsb2JhbERhdGEpOwogICAgICAgICByZXN1bHQgPSBhbGxvY2F0b3ItPmFsbG9jYXRlKHNpemVJ
bkJ5dGVzLCBvd25lclVJRCk7CiAgICAgICAgIGlmICghcmVzdWx0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICNlbmRpZgogfQogCi1KSVRDb2RlIEpJVDo6
cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCitKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2ssIEpJ
VENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQogICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CkBAIC02MTcsNyArNjE3LDkg
QEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogCiAgICAgQVNTRVJU
KG1fam1wVGFibGUuaXNFbXB0eSgpKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1f
Z2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2spOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZm
ZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2ssIGVmZm9ydCk7CisgICAgaWYgKHBh
dGNoQnVmZmVyLmRpZEZhaWxUb0FsbG9jYXRlKCkpCisgICAgICAgIHJldHVybiBKSVRDb2RlKCk7
CiAKICAgICAvLyBUcmFuc2xhdGUgdlBDIG9mZnNldHMgaW50byBhZGRyZXNzZXMgaW4gSklUIGdl
bmVyYXRlZCBjb2RlLCBmb3Igc3dpdGNoIHRhYmxlcy4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9zd2l0Y2hlcy5zaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCShyZXZpc2lvbiAxMDkyODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAvLyBWZXJib3NlIGxvZ2dpbmcgb2Yg
Y29kZSBnZW5lcmF0aW9uCiAjZGVmaW5lIEVOQUJMRV9KSVRfVkVSQk9TRSAwCiAvLyBWZXJib3Nl
IGxvZ2dpbmcgZm9yIE9TUi1yZWxhdGVkIGNvZGUuCi0jZGVmaW5lIEVOQUJMRV9KSVRfVkVSQk9T
RV9PU1IgMAorI2RlZmluZSBFTkFCTEVfSklUX1ZFUkJPU0VfT1NSIDEKIAogLy8gV2UndmUgcnVu
IGludG8gc29tZSBwcm9ibGVtcyB3aGVyZSBjaGFuZ2luZyB0aGUgc2l6ZSBvZiB0aGUgY2xhc3Mg
SklUIGxlYWRzIHRvCiAvLyBwZXJmb3JtYW5jZSBmbHVjdHVhdGlvbnMuICBUcnkgZm9yY2luZyBh
bGlnbm1lbnQgaW4gYW4gYXR0ZW1wdCB0byBzdGFiYWxpemUgdGhpcy4KQEAgLTE5OSw5ICsxOTks
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBwYXRjaFB1dEJ5
SWREZWZhdWx0T2Zmc2V0ID0gMjU2OwogCiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgSklU
Q29kZSBjb21waWxlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrID0gMCkKKyAgICAgICAgc3RhdGlj
IEpJVENvZGUgY29tcGlsZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQsIENvZGVQdHIqIGZ1bmN0aW9uRW50
cnlBcml0eUNoZWNrID0gMCkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEpJVChnbG9i
YWxEYXRhLCBjb2RlQmxvY2spLnByaXZhdGVDb21waWxlKGZ1bmN0aW9uRW50cnlBcml0eUNoZWNr
KTsKKyAgICAgICAgICAgIHJldHVybiBKSVQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrKS5wcml2YXRl
Q29tcGlsZShmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaywgZWZmb3J0KTsKICAgICAgICAgfQogCiAg
ICAgICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVHZXRCeUlkUHJvdG8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSog
cHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgY29uc3QgUHJvcGVy
dHlTbG90JiBzbG90LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
bkFkZHJlc3MpCkBAIC0yOTEsNyArMjkxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxl
TGlua1Bhc3MoKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpOwotICAg
ICAgICBKSVRDb2RlIHByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNo
ZWNrKTsKKyAgICAgICAgSklUQ29kZSBwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVu
dHJ5QXJpdHlDaGVjaywgSklUQ29tcGlsYXRpb25FZmZvcnQpOwogICAgICAgICB2b2lkIHByaXZh
dGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9w
ZXJ0eVNsb3QmLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MsIENhbGxGcmFtZSogY2FsbEZyYW1lKTsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNjZXNzU3Ry
dWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYsIHNpemVfdCBjYWNoZWRPZmZzZXQpOwogICAgICAgICB2b2lkIHByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyosIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCosIGludCwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVT
dHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmLCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvbXBpbGF0aW9uRWZmb3J0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbkVmZm9ydC5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb21waWxhdGlvbkVmZm9ydC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgSklUQ29tcGlsYXRpb25FZmZvcnRfaAorI2RlZmluZSBK
SVRDb21waWxhdGlvbkVmZm9ydF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIEpJVENvbXBp
bGF0aW9uRWZmb3J0IHsKKyAgICBKSVRDb21waWxhdGlvbkNhbkZhaWwsCisgICAgSklUQ29tcGls
YXRpb25NdXN0U3VjY2VlZAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBK
SVRDb21waWxhdGlvbkVmZm9ydF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
cml2ZXIuaAkocmV2aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Ci1pbmxpbmUgYm9vbCBqaXRD
b21waWxlSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2Rl
QmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGUpCitpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2Rl
JiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIEpJVENvbXBpbGF0aW9uRWZmb3J0
IGVmZm9ydCkKIHsKICAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01OSwxNCArNTksMTYgQEAgaW5saW5lIGJvb2wgaml0
Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICAgICAgY29kZUJsb2NrID0gc3RhdGlj
X3BvaW50ZXJfY2FzdDxDb2RlQmxvY2tUeXBlPihjb2RlQmxvY2stPnJlbGVhc2VBbHRlcm5hdGl2
ZSgpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBqaXRD
b2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkpOworICAgICAg
ICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGVm
Zm9ydCk7CisgICAgICAgIGlmICghaml0Q29kZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIGJvb2wgaml0
Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93
blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRh
YmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK2lubGluZSBib29s
IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1i
b2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIEpJVENvbXBp
bGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKICAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdl
dEpJVFR5cGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04OCw3ICs5MCw5IEBAIGlubGlu
ZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgICAgIHN5bWJvbFRh
YmxlID0gY29kZUJsb2NrLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2Jh
bERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAg
IGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgZWZm
b3J0LCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgaWYgKCFqaXRDb2RlKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTA5Mjgw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY3LDYgKzI2NywzMiBAQCBpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7
CiB9CiAKKy8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdHJ5IHRvIE9TUi4KK2lubGluZSBi
b29sIGppdENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKENvZGVCbG9jayogY29kZUJsb2NrLCBFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgQ29kZUJsb2NrOjpKSVRDb21waWxhdGlvblJlc3VsdCByZXN1
bHQgPSBjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBzd2l0
Y2ggKHJlc3VsdCkgeworICAgIGNhc2UgQ29kZUJsb2NrOjpBbHJlYWR5Q29tcGlsZWQ6CisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgZGF0YUxvZygiICAgIENvZGUgd2FzIGFs
cmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24o
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDb2RlQmxvY2s6OkNvdWxkTm90Q29t
cGlsZToKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBkYXRhTG9nKCIgICAg
SklUIGNvbXBpbGF0aW9uIGZhaWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIGNvZGVCbG9jay0+
ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENv
ZGVCbG9jazo6Q29tcGlsZWRTdWNjZXNzZnVsbHk6CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKKyAgICAgICAgZGF0YUxvZygiICAgIEpJVCBjb21waWxhdGlvbiBzdWNjZXNzZnVsLlxuIik7
CisjZW5kaWYKKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KK30KKwogZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9
Owogc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVu
dHJ5S2luZCBraW5kKQogewpAQCAtMjc4LDEyICszMDQsOSBAQCBzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGVudHJ5T1NSKEV4ZWNTCiAgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVT
b29uKCk7CiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CiAgICAgfQotICAgIGlm
ICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKLSNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29kZSB3YXMgYWxyZWFk
eSBjb21waWxlZC5cbiIpOwotI2VuZGlmCi0gICAgfQotICAgIGNvZGVCbG9jay0+aml0U29vbigp
OworICAgIGlmICghaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY29kZUJsb2NrLCBleGVjKSkK
KyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICAKICAgICBpZiAoa2luZCA9
PSBQcm9sb2d1ZSkKICAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKICAgICBBU1NFUlQoa2lu
ZCA9PSBBcml0eUNoZWNrKTsKQEAgLTMyOCwxMiArMzUxLDggQEAgTExJTlRfU0xPV19QQVRIX0RF
Q0wobG9vcF9vc3IpCiAgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CiAgICAgfQog
ICAgIAotICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkp
IHsKLSNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBkYXRhTG9nKCIgICAgQ29k
ZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOwotI2VuZGlmCi0gICAgfQotICAgIGNvZGVCbG9j
ay0+aml0U29vbigpOworICAgIGlmICghaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY29kZUJs
b2NrLCBleGVjKSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKICAgICAKICAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OwogICAgIApAQCAtMzU3LDE0ICszNzYsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNl
KQogICAgIGRhdGFMb2coIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9
ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKICNl
bmRpZgogICAgIAotICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKLSAgICAgICAgaWYgKCFjb2Rl
QmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgewotI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCi0gICAgICAgICAgICBkYXRhTG9nKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgY29kZUJsb2NrLT5qaXRT
b29uKCk7Ci0gICAgfSBlbHNlCisgICAgaWYgKHNob3VsZEpJVChleGVjKSkKKyAgICAgICAgaml0
Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY29kZUJsb2NrLCBleGVjKTsKKyAgICBlbHNlCiAgICAg
ICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CiAgICAgTExJTlRfRU5EX0lNUEwo
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCShyZXZpc2lvbiAxMDkyODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDEwICsxNzcsOSBAQCBKU09iamVj
dCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiB9CiAKICNpZiBFTkFCTEUoSklUKQot
dm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Citib29sIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKIHsKLSAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGll
ckpJVCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICByZXR1cm4g
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2pp
dENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCksIEpJVENvbXBpbGF0aW9uQ2Fu
RmFpbCk7CiB9CiAjZW5kaWYKIApAQCAtMzI3LDEwICszMjYsOSBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiB9CiAKICNpZiBFTkFCTEUoSklUKQotdm9pZCBQcm9n
cmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCitib29s
IFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
IHsKLSAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEs
IG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGll
ckpJVCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICByZXR1cm4g
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBt
X2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCksIEpJVENvbXBpbGF0aW9u
Q2FuRmFpbCk7CiB9CiAjZW5kaWYKIApAQCAtNDc3LDE2ICs0NzUsMTQgQEAgSlNPYmplY3QqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogfQogCiAjaWYgRU5BQkxFKEpJVCkKLXZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCitib29sIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
SklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxE
YXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgp
LCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOwogfQogCi12b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCitib29sIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiB7Ci0gICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGds
b2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3Qs
IG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRD
b2RlOjpib3R0b21UaWVySklUKCksIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiB9CiAjZW5kaWYK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gMTA5MjgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDYsNyArMzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRD
b2RlKEpTR2xvYmFsRGF0YSYpOwotICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAg
ICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQyMSw3ICs0MjEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
dm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7Ci0gICAgICAgIHZvaWQg
aml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVk
Qnl0ZWNvZGUoKQpAQCAtNTIwLDcgKzUyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNh
bGwoSlNHbG9iYWxEYXRhJik7Ci0gICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7
CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01
NDgsNyArNTQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFs
RGF0YSYpOwotICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsK
ICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApA
QCAtNTk3LDE0ICs1OTcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgYm9vbCBq
aXRDb21waWxlRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2Fs
bCkgewotICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBqaXRDb21waWxlRm9yQ2Fs
bChnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOwotICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKKyAg
ICAgICAgICAgIHJldHVybiBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAxMDkyODApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2LDcgKzQ2LDcgQEAgaW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0ds
b2JhbAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQotICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxv
Y2ssIGppdENvZGUsIGppdFR5cGUpOworICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUsIEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGppdFR5cGUpID8gSklUQ29tcGlsYXRpb25NdXN0U3VjY2VlZCA6IEpJVENvbXBp
bGF0aW9uQ2FuRmFpbCk7CiB9CiAKIGlubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4m
IGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRD
b2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtNjEs
NyArNjEsNyBAQCBpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oCiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShraW5kKTsKICNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCi0gICAg
cmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBl
KTsKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRh
LCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUs
IGppdFR5cGUsIEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpID8gSklUQ29tcGlsYXRp
b25NdXN0U3VjY2VlZCA6IEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129751</attachid>
            <date>2012-03-01 14:49:23 -0800</date>
            <delta_ts>2012-03-01 22:28:59 -0800</delta_ts>
            <desc>the patch for qt</desc>
            <filename>fixqt_patch_1.diff</filename>
            <type>text/plain</type>
            <size>1696</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5NDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDEyLTAzLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIEpJVCBzaG91bGQgbm90IGNyYXNoIHRoZSBlbnRpcmUgcHJvY2VzcyBqdXN0IGJlY2F1c2Ug
dGhlcmUgaXMgbm90IGVub3VnaCBleGVjdXRhYmxlCisgICAgICAgIG1lbW9yeSwgaWYgdGhlIExM
SW50IGlzIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5OTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAg
ICAgIAorICAgICAgICBGaXggZm9yIEFSTSwgU0g0LgorCisgICAgICAgICogYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaDoKKyAgICAgICAgKEpTQzo6QXNzZW1ibGVy
QnVmZmVyV2l0aENvbnN0YW50UG9vbDo6ZXhlY3V0YWJsZUNvcHkpOgorCiAyMDEyLTAzLTAxICBZ
dXFpYW5nIFhpYW4gIDx5dXFpYW5nLnhpYW5AaW50ZWwuY29tPgogCiAgICAgICAgIERGRyBsb2Nh
bCBDU0UgZm9yIGEgbm9kZSBjYW4gYmUgdGVybWluYXRlZCBlYXJsaWVyCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaAkocmV2aXNpb24gMTA5MzA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXJXaXRoQ29uc3RhbnRQb29sLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NSwxMCArMTk1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcHV0
SW50ZWdyYWxVbmNoZWNrZWQodmFsdWUubG93KTsKICAgICB9CiAKLSAgICBQYXNzUmVmUHRyPEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGU+IGV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgdm9pZCogb3duZXJVSUQpCisgICAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFu
ZGxlPiBleGVjdXRhYmxlQ29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG93bmVy
VUlELCBKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgewogICAgICAgICBmbHVzaENv
bnN0YW50UG9vbChmYWxzZSk7Ci0gICAgICAgIHJldHVybiBBc3NlbWJsZXJCdWZmZXI6OmV4ZWN1
dGFibGVDb3B5KGdsb2JhbERhdGEsIG93bmVyVUlEKTsKKyAgICAgICAgcmV0dXJuIEFzc2VtYmxl
ckJ1ZmZlcjo6ZXhlY3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQsIGVmZm9ydCk7CiAg
ICAgfQogCiAgICAgdm9pZCBwdXRTaG9ydFdpdGhDb25zdGFudEludCh1aW50MTZfdCBpbnNuLCB1
aW50MzJfdCBjb25zdGFudCwgYm9vbCBpc1JldXNhYmxlID0gZmFsc2UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>