<?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>120489</bug_id>
          
          <creation_ts>2013-08-29 13:56:40 -0700</creation_ts>
          <short_desc>Teach DFG::Worklist and its clients that it may be reused for different kinds of compilations</short_desc>
          <delta_ts>2013-08-29 16:44:50 -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>
          
          <blocked>112838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922663</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-29 13:56:40 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922665</commentid>
    <comment_count>1</comment_count>
      <attachid>210029</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-29 14:02:57 -0700</bug_when>
    <thetext>Created attachment 210029
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922667</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-29 14:04:57 -0700</bug_when>
    <thetext>Attachment 210029 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/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationKey.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationKey.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationMode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGPlan.h:58:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 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>922672</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-29 14:14:59 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 210029 [details] did not pass style-queue:
&gt; 
&gt; 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/Target.pri&apos;, u&apos;Source/JavaScriptCore/bytecode/CodeBlock.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationKey.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationKey.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCompilationMode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDriver.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWorklist.h&apos;, u&apos;Source/JavaScriptCore/jit/JITStubs.cpp&apos;]&quot; exit_code: 1
&gt; Source/JavaScriptCore/dfg/DFGPlan.h:58:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Fixed.

&gt; Total errors found: 1 in 18 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922704</commentid>
    <comment_count>4</comment_count>
      <attachid>210029</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-29 15:41:54 -0700</bug_when>
    <thetext>Comment on attachment 210029
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>922738</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-29 16:44:50 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/154854</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210029</attachid>
            <date>2013-08-29 14:02:57 -0700</date>
            <delta_ts>2013-08-29 15:41:54 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37409</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0ODQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDEzLTA4LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGVhY2ggREZHOjpXb3JrbGlzdCBhbmQgaXRzIGNsaWVudHMgdGhhdCBpdCBtYXkgYmUgcmV1c2Vk
