<?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>192717</bug_id>
          
          <creation_ts>2018-12-14 14:19:57 -0800</creation_ts>
          <short_desc>CallFrame::convertToStackOverflowFrame() needs to keep the top CodeBlock alive.</short_desc>
          <delta_ts>2018-12-14 18:28:27 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1488056</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 14:19:57 -0800</bug_when>
    <thetext>When throwing a StackOverflowError, we convert the topCallFrame into a StackOverflowFrame.  Previously, we would nullify the codeBlock field in the frame because a StackOverflowFrame is only a sentinel and doesn&apos;t really correlate to any CodeBlocks.  However, this is a problem because the topCallFrame may be the only remaining place that references the CodeBlock that the stack overflow is triggered in.  The way we handle exceptions in JIT code is to return (from the runtime operation function throwing the exception) to the JIT code to check for the exception and if needed, do some clean up before jumping to the exception handling thunk.  As a result, we need to keep that JIT code alive, which means we need to keep its CodeBlock alive.  We only need to keep this CodeBlock alive until we&apos;ve unwound (in terms of exception handling) out of it.

We fix this issue by storing the CodeBlock to keep alive in the StackOverflowFrame for the GC to scan while the frame is still on the stack.

&lt;rdar://problem/46660677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488059</commentid>
    <comment_count>1</comment_count>
      <attachid>357344</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 14:32:27 -0800</bug_when>
    <thetext>Created attachment 357344
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488063</commentid>
    <comment_count>2</comment_count>
      <attachid>357344</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-14 14:53:21 -0800</bug_when>
    <thetext>Comment on attachment 357344
proposed patch.

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

Are you sure that everywhere you&apos;re calling exec-&gt;codeBlock() we&apos;ve already materialized a CodeBlock onto the frame?

&gt; Source/JavaScriptCore/interpreter/CallFrame.cpp:343
&gt; +    ASSERT(jsDynamicCast&lt;CodeBlock*&gt;(vm, codeBlockToKeepAliveUntilFrameIsUnwound));

inherits is the more proper way to do this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488064</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 14:55:36 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #2)
&gt; Comment on attachment 357344 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357344&amp;action=review
&gt; 
&gt; Are you sure that everywhere you&apos;re calling exec-&gt;codeBlock() we&apos;ve already
&gt; materialized a CodeBlock onto the frame?

Pretty sure but I&apos;ll do a comprehensive audit.

&gt; &gt; Source/JavaScriptCore/interpreter/CallFrame.cpp:343
&gt; &gt; +    ASSERT(jsDynamicCast&lt;CodeBlock*&gt;(vm, codeBlockToKeepAliveUntilFrameIsUnwound));
&gt; 
&gt; inherits is the more proper way to do this

Will fix.