IGZvciBkaWZmZXJlbnQga2luZHMgb2YgY29tcGlsYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0ODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIElmIHRoZSBiYXNlbGluZSBKSVQg
aGl0cyBhbiBPU1IgZW50cnkgdHJpZ2dlciBpbnRvIHRoZSBERkcgYW5kIHdlIGFscmVhZHkgaGF2
ZSBhCisgICAgICAgIERGRyBjb21waWxhdGlvbiBidXQgd2UndmUgYWxzbyBzdGFydGVkIG9uZSBv
ciBtb3JlIEZUTCBjb21waWxhdGlvbnMsIHRoZW4gd2UKKyAgICAgICAgc2hvdWxkbid0IGdldCBj
b25mdXNlZC4gUHJldmlvdXNseSB3ZSB3b3VsZCBoYXZlIGdvdHRlbiBjb25mdXNlZCBiZWNhdXNl
IHdlIHdvdWxkCisgICAgICAgIHNlZSBhbiBpbi1wcm9jZXNzIGRlZmVycmVkIGNvbXBpbGUgKHRo
ZSBGVEwgY29tcGlsZSkgYW5kIGFsc28gYW4gb3B0aW1pemVkCisgICAgICAgIHJlcGxhY2VtZW50
ICh0aGUgREZHIGNvZGUpLgorICAgICAgICAKKyAgICAgICAgSWYgdGhlIGJhc2VsaW5lIEpJVCBo
aXRzIGFuIE9TUiBlbnRyeSB0cmlnZ2VyIGludG8gdGhlIERGRyBhbmQgd2UgcHJldmlvdXNseQor
ICAgICAgICBkaWQgdHdvIHRoaW5ncyBpbiB0aGlzIG9yZGVyOiB0cmlnZ2VyZWQgYSB0aWVyLXVw
IGNvbXBpbGF0aW9uIGZyb20gdGhlIERGRyBpbnRvCisgICAgICAgIHRoZSBGVEwsIGFuZCB0aGVu
IGpldHRpc29uZWQgdGhlIERGRyBjb2RlIGJlY2F1c2UgaXQgZXhpdGVkIGEgYnVuY2gsIHRoZW4g
d2UKKyAgICAgICAgc2hvdWxkbid0IGJlIGNvbmZ1c2VkIGJ5IHRoZSBwcmVzZW5jZSBvZiBhbiBp
bi1wcm9jZXNzIGRlZmVycmVkIGNvbXBpbGUgKHRoZSBGVEwKKyAgICAgICAgY29tcGlsZSkuIFBy
ZXZpb3VzbHkgd2Ugd291bGQgaGF2ZSB3YWl0ZWQgZm9yIHRoYXQgY29tcGlsZSB0byBmaW5pc2g7
IGJ1dCB0aGUgbW9yZQorICAgICAgICBzZW5zaWJsZSB0aGluZyB0byBkbyBpcyB0byBsZXQgaXQg
Y29tcGxldGUgYW5kIHRoZW4gaW52YWxpZGF0ZSBpdCwgd2hpbGUgYXQgdGhlCisgICAgICAgIHNh
bWUgdGltZSBlbnF1ZXVlaW5nIGEgREZHIGNvbXBpbGUgdG8gY3JlYXRlIGEgbmV3LCBtb3JlIHZh
bGlkLCBERkcgY29kZSBibG9jay4KKyAgICAgICAgCisgICAgICAgIElmIHRoZSBERkcgSklUIGhp
dHMgYSBsb29wIE9TUiBlbnRyeSB0cmlnZ2VyIChpbnRvIHRoZSBGVEwpIGFuZCBpdCBoYXMgYWxy
ZWFkeQorICAgICAgICB0cmlnZ2VyZWQgYW4gRlRMIGNvbXBpbGUgZm9yIHJlcGxhY2VtZW50LCB0
aGVuIGl0IHNob3VsZCBmaXJlIG9mZiBhIHNlY29uZCBjb21waWxlCisgICAgICAgIGluc3RlYWQg
b2YgdGhpbmtpbmcgdGhhdCBpdCBjYW4gd2FpdCBmb3IgdGhhdCBvbmUgdG8gZmluaXNoLiBPciB2
aWNlLXZlcnNhLiBXZQorICAgICAgICBuZWVkIHRvIGFsbG93IGZvciB0d28gRlRMIGNvbXBpbGVz
IHRvIGJlIGVucXVldWVkIGF0IHRoZSBzYW1lIHRpbWUgKG9uZSBmb3IKKyAgICAgICAgcmVwbGFj
ZW1lbnQgYW5kIG9uZSBmb3IgT1NSIGVudHJ5IGluIGEgbG9vcCkuCisgICAgICAgIAorICAgICAg
ICBUaGVuIHRoZXJlJ3MgYWxzbyB0aGUgcHJvYmxlbSB0aGF0IERGRzo6Y29tcGlsZSgpIGlzIGFs
bW9zdCBjZXJ0YWlubHkgZ29pbmcgdG8gYmUKKyAgICAgICAgdGhlIGhvb2sgZm9yIHRyaWdnZXJp
bmcgYm90aCBERkcgY29tcGlsZXMgYW5kIHRoZSB0d28ga2luZHMgb2YgRlRMIGNvbXBpbGVzLCBi
dXQKKyAgICAgICAgcmlnaHQgbm93IHRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIGl0IHdoaWNoIG9u
ZSB5b3Ugd2FudC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZml4ZXMgdGhlc2UgcHJvYmxlbXMg
YW5kIHJlbW92ZXMgYSBidW5jaCBvZiBwb3RlbnRpYWwgY29uZnVzaW9uIGJ5IG1ha2luZyB0aGUK
KyAgICAgICAga2V5IGZvciBhIGNvbXBpbGUgaW4gdGhlIERGRzo6V29ya2xpc3QgYmUgYSBDb21w
aWxhdGlvbk1vZGUgKG9uZSBvZiBERkdNb2RlLAorICAgICAgICBGVExNb2RlLCBvciBGVExGb3JP
U1JFbnRyeU1vZGUpLiBUaGF0IG1vZGUgaXMgYWxzbyBwYXNzZWQgdG8gREZHOjpjb21waWxlKCku
CisgICAgICAgIAorICAgICAgICBBd2t3YXJkbHksIHRoaXMgc3RpbGwgbGVhdmVzIHVzIGluIGEg
bm8gREZHLT5GVEwgdGllci11cCBzaXR1YXRpb24gLSBzbworICAgICAgICBERkc6OmNvbXBpbGUo
KSBpcyBhbHdheXMgcGFzc2VkIERGR01vZGUgYW5kIHRoZW4gaXQgbWlnaHQgZG8gYW4gRlRMIGNv
bXBpbGUgaWYKKyAgICAgICAgcG9zc2libGUuIEZpeGluZyB0aGF0IGlzIGEgYmlnZ2VyIGlzc3Vl
IGZvciBhIGxhdGVyIGNoYW5nZXNldC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNoZWNr
SWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKToKKyAgICAgICAgKiBkZmcvREZHQ29tcGls
YXRpb25LZXkuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpDb21waWxhdGlvbktleTo6
ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0NvbXBpbGF0aW9uS2V5Lmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpERkc6OkNvbXBpbGF0aW9uS2V5OjpDb21waWxhdGlvbktleSk6CisgICAgICAgIChK
U0M6OkRGRzo6Q29tcGlsYXRpb25LZXk6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29tcGlsYXRpb25LZXk6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKEpTQzo6
REZHOjpDb21waWxhdGlvbktleTo6cHJvZmlsZWRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29tcGlsYXRpb25LZXk6Om1vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkNvbXBpbGF0aW9uS2V5
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6REZHOjpDb21waWxhdGlvbktleTo6aGFzaCk6
CisgICAgICAgIChKU0M6OkRGRzo6Q29tcGlsYXRpb25LZXlIYXNoOjpoYXNoKToKKyAgICAgICAg
KEpTQzo6REZHOjpDb21waWxhdGlvbktleUhhc2g6OmVxdWFsKToKKyAgICAgICAgKiBkZmcvREZH
Q29tcGlsYXRpb25Nb2RlLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwp
OgorICAgICAgICAqIGRmZy9ERkdDb21waWxhdGlvbk1vZGUuaDogQWRkZWQuCisgICAgICAgICog
ZGZnL0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAg
ICAgICAoSlNDOjpERkc6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuaDoKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6UGxhbik6
CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6a2V5KToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5o
OgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6V29y
a2xpc3Q6OmVucXVldWUpOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0Ojpjb21waWxhdGlv
blN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpXb3JrbGlzdDo6Y29tcGxldGVBbGxSZWFkeVBs
YW5zRm9yVk0pOgorICAgICAgICAoSlNDOjpERkc6OldvcmtsaXN0OjpydW5UaHJlYWQpOgorICAg
ICAgICAqIGRmZy9ERkdXb3JrbGlzdC5oOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6Cisg
ICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKwogMjAxMy0wOC0yOSAgSnVsaWVu
IEJyaWFuY2VhdSAgPGpicmlhbmNlQGNpc2NvLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIx
NTMyMjIsIDMyLWJpdCk6IE5VTEwgSlNWYWx1ZSgpIHNlZW4gd2hlbiBydW5uaW5nIHBlYWNla2Vl
cGVyIGJlbmNobWFyay4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE1NDgzNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNF
UwogICAgIGRmZy9ERkdDbG9iYmVyaXplLmNwcAogICAgIGRmZy9ERkdDb21tb24uY3BwCiAgICAg
ZGZnL0RGR0NvbW1vbkRhdGEuY3BwCisgICAgZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcAorICAg
IGRmZy9ERkdDb21waWxhdGlvbk1vZGUuY3BwCiAgICAgZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAogICAgIGRmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAogICAgIGRm
Zy9ERkdEQ0VQaGFzZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxNTQ4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjI2LDYgKzIyNiwxMCBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5jcHAgXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25LZXkuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21waWxhdGlvbk1vZGUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbXBpbGF0aW9uTW9kZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
b25zdGFudEZvbGRpbmdQaGFzZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ny
aXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCShyZXZpc2lvbiAxNTQ4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnBy
aQkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIGRm
Zy9ERkdDbG9iYmVyU2V0LmNwcCBcCiAgICAgZGZnL0RGR0NvbW1vbi5jcHAgXAogICAgIGRmZy9E
RkdDb21tb25EYXRhLmNwcCBcCisgICAgZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcCBcCisgICAg
ZGZnL0RGR0NvbXBpbGF0aW9uTW9kZS5jcHAgXAogICAgIGRmZy9ERkdDRkFQaGFzZS5jcHAgXAog
ICAgIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0NQU1Jl
dGhyZWFkaW5nUGhhc2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagkocmV2aXNpb24gMTU0ODM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDYgKzMyNSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZWJ1Z2dlclxE
ZWJ1Z2dlci5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGVidWdnZXJcRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZWJ1
Z2dlclxEZWJ1Z2dlckNhbGxGcmFtZS5jcHAiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cZGZnXERGR0NvbXBpbGF0aW9uS2V5LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHQ29tcGlsYXRpb25Nb2RlLmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxkZmdcREZHRHJpdmVyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxkaXNhc3NlbWJsZXJcRGlzYXNzZW1ibGVyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxoZWFwXEJsb2NrQWxsb2NhdG9yLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxoZWFwXENvbnNlcnZhdGl2ZVJvb3RzLmNwcCIgLz4NCkBAIC02NjMsNiArNjY2LDgg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRlYnVnZ2VyXERlYnVnZ2VyLmgiIC8+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGVidWdnZXJcRGVidWdnZXJBY3RpdmF0aW9uLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGVidWdnZXJcRGVidWdnZXJDYWxsRnJh
bWUuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ29tcGlsYXRpb25L
ZXkuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHQ29tcGlsYXRpb25N
b2RlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0RyaXZlci5oIiAv
Pg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdPU1JFbnRyeS5oIiAvPg0KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRpc2Fzc2VtYmxlclxEaXNhc3NlbWJsZXIuaCIgLz4N
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTU0ODM2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTAgQEAKIAkJMEYzNEIxNEMxNkQ0
M0UwRDAwMUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNEIxNEIxNkQ0M0UwQzAw
MUNEQTVBIC8qIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMzhCMDExMTdDRjA3ODAwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMEYxN0NGMDc3RjAwQjE0NEQzIC8qIExMSW50RW50cnlw
b2ludC5jcHAgKi87IH07CiAJCTBGMzhCMDEyMTdDRjA3ODMwMEIxNDREMyAvKiBMTEludEVudHJ5
cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MzhCMDEwMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjM4QjAxNzE3Q0ZFNzU1MDBC
MTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTMxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBp
bGF0aW9uS2V5LmNwcCAqLzsgfTsKKwkJMEYzOEIwMTgxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0Nv
bXBpbGF0aW9uS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjM4QjAxNDE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjM4QjAxOTE3
Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzhCMDE1MTdDRkU3NTUwMEIxNDREMyAv
KiBERkdDb21waWxhdGlvbk1vZGUuY3BwICovOyB9OworCQkwRjM4QjAxQTE3Q0ZFNzU1MDBCMTQ0
RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjM4QjAxNjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRp
b25Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGM0IzQTE3
MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgKi87IH07CiAJ
CTBGM0IzQTFCMTUzRTY4RjQwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMTgxNTNF
NjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYzQjNBMjcxNTQ0Qzk5NTAwM0VE
MEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMjQxNTQ0Qzk5MTAwM0VEMEZGIC8qIERG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9OwpAQCAtMTM0NSw2ICsxMzQ5LDEwIEBA
CiAJCTBGMzRCMTRCMTZENDNFMEMwMDFDREE1QSAvKiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVy
ZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9seW1vcnBoaWNBY2Nl
c3NTdHJ1Y3R1cmVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzhCMDBG
MTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRFbnRyeXBvaW50LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzhCMDEwMTdDRjA3N0YwMEIxNDREMyAv
KiBMTEludEVudHJ5cG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50Lmg7IHBh
dGggPSBsbGludC9MTEludEVudHJ5cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYzOEIwMTMxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbXBpbGF0aW9uS2V5LmNwcDsg
cGF0aCA9IGRmZy9ERkdDb21waWxhdGlvbktleS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMzhCMDE0MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbktleS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb21waWxhdGlvbktleS5oOyBwYXRo
ID0gZGZnL0RGR0NvbXBpbGF0aW9uS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzhCMDE1MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29tcGlsYXRpb25Nb2RlLmNwcDsg
cGF0aCA9IGRmZy9ERkdDb21waWxhdGlvbk1vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjM4QjAxNjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NvbXBpbGF0aW9uTW9kZS5oOyBw
YXRoID0gZGZnL0RGR0NvbXBpbGF0aW9uTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjNCM0ExNzE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMTgxNTNFNjhFRjAwM0VEMEZGIC8qIERG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzQjNBMjQxNTQ0Qzk5MTAw
M0VEMEZGIC8qIERGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zMzM2LDYgKzMzNDQsMTAgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3
IC8qIGRmZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEYzOEIwMTMxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAqLywKKwkJ
CQkwRjM4QjAxNDE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCAqLywKKwkJ
CQkwRjM4QjAxNTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCAqLywK
KwkJCQkwRjM4QjAxNjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmggKi8s
CiAJCQkJQTc3QTQyMzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5jcHAgKi8s
CiAJCQkJQTc3QTQyMzcxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oICovLAog
CQkJCUE3MDREOEZFMTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmgg
Ki8sCkBAIC00MDc2LDYgKzQwODgsNyBAQAogCQkJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAv
KiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZC
OTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0
MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzOEIw
MUExN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFCMDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYwMTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MjMzLDYgKzQyNDYsNyBAQAogCQkJCTBGRjcy
OUJGMTY2QUQzNjAwMDBGNUJBMyAvKiBQcm9maWxlck9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGNzI5QzAxNjZBRDM2MDAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjEwNThDMTY3NTQ4MzMwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4
aXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMzhCMDE4MTdDRkU3NTUwMEIxNDREMyAvKiBERkdD
b21waWxhdGlvbktleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTA1OEUxNjc1NDgzQTAwRjhB
QjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTM5MTJD
MTY3NzFDM0QwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0ZCNjEwMDEwNDBDMzhCMDAxN0EyODYgLyogUHJvcGVydHlEZXNjcmlwdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ3MjUsNiArNDczOSw3IEBACiAJCQkJQTc3RjE4MjExNjQw
ODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0
NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29kZVByb2Zp
bGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5NzEgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQ0MjE2
Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00Nzc0LDYg
KzQ3ODksNyBAQAogCQkJCUMyQzBGN0NEMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJh
bnNpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFODUzNEIxNzIzQ0RBNTAwQjYxOEY1
IC8qIERGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjk4MUZE
ODE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMzhCMDE3MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbktl
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMjk4MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZH
RGVzaXJlZFdyaXRlQmFycmllcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NjQxNTkx
QTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
QzNCQTI5ODE3QzAzOTU2MDA3MkREQzkgLyogSlNQcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTU0ODM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5ODksMTAgKzI5ODks
MTIgQEAgaW50MzJfdCBDb2RlQmxvY2s6OmNvdW50ZXJWYWx1ZUZvck9wdGltaQogYm9vbCBDb2Rl
QmxvY2s6OmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkKIHsKICNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBpZiAobV92bS0+d29ya2xpc3QKLSAgICAgICAgJiYgbV92bS0+d29y
a2xpc3QtPmNvbXBpbGF0aW9uU3RhdGUodGhpcykgPT0gREZHOjpXb3JrbGlzdDo6Q29tcGlsZWQp
IHsKLSAgICAgICAgb3B0aW1pemVOZXh0SW52b2NhdGlvbigpOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBpZiAoREZHOjpXb3JrbGlzdCogd29ya2xpc3QgPSBtX3ZtLT53b3JrbGlzdC5nZXQo
KSkgeworICAgICAgICBpZiAod29ya2xpc3QtPmNvbXBpbGF0aW9uU3RhdGUoREZHOjpDb21waWxh
dGlvbktleSh0aGlzLCBERkc6OkRGR01vZGUpKQorICAgICAgICAgICAgPT0gREZHOjpXb3JrbGlz
dDo6Q29tcGlsZWQpIHsKKyAgICAgICAgICAgIG9wdGltaXplTmV4dEludm9jYXRpb24oKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRp
b25LZXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkRGR0NvbXBpbGF0aW9uS2V5LmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit2b2lkIENvbXBpbGF0aW9uS2V5Ojpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCEqdGhpcykgeworICAgICAg
ICBvdXQucHJpbnQoIjxlbXB0eT4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBvdXQu
cHJpbnQoIihDb21waWxlIG9mICIsICptX3Byb2ZpbGVkQmxvY2ssICIgd2l0aCAiLCBtX21vZGUs
ICIpIik7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ29tcGlsYXRpb25LZXlfaAorI2RlZmluZSBERkdD
b21waWxhdGlvbktleV9oCisKKyNpbmNsdWRlICJERkdDb21waWxhdGlvbk1vZGUuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ29kZUJsb2Nr
OworCituYW1lc3BhY2UgREZHIHsKKworY2xhc3MgQ29tcGlsYXRpb25LZXkgeworcHVibGljOgor
ICAgIENvbXBpbGF0aW9uS2V5KCkKKyAgICAgICAgOiBtX3Byb2ZpbGVkQmxvY2soMCkKKyAgICAg
ICAgLCBtX21vZGUoSW52YWxpZENvbXBpbGF0aW9uTW9kZSkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIENvbXBpbGF0aW9uS2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKKyAgICAg
ICAgOiBtX3Byb2ZpbGVkQmxvY2soMCkKKyAgICAgICAgLCBtX21vZGUoREZHTW9kZSkKKyAgICB7
CisgICAgfQorICAgIAorICAgIENvbXBpbGF0aW9uS2V5KENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgQ29tcGlsYXRpb25Nb2RlIG1vZGUpCisgICAgICAgIDogbV9wcm9maWxlZEJsb2NrKHByb2Zp
bGVkQmxvY2spCisgICAgICAgICwgbV9tb2RlKG1vZGUpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fcHJvZmls
ZWRCbG9jayAmJiBtX21vZGUgPT0gSW52YWxpZENvbXBpbGF0aW9uTW9kZTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gIW1fcHJvZmlsZWRCbG9jayAmJiBtX21vZGUgIT0gSW52YWxpZENvbXBpbGF0aW9u
TW9kZTsKKyAgICB9CisgICAgCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrKCkgY29uc3Qg
eyByZXR1cm4gbV9wcm9maWxlZEJsb2NrOyB9CisgICAgQ29tcGlsYXRpb25Nb2RlIG1vZGUoKSBj
b25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q29tcGlsYXRpb25LZXkmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJv
ZmlsZWRCbG9jayA9PSBvdGhlci5tX3Byb2ZpbGVkQmxvY2sKKyAgICAgICAgICAgICYmIG1fbW9k
ZSA9PSBvdGhlci5tX21vZGU7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2goKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cGFpckludEhhc2goV1RGOjpQdHJIYXNoPENv
ZGVCbG9jayo+OjpoYXNoKG1fcHJvZmlsZWRCbG9jayksIG1fbW9kZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIENvZGVC
bG9jayogbV9wcm9maWxlZEJsb2NrOworICAgIENvbXBpbGF0aW9uTW9kZSBtX21vZGU7Cit9Owor
CitzdHJ1Y3QgQ29tcGlsYXRpb25LZXlIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBDb21waWxhdGlvbktleSYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgQ29tcGlsYXRpb25LZXkmIGEsIGNvbnN0IENvbXBpbGF0aW9u
S2V5JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9D
b21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
RGVmYXVsdEhhc2g7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkRGRzo6Q29t
cGlsYXRpb25LZXk+IHsKKyAgICB0eXBlZGVmIEpTQzo6REZHOjpDb21waWxhdGlvbktleUhhc2gg
SGFzaDsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBIYXNoVHJhaXRzOwordGVt
cGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OkRGRzo6Q29tcGlsYXRpb25LZXk+IDogU2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPEpTQzo6REZHOjpDb21waWxhdGlvbktleT4geyB9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIERGR0NvbXBpbGF0aW9uS2V5X2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbk1vZGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25Nb2RlLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25N
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJERkdDb21waWxhdGlvbk1vZGUuaCIKKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M6OkRGRzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQs
IENvbXBpbGF0aW9uTW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2Ug
SW52YWxpZENvbXBpbGF0aW9uTW9kZToKKyAgICAgICAgb3V0LnByaW50KCJJbnZhbGlkQ29tcGls
YXRpb25Nb2RlIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIERGR01vZGU6CisgICAgICAg
IG91dC5wcmludCgiREZHTW9kZSIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBGVExNb2Rl
OgorICAgICAgICBvdXQucHJpbnQoIkZUTE1vZGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgRlRMRm9yT1NSRW50cnlNb2RlOgorICAgICAgICBvdXQucHJpbnQoIkZUTEZvck9TUkVudHJ5
TW9kZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25Nb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbk1vZGUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25Nb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIERGR0NvbXBpbGF0aW9uTW9kZV9oCisjZGVmaW5lIERGR0Nv
bXBpbGF0aW9uTW9kZV9oCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitlbnVtIENvbXBpbGF0aW9uTW9kZSB7CisgICAg
SW52YWxpZENvbXBpbGF0aW9uTW9kZSwKKyAgICBERkdNb2RlLAorICAgIEZUTE1vZGUsCisgICAg
RlRMRm9yT1NSRW50cnlNb2RlCit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKK25h
bWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkRG
Rzo6Q29tcGlsYXRpb25Nb2RlKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKyNlbmRpZiAvLyBE
RkdDb21waWxhdGlvbk1vZGVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
cml2ZXIuY3BwCShyZXZpc2lvbiAxNTQ4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDEwIEBAIHVuc2lnbmVk
IGdldE51bUNvbXBpbGF0aW9ucygpCiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLXN0YXRpYyBD
b21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbChFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIFBhc3NSZWZQdHI8RGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjYWxsYmFjaywgV29ya2xpc3QqIHdvcmtsaXN0KQor
c3RhdGljIENvbXBpbGF0aW9uUmVzdWx0IGNvbXBpbGVJbXBsKAorICAgIEV4ZWNTdGF0ZSogZXhl
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvbXBpbGF0aW9uTW9kZSBtb2RlLAorICAgIHVuc2ln
bmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2s+IGNhbGxiYWNrLAorICAgIFdvcmtsaXN0KiB3b3JrbGlzdCkKIHsKICAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENvbXBpbGF0aW9uIChEcml2ZXIpIik7CiAg
ICAgCkBAIC05OCw3ICsxMDEsNyBAQCBzdGF0aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUlt
cGwoRXhlCiAgICAgZWxzZQogICAgICAgICBudW1WYXJzV2l0aFZhbHVlcyA9IDA7CiAgICAgUmVm
UHRyPFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKLSAgICAgICAgbmV3IFBsYW4oY29kZUJsb2NrLCBv
c3JFbnRyeUJ5dGVjb2RlSW5kZXgsIG51bVZhcnNXaXRoVmFsdWVzKSk7CisgICAgICAgIG5ldyBQ
bGFuKGNvZGVCbG9jaywgbW9kZSwgb3NyRW50cnlCeXRlY29kZUluZGV4LCBudW1WYXJzV2l0aFZh
bHVlcykpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGxhbi0+bXVzdEhhbmRsZVZhbHVl
cy5zaXplKCk7ICsraSkgewogICAgICAgICBpbnQgb3BlcmFuZCA9IHBsYW4tPm11c3RIYW5kbGVW
YWx1ZXMub3BlcmFuZEZvckluZGV4KGkpOwogICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQo
b3BlcmFuZCkKQEAgLTEyNiwxNiArMTI5LDIyIEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBj
b21waWxlSW1wbChFeGUKICAgICByZXR1cm4gcGxhbi0+ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5n
Q2FsbGJhY2soKTsKIH0KICNlbHNlIC8vIEVOQUJMRShERkdfSklUKQotc3RhdGljIENvbXBpbGF0
aW9uUmVzdWx0IGNvbXBpbGVJbXBsKEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkLCBQ
YXNzUmVmUHRyPERlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjaz4sIFdvcmtsaXN0KikKK3N0YXRp
YyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1wbCgKKyAgICBFeGVjU3RhdGUqLCBDb2RlQmxv
Y2sqLCBDb21waWxhdGlvbk1vZGUsIHVuc2lnbmVkLAorICAgIFBhc3NSZWZQdHI8RGVmZXJyZWRD
b21waWxhdGlvbkNhbGxiYWNrPiwgV29ya2xpc3QqKQogewogICAgIHJldHVybiBDb21waWxhdGlv
bkZhaWxlZDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotQ29tcGlsYXRpb25SZXN1
bHQgY29tcGlsZShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNh
bGxiYWNrPiBwYXNzZWRDYWxsYmFjaywgV29ya2xpc3QqIHdvcmtsaXN0KQorQ29tcGlsYXRpb25S
ZXN1bHQgY29tcGlsZSgKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBDb21waWxhdGlvbk1vZGUgbW9kZSwKKyAgICB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsIFBhc3NSZWZQdHI8RGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBwYXNzZWRDYWxsYmFj
aywKKyAgICBXb3JrbGlzdCogd29ya2xpc3QpCiB7CiAgICAgUmVmUHRyPERlZmVycmVkQ29tcGls
YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBwYXNzZWRDYWxsYmFjazsKLSAgICBDb21waWxhdGlv
blJlc3VsdCByZXN1bHQgPSBjb21waWxlSW1wbChleGVjLCBjb2RlQmxvY2ssIG9zckVudHJ5Qnl0
ZWNvZGVJbmRleCwgY2FsbGJhY2ssIHdvcmtsaXN0KTsKKyAgICBDb21waWxhdGlvblJlc3VsdCBy
ZXN1bHQgPSBjb21waWxlSW1wbCgKKyAgICAgICAgZXhlYywgY29kZUJsb2NrLCBtb2RlLCBvc3JF
bnRyeUJ5dGVjb2RlSW5kZXgsIGNhbGxiYWNrLCB3b3JrbGlzdCk7CiAgICAgaWYgKHJlc3VsdCAh
PSBDb21waWxhdGlvbkRlZmVycmVkKQogICAgICAgICBjYWxsYmFjay0+Y29tcGlsYXRpb25EaWRD
b21wbGV0ZShjb2RlQmxvY2ssIHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAkocmV2aXNpb24gMTU0ODM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBERkdEcml2ZXJfaAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiREZHQ29tcGlsYXRpb25Nb2RlLmgiCiAjaW5jbHVkZSAiREZHUGxhbi5oIgog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC01MSw3ICs1Miw3IEBAIGlubGluZSBDb21w
aWxhdGlvblJlc3VsdCB0cnlDb21waWxlKEV4ZWMKIAogLy8gSWYgdGhlIHdvcmtsaXN0IGlzIG5v
bi1udWxsLCB3ZSBkbyBhIGNvbmN1cnJlbnQgY29tcGlsZS4gT3RoZXJ3aXNlIHdlIGRvIGEgc3lu
Y2hyb25vdXMKIC8vIGNvbXBpbGUuIEV2ZW4gaWYgd2UgZG8gYSBzeW5jaHJvbm91cyBjb21waWxl
LCB3ZSBjYWxsIHRoZSBjYWxsYmFjayB3aXRoIHRoZSByZXN1bHQuCi1Db21waWxhdGlvblJlc3Vs
dCBjb21waWxlKEV4ZWNTdGF0ZSosIENvZGVCbG9jayosIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNv
ZGVJbmRleCwgUGFzc1JlZlB0cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LCBXb3JrbGlz
dCopOworQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBD
b21waWxhdGlvbk1vZGUsIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgUGFzc1JlZlB0
cjxEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2s+LCBXb3JrbGlzdCopOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cAkocmV2aXNpb24gMTU0ODM2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTAgKzgwLDExIEBAIHN0YXRpYyB2b2lkIGR1bXBB
bmRWZXJpZnlHcmFwaChHcmFwaCYgZ3IKIH0KIAogUGxhbjo6UGxhbigKLSAgICBQYXNzUmVmUHRy
PENvZGVCbG9jaz4gcGFzc2VkQ29kZUJsb2NrLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5k
ZXgsCi0gICAgdW5zaWduZWQgbnVtVmFyc1dpdGhWYWx1ZXMpCisgICAgUGFzc1JlZlB0cjxDb2Rl
QmxvY2s+IHBhc3NlZENvZGVCbG9jaywgQ29tcGlsYXRpb25Nb2RlIG1vZGUsCisgICAgdW5zaWdu
ZWQgb3NyRW50cnlCeXRlY29kZUluZGV4LCB1bnNpZ25lZCBudW1WYXJzV2l0aFZhbHVlcykKICAg
ICA6IHZtKCpwYXNzZWRDb2RlQmxvY2stPnZtKCkpCiAgICAgLCBjb2RlQmxvY2socGFzc2VkQ29k
ZUJsb2NrKQorICAgICwgbW9kZShtb2RlKQogICAgICwgb3NyRW50cnlCeXRlY29kZUluZGV4KG9z
ckVudHJ5Qnl0ZWNvZGVJbmRleCkKICAgICAsIG51bVZhcnNXaXRoVmFsdWVzKG51bVZhcnNXaXRo
VmFsdWVzKQogICAgICwgbXVzdEhhbmRsZVZhbHVlcyhjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgbnVtVmFyc1dpdGhWYWx1ZXMpCkBAIC0zMTAsOSArMzExLDkgQEAgdm9pZCBQbGFuOjpmaW5h
bGl6ZUFuZE5vdGlmeUNhbGxiYWNrKCkKICAgICBjYWxsYmFjay0+Y29tcGlsYXRpb25EaWRDb21w
bGV0ZShjb2RlQmxvY2suZ2V0KCksIGZpbmFsaXplV2l0aG91dE5vdGlmeWluZ0NhbGxiYWNrKCkp
OwogfQogCi1Db2RlQmxvY2sqIFBsYW46OmtleSgpCitDb21waWxhdGlvbktleSBQbGFuOjprZXko
KQogewotICAgIHJldHVybiBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7CisgICAgcmV0dXJuIENv
bXBpbGF0aW9uS2V5KGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSwgbW9kZSk7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5o
CShyZXZpc2lvbiAxNTQ4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogCiAjaW5jbHVkZSAiQ29tcGlsYXRpb25SZXN1bHQuaCIKKyNpbmNsdWRlICJERkdDb21w
aWxhdGlvbktleS5oIgorI2luY2x1ZGUgIkRGR0NvbXBpbGF0aW9uTW9kZS5oIgogI2luY2x1ZGUg
IkRGR0Rlc2lyZWRJZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkRGR0Rlc2lyZWRTdHJ1Y3R1cmVD
aGFpbnMuaCIKICNpbmNsdWRlICJERkdEZXNpcmVkVHJhbnNpdGlvbnMuaCIKQEAgLTUzLDcgKzU1
LDggQEAgY2xhc3MgTG9uZ0xpdmVkU3RhdGU7CiAKIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFBsYW4+IHsKICAgICBQbGFuKAotICAgICAgICBQYXNzUmVmUHRyPENv
ZGVCbG9jaz4sIHVuc2lnbmVkIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgdW5zaWduZWQgbnVtVmFy
c1dpdGhWYWx1ZXMpOworICAgICAgICBQYXNzUmVmUHRyPENvZGVCbG9jaz4sIENvbXBpbGF0aW9u
TW9kZSBtb2RlLCB1bnNpZ25lZCBvc3JFbnRyeUJ5dGVjb2RlSW5kZXgsCisgICAgICAgIHVuc2ln
bmVkIG51bVZhcnNXaXRoVmFsdWVzKTsKICAgICB+UGxhbigpOwogICAgIAogICAgIHZvaWQgY29t
cGlsZUluVGhyZWFkKExvbmdMaXZlZFN0YXRlJik7CkBAIC02MywxMCArNjYsMTEgQEAgc3RydWN0
IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIAogICAgIHZvaWQgbm90aWZ5
UmVhZHkoKTsKICAgICAKLSAgICBDb2RlQmxvY2sqIGtleSgpOworICAgIENvbXBpbGF0aW9uS2V5
IGtleSgpOwogICAgIAogICAgIFZNJiB2bTsKICAgICBSZWZQdHI8Q29kZUJsb2NrPiBjb2RlQmxv
Y2s7CisgICAgQ29tcGlsYXRpb25Nb2RlIG1vZGU7CiAgICAgY29uc3QgdW5zaWduZWQgb3NyRW50
cnlCeXRlY29kZUluZGV4OwogICAgIGNvbnN0IHVuc2lnbmVkIG51bVZhcnNXaXRoVmFsdWVzOwog
ICAgIE9wZXJhbmRzPEpTVmFsdWU+IG11c3RIYW5kbGVWYWx1ZXM7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMTU0ODM2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDcgKzcyLDcgQEAgdm9pZCBXb3JrbGlzdDo6ZW5xdWV1ZShQYXNzUmVmUHRyPFBsYW4+IAog
ICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgIGlmIChPcHRpb25zOjp2ZXJib3Nl
Q29tcGlsYXRpb25RdWV1ZSgpKSB7CiAgICAgICAgIGR1bXAobG9ja2VyLCBXVEY6OmRhdGFGaWxl
KCkpOwotICAgICAgICBkYXRhTG9nKCI6IEVucXVldWVpbmcgcGxhbiB0byBvcHRpbWl6ZSAiLCAq
cGxhbi0+a2V5KCksICJcbiIpOworICAgICAgICBkYXRhTG9nKCI6IEVucXVldWVpbmcgcGxhbiB0
byBvcHRpbWl6ZSAiLCBwbGFuLT5rZXkoKSwgIlxuIik7CiAgICAgfQogICAgIEFTU0VSVChtX3Bs
YW5zLmZpbmQocGxhbi0+a2V5KCkpID09IG1fcGxhbnMuZW5kKCkpOwogICAgIG1fcGxhbnMuYWRk
KHBsYW4tPmtleSgpLCBwbGFuKTsKQEAgLTgwLDEwICs4MCwxMCBAQCB2b2lkIFdvcmtsaXN0Ojpl
bnF1ZXVlKFBhc3NSZWZQdHI8UGxhbj4gCiAgICAgbV9wbGFuRW5xdWV1ZWQuc2lnbmFsKCk7CiB9
CiAKLVdvcmtsaXN0OjpTdGF0ZSBXb3JrbGlzdDo6Y29tcGlsYXRpb25TdGF0ZShDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2spCitXb3JrbGlzdDo6U3RhdGUgV29ya2xpc3Q6OmNvbXBpbGF0aW9uU3Rh
dGUoQ29tcGlsYXRpb25LZXkga2V5KQogewogICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2sp
OwotICAgIFBsYW5NYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BsYW5zLmZpbmQocHJvZmlsZWRCbG9j
ayk7CisgICAgUGxhbk1hcDo6aXRlcmF0b3IgaXRlciA9IG1fcGxhbnMuZmluZChrZXkpOwogICAg
IGlmIChpdGVyID09IG1fcGxhbnMuZW5kKCkpCiAgICAgICAgIHJldHVybiBOb3RLbm93bjsKICAg
ICByZXR1cm4gaXRlci0+dmFsdWUtPmlzQ29tcGlsZWQgPyBDb21waWxlZCA6IENvbXBpbGluZzsK
QEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVBbGxSZWFkeVBsYW5zRm9y
Vk0oCiAgICAgcmVtb3ZlQWxsUmVhZHlQbGFuc0ZvclZNKHZtLCBteVJlYWR5UGxhbnMpOwogfQog
Ci1Xb3JrbGlzdDo6U3RhdGUgV29ya2xpc3Q6OmNvbXBsZXRlQWxsUmVhZHlQbGFuc0ZvclZNKFZN
JiB2bSwgQ29kZUJsb2NrKiByZXF1ZXN0ZWRQcm9maWxlZEJsb2NrKQorV29ya2xpc3Q6OlN0YXRl
IFdvcmtsaXN0Ojpjb21wbGV0ZUFsbFJlYWR5UGxhbnNGb3JWTShWTSYgdm0sIENvbXBpbGF0aW9u
S2V5IHJlcXVlc3RlZEtleSkKIHsKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CiAgICAg
VmVjdG9yPFJlZlB0cjxQbGFuPiwgOD4gbXlSZWFkeVBsYW5zOwpAQCAtMTU4LDIyICsxNTgsMjIg
QEAgV29ya2xpc3Q6OlN0YXRlIFdvcmtsaXN0Ojpjb21wbGV0ZUFsbFJlYQogCiAgICAgd2hpbGUg
KCFteVJlYWR5UGxhbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIFJlZlB0cjxQbGFuPiBwbGFuID0g
bXlSZWFkeVBsYW5zLnRha2VMYXN0KCk7Ci0gICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
ayA9IHBsYW4tPmtleSgpOworICAgICAgICBDb21waWxhdGlvbktleSBjdXJyZW50S2V5ID0gcGxh
bi0+a2V5KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0
aW9uUXVldWUoKSkKLSAgICAgICAgICAgIGRhdGFMb2coKnRoaXMsICI6IENvbXBsZXRpbmcgIiwg
KnByb2ZpbGVkQmxvY2ssICJcbiIpOworICAgICAgICAgICAgZGF0YUxvZygqdGhpcywgIjogQ29t
cGxldGluZyAiLCBjdXJyZW50S2V5LCAiXG4iKTsKICAgICAgICAgCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHBsYW4tPmlzQ29tcGlsZWQpOwogICAgICAgICAKICAgICAgICAgcGxhbi0+ZmluYWxp
emVBbmROb3RpZnlDYWxsYmFjaygpOwogICAgICAgICAKLSAgICAgICAgaWYgKHByb2ZpbGVkQmxv
Y2sgPT0gcmVxdWVzdGVkUHJvZmlsZWRCbG9jaykKKyAgICAgICAgaWYgKGN1cnJlbnRLZXkgPT0g
cmVxdWVzdGVkS2V5KQogICAgICAgICAgICAgcmVzdWx0aW5nU3RhdGUgPSBDb21waWxlZDsKICAg
ICB9CiAgICAgCi0gICAgaWYgKHJlcXVlc3RlZFByb2ZpbGVkQmxvY2sgJiYgcmVzdWx0aW5nU3Rh
dGUgPT0gTm90S25vd24pIHsKKyAgICBpZiAoISFyZXF1ZXN0ZWRLZXkgJiYgcmVzdWx0aW5nU3Rh
dGUgPT0gTm90S25vd24pIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0g
ICAgICAgIGlmIChtX3BsYW5zLmNvbnRhaW5zKHJlcXVlc3RlZFByb2ZpbGVkQmxvY2spKQorICAg
ICAgICBpZiAobV9wbGFucy5jb250YWlucyhyZXF1ZXN0ZWRLZXkpKQogICAgICAgICAgICAgcmVz
dWx0aW5nU3RhdGUgPSBDb21waWxpbmc7CiAgICAgfQogICAgIApAQCAtMjM0LDcgKzIzNCw3IEBA
IHZvaWQgV29ya2xpc3Q6OnJ1blRocmVhZCgpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSgpKQotICAgICAgICAgICAgZGF0
YUxvZygqdGhpcywgIjogQ29tcGlsaW5nICIsICpwbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNs
eVxuIik7CisgICAgICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBDb21waWxpbmcgIiwgcGxhbi0+
a2V5KCksICIgYXN5bmNocm9ub3VzbHlcbiIpOwogICAgICAgICAKICAgICAgICAgcGxhbi0+Y29t
cGlsZUluVGhyZWFkKGxvbmdMaXZlZFN0YXRlKTsKICAgICAgICAgCkBAIC0yNDQsNyArMjQ0LDcg
QEAgdm9pZCBXb3JrbGlzdDo6cnVuVGhyZWFkKCkKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvblF1ZXVlKCkpIHsKICAgICAgICAgICAgICAg
ICBkdW1wKGxvY2tlciwgV1RGOjpkYXRhRmlsZSgpKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9n
KCI6IENvbXBpbGVkICIsICpwbGFuLT5rZXkoKSwgIiBhc3luY2hyb25vdXNseVxuIik7CisgICAg
ICAgICAgICAgICAgZGF0YUxvZygiOiBDb21waWxlZCAiLCBwbGFuLT5rZXkoKSwgIiBhc3luY2hy
b25vdXNseVxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1f
cmVhZHlQbGFucy5hcHBlbmQocGxhbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dvcmtsaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5oCShyZXZpc2lvbiAxNTQ4MzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEwICs1NSwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjb21wbGV0ZUFsbFBsYW5zRm9yVk0oVk0mKTsKICAgICAKICAgICB2b2lk
IHdhaXRVbnRpbEFsbFBsYW5zRm9yVk1BcmVSZWFkeShWTSYpOwotICAgIFN0YXRlIGNvbXBsZXRl
QWxsUmVhZHlQbGFuc0ZvclZNKFZNJiwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gMCk7Cisg
ICAgU3RhdGUgY29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0oVk0mLCBDb21waWxhdGlvbktleSA9
IENvbXBpbGF0aW9uS2V5KCkpOwogICAgIHZvaWQgcmVtb3ZlQWxsUmVhZHlQbGFuc0ZvclZNKFZN
Jik7CiAgICAgCi0gICAgU3RhdGUgY29tcGlsYXRpb25TdGF0ZShDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2spOworICAgIFN0YXRlIGNvbXBpbGF0aW9uU3RhdGUoQ29tcGlsYXRpb25LZXkpOwogICAg
IAogICAgIHNpemVfdCBxdWV1ZUxlbmd0aCgpOwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIC8vIGlzIHBhcnRpY3VsYXJs
eSBncmVhdCBmb3IgdGhlIGN0aV9vcHRpbWl6ZSBPU1Igc2xvdyBwYXRoLCB3aGljaCB3YW50cwog
ICAgIC8vIHRvIGtub3c6IGRpZCBJIGdldCBoZXJlIGJlY2F1c2UgYSBiZXR0ZXIgdmVyc2lvbiBv
ZiBtZSBqdXN0IGdvdAogICAgIC8vIGNvbXBpbGVkPwotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8Q29kZUJsb2NrPiwgUmVmUHRyPFBsYW4+ID4gUGxhbk1hcDsKKyAgICB0eXBlZGVmIEhhc2hN
YXA8Q29tcGlsYXRpb25LZXksIFJlZlB0cjxQbGFuPiA+IFBsYW5NYXA7CiAgICAgUGxhbk1hcCBt
X3BsYW5zOwogICAgIAogICAgIC8vIFVzZWQgdG8gcXVpY2tseSBmaW5kIHdoaWNoIHBsYW5zIGhh
dmUgYmVlbiBjb21waWxlZCBhbmQgYXJlIHJlYWR5IHRvCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTU0ODM2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJDb2RlUHJvZmlsaW5nLmgiCiAjaW5j
bHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiREZHQ29tcGlsYXRpb25Nb2RlLmgi
CiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiREZHT1NSRW50cnkuaCIKICNpbmNs
dWRlICJERkdXb3JrbGlzdC5oIgpAQCAtOTQ4LDcgKzk0OSw3IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQsIG9wdGltaXplKQogICAgIC8vIHJlcGxhY2VtZW50LgogICAgIEFTU0VSVCgKICAg
ICAgICAgIXZtLndvcmtsaXN0Ci0gICAgICAgIHx8ICEodm0ud29ya2xpc3QtPmNvbXBpbGF0aW9u
U3RhdGUoY29kZUJsb2NrKSAhPSBERkc6OldvcmtsaXN0OjpOb3RLbm93bgorICAgICAgICB8fCAh
KHZtLndvcmtsaXN0LT5jb21waWxhdGlvblN0YXRlKERGRzo6Q29tcGlsYXRpb25LZXkoY29kZUJs
b2NrLCBERkc6OkRGR01vZGUpKSAhPSBERkc6OldvcmtsaXN0OjpOb3RLbm93bgogICAgICAgICAg
ICAgICYmIGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkpOwogICAgIAogICAg
IERGRzo6V29ya2xpc3Q6OlN0YXRlIHdvcmtsaXN0U3RhdGU7CkBAIC05NzIsOCArOTczLDggQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemUpCiAgICAgICAgIC8vIHBvc3NpYmxl
IGluIG9yZGVyIHRvIG1pbmltaXplIHRoZSBjaGFuY2VzIG9mIHVzIGV4ZWN1dGluZyBiYXNlbGlu
ZSBjb2RlIGFmdGVyCiAgICAgICAgIC8vIG9wdGltaXplZCBjb2RlIGlzIGFscmVhZHkgYXZhaWxh
YmxlLgogICAgICAgICAKLSAgICAgICAgd29ya2xpc3RTdGF0ZSA9Ci0gICAgICAgICAgICB2bS53
b3JrbGlzdC0+Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9yVk0odm0sIGNvZGVCbG9jayk7CisgICAg
ICAgIHdvcmtsaXN0U3RhdGUgPSB2bS53b3JrbGlzdC0+Y29tcGxldGVBbGxSZWFkeVBsYW5zRm9y
Vk0oCisgICAgICAgICAgICB2bSwgREZHOjpDb21waWxhdGlvbktleShjb2RlQmxvY2ssIERGRzo6
REZHTW9kZSkpOwogICAgIH0gZWxzZQogICAgICAgICB3b3JrbGlzdFN0YXRlID0gREZHOjpXb3Jr
bGlzdDo6Tm90S25vd247CiAgICAgCkBAIC0xMDQzLDcgKzEwNDQsOCBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcHRpbWl6ZSkKICAgICAgICAgICAgIHZtLndvcmtsaXN0ID0gREZHOjpn
bG9iYWxXb3JrbGlzdCgpOwogICAgICAgICAKICAgICAgICAgQ29tcGlsYXRpb25SZXN1bHQgcmVz
dWx0ID0gREZHOjpjb21waWxlKAotICAgICAgICAgICAgY2FsbEZyYW1lLCBuZXdDb2RlQmxvY2su
Z2V0KCksIGJ5dGVjb2RlSW5kZXgsIGNhbGxiYWNrLCB2bS53b3JrbGlzdC5nZXQoKSk7CisgICAg
ICAgICAgICBjYWxsRnJhbWUsIG5ld0NvZGVCbG9jay5nZXQoKSwgREZHOjpERkdNb2RlLCBieXRl
Y29kZUluZGV4LCBjYWxsYmFjaywKKyAgICAgICAgICAgIHZtLndvcmtsaXN0LmdldCgpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChyZXN1bHQgIT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKQogICAg
ICAgICAgICAgcmV0dXJuOwo=
</data>
<flag name="review"
          id="232111"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>