I&apos;m also seeing some strange JSC test failures.  Will investigate before posting a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488100</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 16:26:00 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; (In reply to Saam Barati from comment #2)
&gt; &gt; Comment on attachment 357344 [details]
&gt; &gt; proposed patch.
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=357344&amp;action=review
&gt; &gt; 
&gt; &gt; Are you sure that everywhere you&apos;re calling exec-&gt;codeBlock() we&apos;ve already
&gt; &gt; materialized a CodeBlock onto the frame?
&gt; 
&gt; Pretty sure but I&apos;ll do a comprehensive audit.

You are right.  The FTL code doesn&apos;t pre-polutate the codeBlock field in the CallFrame.  I will fix it.

&gt; I&apos;m also seeing some strange JSC test failures.  Will investigate before
&gt; posting a new patch.

Turns out the failures were not due to my patch.  New patch coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488113</commentid>
    <comment_count>5</comment_count>
      <attachid>357357</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 16:50:27 -0800</bug_when>
    <thetext>Created attachment 357357
proposed patch.

Let&apos;s try this on the EWS bots first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488144</commentid>
    <comment_count>6</comment_count>
      <attachid>357357</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 17:34:13 -0800</bug_when>
    <thetext>Comment on attachment 357357
proposed patch.

The tests are looking good as expected.  Let&apos;s get a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488152</commentid>
    <comment_count>7</comment_count>
      <attachid>357357</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-14 17:42:50 -0800</bug_when>
    <thetext>Comment on attachment 357357
proposed patch.

I think we should use DeferGCForAWhile instead. I believe that&apos;s typically how we solve these issues when we&apos;re in a place we can&apos;t go into a GC safepoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488161</commentid>
    <comment_count>8</comment_count>
      <attachid>357357</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-14 17:57:39 -0800</bug_when>
    <thetext>Comment on attachment 357357
proposed patch.

r=me. I&apos;m ok with this solution too. I&apos;ll let you decide what you think will lead to fewer bugs in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488169</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-14 18:01:40 -0800</bug_when>
    <thetext>Thanks for the review.  I&apos;m going to land this.  I feel that DeferGC is a blunt tool, and this solution is not hard to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488179</commentid>
    <comment_count>10</comment_count>
      <attachid>357357</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-14 18:28:25 -0800</bug_when>
    <thetext>Comment on attachment 357357
proposed patch.

Clearing flags on attachment: 357357

Committed r239244: &lt;https://trac.webkit.org/changeset/239244&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488180</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-14 18:28:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357344</attachid>
            <date>2018-12-14 14:32:27 -0800</date>
            <delta_ts>2018-12-14 16:50:27 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-192717.patch</filename>
            <type>text/plain</type>
            <size>8874</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzkyMzIpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTEyLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBDYWxsRnJhbWU6OmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSgpIG5l
ZWRzIHRvIGtlZXAgdGhlIHRvcCBDb2RlQmxvY2sgYWxpdmUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI3MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ2NjYwNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtMTkyNzE3LmpzOiBBZGRlZC4KKwogMjAxOC0xMi0xNCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIzOTE1MywgcjIzOTE1NCwgYW5kIHIyMzkxNTUuCkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE5MjcxNy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9yZWdyZXNzLTE5MjcxNy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9y
ZWdyZXNzLTE5MjcxNy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisvL0AgcnVu
RGVmYXVsdCgiLS11c2VMTEludD1mYWxzZSIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1
ZVRvT2xkQWdlPXRydWUiLCAiLS1tYXhQZXJUaHJlYWRTdGFja1VzYWdlPTIwMDAwMCIsICItLWV4
Y2VwdGlvblN0YWNrVHJhY2VMaW1pdD0xIiwgIi0tZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0
PTEiKQorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgJGJ1aWxkVHlwZSA9PSAiZGVidWci
CisKK2xldCBmb28gPSAnbGV0IGEnOworZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDA7IGkrKykK
KyAgZm9vICs9ICcsYScgKyBpOworCit2YXIgZXhjZXB0aW9uOwordHJ5IHsKKyAgICBuZXcgRnVu
Y3Rpb24oZm9vKSgpOworfSBjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbiA9IGU7Cit9CisKK2lm
IChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2Vl
ZGVkLiIpCisgICAgdGhyb3cgIkZBSUxFRCI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzOTIyNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxOC0xMi0xNCAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FsbEZyYW1lOjpjb252ZXJ0VG9TdGFja092ZXJm
bG93RnJhbWUoKSBuZWVkcyB0byBrZWVwIHRoZSB0b3AgQ29kZUJsb2NrIGFsaXZlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNzE3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80NjY2MDY3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIHRocm93aW5nIGEgU3RhY2tPdmVyZmxvd0Vycm9yLCB3
ZSBjb252ZXJ0IHRoZSB0b3BDYWxsRnJhbWUgaW50byBhCisgICAgICAgIFN0YWNrT3ZlcmZsb3dG
cmFtZS4gIFByZXZpb3VzbHksIHdlIHdvdWxkIG51bGxpZnkgdGhlIGNvZGVCbG9jayBmaWVsZCBp
biB0aGUgZnJhbWUKKyAgICAgICAgYmVjYXVzZSBhIFN0YWNrT3ZlcmZsb3dGcmFtZSBpcyBvbmx5
IGEgc2VudGluZWwgYW5kIGRvZXNuJ3QgcmVhbGx5IGNvcnJlc3BvbmQgdG8KKyAgICAgICAgYW55
IENvZGVCbG9ja3MuICBIb3dldmVyLCB0aGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlIHRoZSB0b3BD
YWxsRnJhbWUgbWF5IGJlIHRoZQorICAgICAgICBvbmx5IHJlbWFpbmluZyBwbGFjZSB0aGF0IHJl
ZmVyZW5jZXMgdGhlIENvZGVCbG9jayB0aGF0IHRoZSBzdGFjayBvdmVyZmxvdyBpcworICAgICAg
ICB0cmlnZ2VyZWQgaW4uICBUaGUgd2F5IHdlIGhhbmRsZSBleGNlcHRpb25zIGluIEpJVCBjb2Rl
IGlzIHRvIHJldHVybiAoZnJvbSB0aGUKKyAgICAgICAgcnVudGltZSBvcGVyYXRpb24gZnVuY3Rp
b24gdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbikgdG8gdGhlIEpJVCBjb2RlIHRvIGNoZWNrIGZvcgor
ICAgICAgICB0aGUgZXhjZXB0aW9uIGFuZCBpZiBuZWVkZWQsIGRvIHNvbWUgY2xlYW4gdXAgYmVm
b3JlIGp1bXBpbmcgdG8gdGhlIGV4Y2VwdGlvbgorICAgICAgICBoYW5kbGluZyB0aHVuay4gIEFz
IGEgcmVzdWx0LCB3ZSBuZWVkIHRvIGtlZXAgdGhhdCBKSVQgY29kZSBhbGl2ZSwgd2hpY2ggbWVh
bnMgd2UKKyAgICAgICAgbmVlZCB0byBrZWVwIGl0cyBDb2RlQmxvY2sgYWxpdmUuICBXZSBvbmx5
IG5lZWQgdG8ga2VlcCB0aGlzIENvZGVCbG9jayBhbGl2ZSB1bnRpbAorICAgICAgICB3ZSd2ZSB1
bndvdW5kIChpbiB0ZXJtcyBvZiBleGNlcHRpb24gaGFuZGxpbmcpIG91dCBvZiBpdC4KKworICAg
ICAgICBXZSBmaXggdGhpcyBpc3N1ZSBieSBzdG9yaW5nIHRoZSBDb2RlQmxvY2sgdG8ga2VlcCBh
bGl2ZSBpbiB0aGUgU3RhY2tPdmVyZmxvd0ZyYW1lCisgICAgICAgIGZvciB0aGUgR0MgdG8gc2Nh
biB3aGlsZSB0aGUgZnJhbWUgaXMgc3RpbGwgb24gdGhlIHN0YWNrLgorCisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjpjb252ZXJ0
VG9TdGFja092ZXJmbG93RnJhbWUpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5o
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
VW53aW5kRnVuY3Rvcjo6Y29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisKIDIwMTgtMTItMTMgIEZ1amlpIEhpcm9ub3Jp
ICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtDbGFuZ10g
RExMTGF1bmNoZXJNYWluLmNwcDogd2FybmluZzogdW51c2VkIGZ1bmN0aW9uICdwcmVwZW5kUGF0
aCcgYW5kICdhcHBsZUFwcGxpY2F0aW9uU3VwcG9ydERpcmVjdG9yeScKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAy
MzkyMjUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDkgKzMzNywxMCBAQCBjb25zdCBjaGFyKiBDYWxsRnJh
bWU6OmRlc2NyaWJlRnJhbWUoKQogICAgIHJldHVybiBidWZmZXI7CiB9CiAKLXZvaWQgQ2FsbEZy
YW1lOjpjb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoVk0mIHZtKQordm9pZCBDYWxsRnJhbWU6
OmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2Nr
VG9LZWVwQWxpdmVVbnRpbEZyYW1lSXNVbndvdW5kKQogewogICAgIEFTU0VSVCghaXNHbG9iYWxF
eGVjKCkpOworICAgIEFTU0VSVChqc0R5bmFtaWNDYXN0PENvZGVCbG9jayo+KHZtLCBjb2RlQmxv
Y2tUb0tlZXBBbGl2ZVVudGlsRnJhbWVJc1Vud291bmQpKTsKIAogICAgIEVudHJ5RnJhbWUqIGVu
dHJ5RnJhbWUgPSB2bS50b3BFbnRyeUZyYW1lOwogICAgIENhbGxGcmFtZSogdGhyb3dPcmlnaW5G
cmFtZSA9IHRoaXM7CkBAIC0zNTAsNyArMzUxLDcgQEAgdm9pZCBDYWxsRnJhbWU6OmNvbnZlcnRU
b1N0YWNrT3ZlcmZsb3dGcgogICAgIEpTT2JqZWN0KiBvcmlnaW5DYWxsZWUgPSB0aHJvd09yaWdp
bkZyYW1lID8gdGhyb3dPcmlnaW5GcmFtZS0+anNDYWxsZWUoKSA6IHZtRW50cnlSZWNvcmQodm0u
dG9wRW50cnlGcmFtZSktPmNhbGxlZSgpOwogICAgIEpTT2JqZWN0KiBzdGFja092ZXJmbG93Q2Fs
bGVlID0gb3JpZ2luQ2FsbGVlLT5nbG9iYWxPYmplY3QoKS0+c3RhY2tPdmVyZmxvd0ZyYW1lQ2Fs
bGVlKCk7CiAKLSAgICBzZXRDb2RlQmxvY2sobnVsbHB0cik7CisgICAgc2V0Q29kZUJsb2NrKGNv
ZGVCbG9ja1RvS2VlcEFsaXZlVW50aWxGcmFtZUlzVW53b3VuZCk7CiAgICAgc2V0Q2FsbGVlKHN0
YWNrT3ZlcmZsb3dDYWxsZWUpOwogICAgIHNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKDAp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAkocmV2aXNpb24gMjM5MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgbmFtZXNw
YWNlIEpTQyAgewogICAgICAgICAgICAgcmV0dXJuIGNhbGxlckZyYW1lQW5kUEMoKS5jYWxsZXJG
cmFtZSA9PSBub0NhbGxlcigpICYmIGNhbGxlckZyYW1lQW5kUEMoKS5yZXR1cm5QQyA9PSBudWxs
cHRyOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBjb252ZXJ0VG9TdGFja092ZXJmbG93RnJh
bWUoVk0mKTsKKyAgICAgICAgdm9pZCBjb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoVk0mLCBD
b2RlQmxvY2sqIGNvZGVCbG9ja1RvS2VlcEFsaXZlVW50aWxGcmFtZUlzVW53b3VuZCk7CiAgICAg
ICAgIGlubGluZSBib29sIGlzU3RhY2tPdmVyZmxvd0ZyYW1lKCkgY29uc3Q7CiAgICAgICAgIGlu
bGluZSBib29sIGlzV2FzbUZyYW1lKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjM5MjI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UaHJvd1N0YWNrT3YK
ICAgICAvLyBXZSBwYXNzIGluIG91ciBvd24gY29kZSBibG9jaywgYmVjYXVzZSB0aGUgY2FsbGZy
YW1lIGhhc24ndCBiZWVuIHBvcHVsYXRlZC4KICAgICBWTSogdm0gPSBjb2RlQmxvY2stPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoKnZtKTsKLSAgICBleGVjLT5j
b252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoKnZtKTsKKyAgICBleGVjLT5jb252ZXJ0VG9TdGFj
a092ZXJmbG93RnJhbWUoKnZtLCBjb2RlQmxvY2spOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOwogICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHNj
b3BlKTsKIH0KQEAgLTExNCw3ICsxMTQsNyBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ2FsbEFyaXR5CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQ
YXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDYWxsKTsKICAgICBpZiAobWlz
c2luZ0FyZ0NvdW50IDwgMCkgewotICAgICAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJmbG93
RnJhbWUoKnZtKTsKKyAgICAgICAgZXhlYy0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKCp2
bSwgZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKHZtLCBleGVjKTsKICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3Iodm0tPnRvcENh
bGxGcmFtZSwgc2NvcGUpOwogICAgIH0KQEAgLTEyOSw3ICsxMjksNyBAQCBpbnQzMl90IEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3Vu
dCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDb25z
dHJ1Y3QpOwogICAgIGlmIChtaXNzaW5nQXJnQ291bnQgPCAwKSB7Ci0gICAgICAgIGV4ZWMtPmNv
bnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSgqdm0pOworICAgICAgICBleGVjLT5jb252ZXJ0VG9T
dGFja092ZXJmbG93RnJhbWUoKnZtLCBleGVjLT5jb2RlQmxvY2soKSk7CiAgICAgICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgICAgICB0aHJvd1N0YWNrT3Zl
cmZsb3dFcnJvcih2bS0+dG9wQ2FsbEZyYW1lLCBzY29wZSk7CiAgICAgfQpAQCAtMjQzMiw3ICsy
NDMyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZQogCiB2b2lk
IEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShWTSog
dm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJmbG93
RnJhbWUoKnZtKTsKKyAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUoKnZtLCBl
eGVjLT5jb2RlQmxvY2soKSk7CiAgICAgbG9va3VwRXhjZXB0aW9uSGFuZGxlcih2bSwgZXhlYyk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkocmV2aXNpb24gMjM5MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU5LDcgKzU1OSw3IEBAIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHN0YWNrX2NoZWNrKQogICAgIH0KICNlbmRpZgogCi0gICAgZXhl
Yy0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKHZtKTsKKyAgICBleGVjLT5jb252ZXJ0VG9T
dGFja092ZXJmbG93RnJhbWUodm0sIGNvZGVCbG9jayk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3Bl
IGVycm9yU2NvcGUodm0pOwogICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMsIHRocm93
U2NvcGUpOwogICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2aXNpb24g
MjM5MjI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2sKICAgICBCRUdJTigpOwogICAgIGludCBzbG90c1RvQWRk
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsIHZtLCBDb2RlRm9yQ2FsbCk7
CiAgICAgaWYgKHNsb3RzVG9BZGQgPCAwKSB7Ci0gICAgICAgIGV4ZWMtPmNvbnZlcnRUb1N0YWNr
T3ZlcmZsb3dGcmFtZSh2bSk7CisgICAgICAgIGV4ZWMtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dG
cmFtZSh2bSwgZXhlYy0+Y29kZUJsb2NrKCkpOwogICAgICAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNj
b3BlKHZtKTsKICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CkBAIC0xOTMsNyArMTkzLDcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eQogICAgIEJFR0lOKCk7
CiAgICAgaW50IHNsb3RzVG9BZGQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhl
Yywgdm0sIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmIChzbG90c1RvQWRkIDwgMCkgewotICAg
ICAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0pOworICAgICAgICBleGVj
LT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0sIGV4ZWMtPmNvZGVCbG9jaygpKTsKICAg
ICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgICAgICBF
cnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRocm93QXJpdHlDaGVj
a1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCB0aHJvd1Njb3BlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357357</attachid>
            <date>2018-12-14 16:50:27 -0800</date>
            <delta_ts>2018-12-14 18:28:25 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-192717.patch</filename>
            <type>text/plain</type>
            <size>12113</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzkyNDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTEyLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBDYWxsRnJhbWU6OmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSgpIG5l
ZWRzIHRvIGtlZXAgdGhlIHRvcCBDb2RlQmxvY2sgYWxpdmUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI3MTcKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzQ2NjYwNjc3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtMTkyNzE3LmpzOiBBZGRlZC4KKwogMjAxOC0xMi0xNCAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjIzOTE1MywgcjIzOTE1NCwgYW5kIHIyMzkxNTUuCkluZGV4OiBK
U1Rlc3RzL3N0cmVzcy9yZWdyZXNzLTE5MjcxNy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0
cmVzcy9yZWdyZXNzLTE5MjcxNy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9y
ZWdyZXNzLTE5MjcxNy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACisvL0AgcnVu
RGVmYXVsdCgiLS11c2VMTEludD1mYWxzZSIsICItLWZvcmNlQ29kZUJsb2NrVG9KZXR0aXNvbkR1
ZVRvT2xkQWdlPXRydWUiLCAiLS1tYXhQZXJUaHJlYWRTdGFja1VzYWdlPTIwMDAwMCIsICItLWV4
Y2VwdGlvblN0YWNrVHJhY2VMaW1pdD0xIiwgIi0tZGVmYXVsdEVycm9yU3RhY2tUcmFjZUxpbWl0
PTEiKQorLy9AIHNraXAgaWYgJG1lbW9yeUxpbWl0ZWQgb3IgJGJ1aWxkVHlwZSA9PSAiZGVidWci
CisKK2xldCBmb28gPSAnbGV0IGEnOworZm9yIChsZXQgaSA9IDA7IGkgPCA0MDAwMDA7IGkrKykK
KyAgZm9vICs9ICcsYScgKyBpOworCit2YXIgZXhjZXB0aW9uOwordHJ5IHsKKyAgICBuZXcgRnVu
Y3Rpb24oZm9vKSgpOworfSBjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbiA9IGU7Cit9CisKK2lm
IChleGNlcHRpb24gIT0gIlJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2Vl
ZGVkLiIpCisgICAgdGhyb3cgIkZBSUxFRCI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIzOTIzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0OCBAQAorMjAxOC0xMi0xNCAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2FsbEZyYW1lOjpjb252ZXJ0VG9TdGFja092ZXJm
bG93RnJhbWUoKSBuZWVkcyB0byBrZWVwIHRoZSB0b3AgQ29kZUJsb2NrIGFsaXZlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNzE3CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80NjY2MDY3Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXaGVuIHRocm93aW5nIGEgU3RhY2tPdmVyZmxvd0Vycm9yLCB3
ZSBjb252ZXJ0IHRoZSB0b3BDYWxsRnJhbWUgaW50byBhCisgICAgICAgIFN0YWNrT3ZlcmZsb3dG
cmFtZS4gIFByZXZpb3VzbHksIHdlIHdvdWxkIG51bGxpZnkgdGhlIGNvZGVCbG9jayBmaWVsZCBp
biB0aGUgZnJhbWUKKyAgICAgICAgYmVjYXVzZSBhIFN0YWNrT3ZlcmZsb3dGcmFtZSBpcyBvbmx5
IGEgc2VudGluZWwgYW5kIGRvZXNuJ3QgcmVhbGx5IGNvcnJlc3BvbmQgdG8KKyAgICAgICAgYW55
IENvZGVCbG9ja3MuICBIb3dldmVyLCB0aGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlIHRoZSB0b3BD
YWxsRnJhbWUgbWF5IGJlIHRoZQorICAgICAgICBvbmx5IHJlbWFpbmluZyBwbGFjZSB0aGF0IHJl
ZmVyZW5jZXMgdGhlIENvZGVCbG9jayB0aGF0IHRoZSBzdGFjayBvdmVyZmxvdyBpcworICAgICAg
ICB0cmlnZ2VyZWQgaW4uICBUaGUgd2F5IHdlIGhhbmRsZSBleGNlcHRpb25zIGluIEpJVCBjb2Rl
IGlzIHRvIHJldHVybiAoZnJvbSB0aGUKKyAgICAgICAgcnVudGltZSBvcGVyYXRpb24gZnVuY3Rp
b24gdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbikgdG8gdGhlIEpJVCBjb2RlIHRvIGNoZWNrIGZvcgor
ICAgICAgICB0aGUgZXhjZXB0aW9uIGFuZCBpZiBuZWVkZWQsIGRvIHNvbWUgY2xlYW4gdXAgYmVm
b3JlIGp1bXBpbmcgdG8gdGhlIGV4Y2VwdGlvbgorICAgICAgICBoYW5kbGluZyB0aHVuay4gIEFz
IGEgcmVzdWx0LCB3ZSBuZWVkIHRvIGtlZXAgdGhhdCBKSVQgY29kZSBhbGl2ZSwgd2hpY2ggbWVh
bnMgd2UKKyAgICAgICAgbmVlZCB0byBrZWVwIGl0cyBDb2RlQmxvY2sgYWxpdmUuICBXZSBvbmx5
IG5lZWQgdG8ga2VlcCB0aGlzIENvZGVCbG9jayBhbGl2ZSB1bnRpbAorICAgICAgICB3ZSd2ZSB1
bndvdW5kIChpbiB0ZXJtcyBvZiBleGNlcHRpb24gaGFuZGxpbmcpIG91dCBvZiBpdC4KKworICAg
ICAgICBXZSBmaXggdGhpcyBpc3N1ZSBieSBzdG9yaW5nIHRoZSBDb2RlQmxvY2sgdG8ga2VlcCBh
bGl2ZSBpbiB0aGUgU3RhY2tPdmVyZmxvd0ZyYW1lCisgICAgICAgIGZvciB0aGUgR0MgdG8gc2Nh
biB3aGlsZSB0aGUgZnJhbWUgaXMgc3RpbGwgb24gdGhlIHN0YWNrLgorCisgICAgICAgIFdlIHJl
bW92ZWQgdGhlIGNhbGwgdG8gY29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKCkgaW4KKyAgICAg
ICAgbG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSgpIGJlY2F1c2UgaXQgaXMg
cmVkdW5kYW50LgorICAgICAgICBsb29rdXBFeGNlcHRpb25IYW5kbGVyRnJvbUNhbGxlckZyYW1l
KCkgd2lsbCBvbmx5IGV2ZXJ5IGJlIGNhbGxlZCBhZnRlcgorICAgICAgICBhIFN0YWNrT3ZlckZs
b3dFcnJvciBoYXMgYmVlbiB0aHJvd24uICBIZW5jZSwgdGhlIHRvcCBmcmFtZSBpcyBhbHJlYWR5
CisgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgYSBTdGFja092ZXJmbG93RnJhbWUsIGFuZCB0aGVy
ZSBzaG91bGQgYWx3YXlzIGJlIGEKKyAgICAgICAgU3RhY2tPdmVyRmxvd0Vycm9yIGV4Y2VwdGlv
biBwZW5kaW5nLiAgV2UgYWRkZWQgYXNzZXJ0aW9ucyBmb3IgdGhlc2UKKyAgICAgICAgaW5zdGVh
ZC4KKworICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxGcmFtZTo6Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfU0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6Y29kZUJs
b2NrRnJvbUNhbGxGcmFtZUNhbGxlZSk6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0Zvcik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAoSlNDOjpW
TTo6ZXhjZXB0aW9uRm9ySW5zcGVjdGlvbiBjb25zdCk6CisKIDIwMTgtMTItMTQgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMzkxNTMsIHIyMzkxNTQsIGFuZCByMjM5MTU1LgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlzaW9uIDIz
OTIzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzcsOSArMzM3LDEwIEBAIGNvbnN0IGNoYXIqIENhbGxGcmFt
ZTo6ZGVzY3JpYmVGcmFtZSgpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotdm9pZCBDYWxsRnJh
bWU6OmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZShWTSYgdm0pCit2b2lkIENhbGxGcmFtZTo6
Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2tU
b0tlZXBBbGl2ZVVudGlsRnJhbWVJc1Vud291bmQpCiB7CiAgICAgQVNTRVJUKCFpc0dsb2JhbEV4
ZWMoKSk7CisgICAgQVNTRVJUKGNvZGVCbG9ja1RvS2VlcEFsaXZlVW50aWxGcmFtZUlzVW53b3Vu
ZC0+aW5oZXJpdHM8Q29kZUJsb2NrPih2bSkpOwogCiAgICAgRW50cnlGcmFtZSogZW50cnlGcmFt
ZSA9IHZtLnRvcEVudHJ5RnJhbWU7CiAgICAgQ2FsbEZyYW1lKiB0aHJvd09yaWdpbkZyYW1lID0g
dGhpczsKQEAgLTM1MCw3ICszNTEsNyBAQCB2b2lkIENhbGxGcmFtZTo6Y29udmVydFRvU3RhY2tP
dmVyZmxvd0ZyCiAgICAgSlNPYmplY3QqIG9yaWdpbkNhbGxlZSA9IHRocm93T3JpZ2luRnJhbWUg
PyB0aHJvd09yaWdpbkZyYW1lLT5qc0NhbGxlZSgpIDogdm1FbnRyeVJlY29yZCh2bS50b3BFbnRy
eUZyYW1lKS0+Y2FsbGVlKCk7CiAgICAgSlNPYmplY3QqIHN0YWNrT3ZlcmZsb3dDYWxsZWUgPSBv
cmlnaW5DYWxsZWUtPmdsb2JhbE9iamVjdCgpLT5zdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKTsK
IAotICAgIHNldENvZGVCbG9jayhudWxscHRyKTsKKyAgICBzZXRDb2RlQmxvY2soY29kZUJsb2Nr
VG9LZWVwQWxpdmVVbnRpbEZyYW1lSXNVbndvdW5kKTsKICAgICBzZXRDYWxsZWUoc3RhY2tPdmVy
Zmxvd0NhbGxlZSk7CiAgICAgc2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoMCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShy
ZXZpc2lvbiAyMzkyMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Nyw3ICsyNTcsNyBAQCBuYW1lc3BhY2UgSlND
ICB7CiAgICAgICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWVBbmRQQygpLmNhbGxlckZyYW1lID09
IG5vQ2FsbGVyKCkgJiYgY2FsbGVyRnJhbWVBbmRQQygpLnJldHVyblBDID09IG51bGxwdHI7CiAg
ICAgICAgIH0KIAotICAgICAgICB2b2lkIGNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZShWTSYp
OworICAgICAgICB2b2lkIGNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZShWTSYsIENvZGVCbG9j
ayogY29kZUJsb2NrVG9LZWVwQWxpdmVVbnRpbEZyYW1lSXNVbndvdW5kKTsKICAgICAgICAgaW5s
aW5lIGJvb2wgaXNTdGFja092ZXJmbG93RnJhbWUoKSBjb25zdDsKICAgICAgICAgaW5saW5lIGJv
b2wgaXNXYXNtRnJhbWUoKSBjb25zdDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMzkyMzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRocm93U3RhY2tPdgogICAgIC8v
IFdlIHBhc3MgaW4gb3VyIG93biBjb2RlIGJsb2NrLCBiZWNhdXNlIHRoZSBjYWxsZnJhbWUgaGFz
bid0IGJlZW4gcG9wdWxhdGVkLgogICAgIFZNKiB2bSA9IGNvZGVCbG9jay0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwotICAgIGV4ZWMtPmNvbnZlcnRU
b1N0YWNrT3ZlcmZsb3dGcmFtZSgqdm0pOworICAgIGV4ZWMtPmNvbnZlcnRUb1N0YWNrT3ZlcmZs
b3dGcmFtZSgqdm0sIGNvZGVCbG9jayk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZXhlYywgc2NvcGUpOwog
fQpAQCAtMTEzLDggKzExMyw5IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxs
QXJpdHkKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqdm0pOwogCiAgICAg
aW50MzJfdCBtaXNzaW5nQXJnQ291bnQgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Io
ZXhlYywgKnZtLCBDb2RlRm9yQ2FsbCk7Ci0gICAgaWYgKG1pc3NpbmdBcmdDb3VudCA8IDApIHsK
LSAgICAgICAgZXhlYy0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKCp2bSk7CisgICAgaWYg
KFVOTElLRUxZKG1pc3NpbmdBcmdDb3VudCA8IDApKSB7CisgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gQ29tbW9uU2xvd1BhdGhzOjpjb2RlQmxvY2tGcm9tQ2FsbEZyYW1lQ2FsbGVlKGV4
ZWMsIENvZGVGb3JDYWxsKTsKKyAgICAgICAgZXhlYy0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0Zy
YW1lKCp2bSwgY29kZUJsb2NrKTsKICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNl
cih2bSwgZXhlYyk7CiAgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKHZtLT50b3BDYWxs
RnJhbWUsIHNjb3BlKTsKICAgICB9CkBAIC0xMjgsOCArMTI5LDkgQEAgaW50MzJfdCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKCp2bSk7CiAKICAgICBpbnQzMl90IG1pc3NpbmdBcmdDb3VudCA9IENvbW1vblNsb3dQ
YXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAqdm0sIENvZGVGb3JDb25zdHJ1Y3QpOwotICAgIGlm
IChtaXNzaW5nQXJnQ291bnQgPCAwKSB7Ci0gICAgICAgIGV4ZWMtPmNvbnZlcnRUb1N0YWNrT3Zl
cmZsb3dGcmFtZSgqdm0pOworICAgIGlmIChVTkxJS0VMWShtaXNzaW5nQXJnQ291bnQgPCAwKSkg
eworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1vblNsb3dQYXRoczo6Y29kZUJs
b2NrRnJvbUNhbGxGcmFtZUNhbGxlZShleGVjLCBDb2RlRm9yQ2FsbCk7CisgICAgICAgIGV4ZWMt
PmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSgqdm0sIGNvZGVCbG9jayk7CiAgICAgICAgIE5h
dGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOwogICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcih2bS0+dG9wQ2FsbEZyYW1lLCBzY29wZSk7CiAgICAgfQpAQCAtMjQzMiw3
ICsyNDM0LDggQEAgdm9pZCBKSVRfT1BFUkFUSU9OIGxvb2t1cEV4Y2VwdGlvbkhhbmRsZQogCiB2
b2lkIEpJVF9PUEVSQVRJT04gbG9va3VwRXhjZXB0aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZShW
TSogdm0sIEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJm
bG93RnJhbWUoKnZtKTsKKyAgICBBU1NFUlQoZXhlYy0+aXNTdGFja092ZXJmbG93RnJhbWUoKSk7
CisgICAgQVNTRVJUKGpzQ2FzdDxFcnJvckluc3RhbmNlKj4odm0tPmV4Y2VwdGlvbkZvckluc3Bl
Y3Rpb24oKS0+dmFsdWUoKS5hc0NlbGwoKSktPmlzU3RhY2tPdmVyZmxvd0Vycm9yKCkpOwogICAg
IGxvb2t1cEV4Y2VwdGlvbkhhbmRsZXIodm0sIGV4ZWMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIzOTIz
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1OSw3ICs1NTksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzdGFj
a19jaGVjaykKICAgICB9CiAjZW5kaWYKIAotICAgIGV4ZWMtPmNvbnZlcnRUb1N0YWNrT3ZlcmZs
b3dGcmFtZSh2bSk7CisgICAgZXhlYy0+Y29udmVydFRvU3RhY2tPdmVyZmxvd0ZyYW1lKHZtLCBj
b2RlQmxvY2spOwogICAgIEVycm9ySGFuZGxpbmdTY29wZSBlcnJvclNjb3BlKHZtKTsKICAgICB0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCB0aHJvd1Njb3BlKTsKICAgICBwYyA9IHJldHVy
blRvVGhyb3coZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIzOTIzNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3Nyw4ICsxNzcsOSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNr
CiB7CiAgICAgQkVHSU4oKTsKICAgICBpbnQgc2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihleGVjLCB2bSwgQ29kZUZvckNhbGwpOwotICAgIGlmIChzbG90c1RvQWRk
IDwgMCkgewotICAgICAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJmbG93RnJhbWUodm0pOwor
ICAgIGlmIChVTkxJS0VMWShzbG90c1RvQWRkIDwgMCkpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBDb21tb25TbG93UGF0aHM6OmNvZGVCbG9ja0Zyb21DYWxsRnJhbWVDYWxsZWUo
ZXhlYywgQ29kZUZvckNhbGwpOworICAgICAgICBleGVjLT5jb252ZXJ0VG9TdGFja092ZXJmbG93
RnJhbWUodm0sIGNvZGVCbG9jayk7CiAgICAgICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJnZtLCBleGVjKTsKICAgICAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OwogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKQEAgLTE5Miw4ICsxOTMsOSBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5CiB7CiAgICAgQkVHSU4oKTsKICAg
ICBpbnQgc2xvdHNUb0FkZCA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCB2
bSwgQ29kZUZvckNvbnN0cnVjdCk7Ci0gICAgaWYgKHNsb3RzVG9BZGQgPCAwKSB7Ci0gICAgICAg
IGV4ZWMtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSk7CisgICAgaWYgKFVOTElLRUxZ
KHNsb3RzVG9BZGQgPCAwKSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IENvbW1v
blNsb3dQYXRoczo6Y29kZUJsb2NrRnJvbUNhbGxGcmFtZUNhbGxlZShleGVjLCBDb2RlRm9yQ2Fs
bCk7CisgICAgICAgIGV4ZWMtPmNvbnZlcnRUb1N0YWNrT3ZlcmZsb3dGcmFtZSh2bSwgY29kZUJs
b2NrKTsKICAgICAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwog
ICAgICAgICBFcnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgICAgIHRocm93
QXJpdHlDaGVja1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjLCB0aHJvd1Njb3BlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZp
c2lvbiAyMzkyMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTEgKzcyLDE2IEBAIEFMV0FZU19JTkxJTkUg
aW50IG51bWJlck9mU3RhY2tQYWRkaW5nU2wKICAgICByZXR1cm4gbnVtYmVyT2ZTdGFja1BhZGRp
bmdTbG90cyhjb2RlQmxvY2ssIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKSArIG51bWJlck9m
RXh0cmFTbG90cyhhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKK0FMV0FZU19JTkxJTkUgQ29kZUJsb2NrKiBjb2RlQmxvY2tGcm9t
Q2FsbEZyYW1lQ2FsbGVlKEV4ZWNTdGF0ZSogZXhlYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQogewogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhl
Yy0+anNDYWxsZWUoKSk7CiAgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwot
ICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Y29k
ZUJsb2NrRm9yKGtpbmQpOworICAgIHJldHVybiBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5jb2Rl
QmxvY2tGb3Ioa2luZCk7Cit9CisKK0FMV0FZU19JTkxJTkUgaW50IGFyaXR5Q2hlY2tGb3IoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9IGNvZGVCbG9ja0Zyb21DYWxsRnJhbWVDYWxsZWUo
ZXhlYywga2luZCk7CiAgICAgQVNTRVJUKGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCkgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
KTsKICAgICBpbnQgcGFkZGluZyA9IG51bWJlck9mU3RhY2tQYWRkaW5nU2xvdHNXaXRoRXh0cmFT
bG90cyhuZXdDb2RlQmxvY2ssIGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOwog
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAyMzkyMzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OTMsNiArNjkzLDEwIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb24qIGxhc3RFeGNlcHRpb24o
KSBjb25zdCB7IHJldHVybiBtX2xhc3RFeGNlcHRpb247IH0KICAgICBKU0NlbGwqKiBhZGRyZXNz
T2ZMYXN0RXhjZXB0aW9uKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm1f
bGFzdEV4Y2VwdGlvbik7IH0KIAorICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3Ig
dGVzdCBvciBhc3NlcnRpb24gY29kZSB0aGF0IHdhbnRzIHRvIGluc3BlY3QKKyAgICAvLyB0aGUg
cGVuZGluZyBleGNlcHRpb24gd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIFRocm93L0NhdGNoU2Nv
cGVzLgorICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uRm9ySW5zcGVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZXhjZXB0aW9uOyB9CisKICAgICB2b2lkIHNldEZhaWxOZXh0TmV3Q29kZUJsb2NrKCkg
eyBtX2ZhaWxOZXh0TmV3Q29kZUJsb2NrID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0QW5kQ2xlYXJG
YWlsTmV4dE5ld0NvZGVCbG9jaygpCiAgICAgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>