<?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>107764</bug_id>
          
          <creation_ts>2013-01-23 17:16:57 -0800</creation_ts>
          <short_desc>HTMLDocumentParser::insert should be aware of threaded parsing</short_desc>
          <delta_ts>2013-01-30 15:17:40 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107753</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>814863</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-23 17:16:57 -0800</bug_when>
    <thetext>HTMLDocumentParser should be aware of threaded parsing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818642</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-29 00:10:23 -0800</bug_when>
    <thetext>I&apos;m not sure what I had in mind for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818646</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-29 00:14:36 -0800</bug_when>
    <thetext>I remember now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818669</commentid>
    <comment_count>3</comment_count>
      <attachid>185188</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-29 00:42:58 -0800</bug_when>
    <thetext>Created attachment 185188
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819338</commentid>
    <comment_count>4</comment_count>
      <attachid>185188</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-29 14:38:22 -0800</bug_when>
    <thetext>Comment on attachment 185188
work in progress

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

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:81
&gt; +    , m_token(m_options.useThreading ? 0 : adoptPtr(new HTMLToken))
&gt; +    , m_tokenizer(m_options.useThreading ? 0 : HTMLTokenizer::create(m_options))

I&apos;m not entirely sure what you&apos;re going for here, but I like the idea of controlling the lifetime of these objects more carefully when using the threaded parser.  That can allow us to better ASSERT that we&apos;re doing things in the order we expect (and on the right thread).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819340</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-29 14:40:57 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 185188 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185188&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:81
&gt; &gt; +    , m_token(m_options.useThreading ? 0 : adoptPtr(new HTMLToken))
&gt; &gt; +    , m_tokenizer(m_options.useThreading ? 0 : HTMLTokenizer::create(m_options))
&gt; 
&gt; I&apos;m not entirely sure what you&apos;re going for here, but I like the idea of controlling the lifetime of these objects more carefully when using the threaded parser.  That can allow us to better ASSERT that we&apos;re doing things in the order we expect (and on the right thread).

Yeah, this part of the change isn&apos;t strictly needed, but it seems cleaner to have a tokenizer on the main thread only if we&apos;re actually using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820550</commentid>
    <comment_count>6</comment_count>
      <attachid>185570</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 14:18:18 -0800</bug_when>
    <thetext>Created attachment 185570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820578</commentid>
    <comment_count>7</comment_count>
      <attachid>185570</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-30 14:31:36 -0800</bug_when>
    <thetext>Comment on attachment 185570
Patch

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

I assume this causes a change in behavior?  Could you explain better in your ChangeLog how this affects tests (because it doesn&apos;t seem they can pass yet w/o implementing the speculation abort.)

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:706
&gt; +            if (isWaitingForScripts() || isStopped())

Could you explain this change?  It looks right.  I assume you were pumping when you didnt&apos; expec to?

&gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:856
&gt; +        if (m_parser-&gt;tokenizer())
&gt; +            m_parser-&gt;tokenizer()-&gt;setState(HTMLTokenizerState::RCDATAState);

Should this just be setTokenizerState() on the parser, and the parser should handle the check?  That would make it possibly easier for you to compare the state after insert() with the expected state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820595</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 14:39:32 -0800</bug_when>
    <thetext>&gt; I assume this causes a change in behavior?  Could you explain better in your ChangeLog how this affects tests (because it doesn&apos;t seem they can pass yet w/o implementing the speculation abort.)

Oh, sorry.  This patch doesn&apos;t affect behavior.  I&apos;ll mention that in the ChangeLog.  It&apos;s just setting us up for the next patch which actually implements the speculation abort.  (The uberpatch is in bug 107753 if you want to see the whole picture.)

&gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:706
&gt; &gt; +            if (isWaitingForScripts() || isStopped())
&gt; 
&gt; Could you explain this change?  It looks right.  I assume you were pumping when you didnt&apos; expec to?

Yeah, if processing tokens from the background thread causes the parser to stop, then we need to not process further tokens.  (We&apos;ll hit a crash from zero document.)

That&apos;s covered by fast/parser/iframe-onload-document-close-with-external-script* (or maybe it was a different one---I made this change based on one of the fast/parser tests.)

&gt; &gt; Source/WebCore/html/parser/HTMLTreeBuilder.cpp:856
&gt; &gt; +        if (m_parser-&gt;tokenizer())
&gt; &gt; +            m_parser-&gt;tokenizer()-&gt;setState(HTMLTokenizerState::RCDATAState);
&gt; 
&gt; Should this just be setTokenizerState() on the parser, and the parser should handle the check?  That would make it possibly easier for you to compare the state after insert() with the expected state.

You&apos;re a brilliant man.  Yes, that solves two problems.  If you don&apos;t mind, I&apos;d like to make that change when we get smarter about not blowing away the speculative parsing buffer on every document.write (which is when we&apos;ll want to hook that call).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820605</commentid>
    <comment_count>9</comment_count>
      <attachid>185581</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-30 14:43:00 -0800</bug_when>
    <thetext>Created attachment 185581
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820662</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-30 15:09:42 -0800</bug_when>
    <thetext>Thank you for the explanations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820670</commentid>
    <comment_count>11</comment_count>
      <attachid>185581</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 15:17:35 -0800</bug_when>
    <thetext>Comment on attachment 185581
Patch for landing

Clearing flags on attachment: 185581

Committed r141328: &lt;http://trac.webkit.org/changeset/141328&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820671</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 15:17:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185188</attachid>
            <date>2013-01-29 00:42:58 -0800</date>
            <delta_ts>2013-01-30 14:18:16 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-107764-20130129003945.patch</filename>
            <type>text/plain</type>
            <size>10172</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA1Y2I2YzEwM2FjZWE1NDU1NWM1MWVm
ZDA5NDg0MjI1YzgxMGQyNmJlLi5hY2M2ZmNiZmRiN2E2NDA2YTY1MzY3MzA5Y2IyOTI2ODlmNmFl
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKQEAgLTc3LDggKzc3LDggQEAgc3RhdGljIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3Rh
dGUgdG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVudChFbGVtZW50KiBjb250ZXgKIEhUTUxE
b2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgcmVwb3J0RXJyb3JzKQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRvY3Vt
ZW50KQogICAgICwgbV9vcHRpb25zKGRvY3VtZW50KQotICAgICwgbV90b2tlbihhZG9wdFB0cihu
ZXcgSFRNTFRva2VuKSkKLSAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZSht
X29wdGlvbnMpKQorICAgICwgbV90b2tlbihtX29wdGlvbnMudXNlVGhyZWFkaW5nID8gMCA6IGFk
b3B0UHRyKG5ldyBIVE1MVG9rZW4pKQorICAgICwgbV90b2tlbml6ZXIobV9vcHRpb25zLnVzZVRo
cmVhZGluZyA/IDAgOiBIVE1MVG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKSkKICAgICAsIG1f
c2NyaXB0UnVubmVyKEhUTUxTY3JpcHRSdW5uZXI6OmNyZWF0ZShkb2N1bWVudCwgdGhpcykpCiAg
ICAgLCBtX3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMsIGRvY3VtZW50
LCByZXBvcnRFcnJvcnMsIG1fb3B0aW9ucykpCiAgICAgLCBtX3BhcnNlclNjaGVkdWxlcihIVE1M
UGFyc2VyU2NoZWR1bGVyOjpjcmVhdGUodGhpcykpCkBAIC05MCw2ICs5MCw3IEBAIEhUTUxEb2N1
bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQsIGJv
b2wgcmVwb3J0RXJyb3JzCiAgICAgLCBtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyKGZhbHNlKQogICAg
ICwgbV9wdW1wU2Vzc2lvbk5lc3RpbmdMZXZlbCgwKQogeworICAgIEFTU0VSVChzaG91bGRVc2VU
aHJlYWRpbmcoKSB8fCAobV90b2tlbiAmJiBtX3Rva2VuaXplcikpOwogfQogCiAvLyBGSVhNRTog
TWVtYmVyIHZhcmlhYmxlcyBzaG91bGQgYmUgZ3JvdXBlZCBpbnRvIHNlbGYtaW5pdGlhbGl6aW5n
IHN0cnVjdHMgdG8KQEAgLTEwOCw2ICsxMDksNyBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxE
b2N1bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udAog
ICAgICwgbV9oYXZlQmFja2dyb3VuZFBhcnNlcihmYWxzZSkKICAgICAsIG1fcHVtcFNlc3Npb25O
ZXN0aW5nTGV2ZWwoMCkKIHsKKyAgICBBU1NFUlQoIXNob3VsZFVzZVRocmVhZGluZygpKTsKICAg
ICBib29sIHJlcG9ydEVycm9ycyA9IGZhbHNlOyAvLyBGb3Igbm93IGRvY3VtZW50IGZyYWdtZW50
IHBhcnNpbmcgbmV2ZXIgcmVwb3J0cyBlcnJvcnMuCiAgICAgbV90b2tlbml6ZXItPnNldFN0YXRl
KHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoY29udGV4dEVsZW1lbnQsIHJlcG9ydEVy
cm9ycywgbV9vcHRpb25zKSk7CiB9CkBAIC0yODQsNiArMjg2LDExIEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpkaWRSZWNlaXZlVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0
cjxDb21wYWN0CiAgICAgcHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKHRva2Vucyk7
CiB9CiAKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpkaWRGYWlsU3BlY3VsYXRpb24oUGFzc093
blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+KQoreworICAgIC8vIEZJ
WE1FOiBUZWxsIHRoZSBiYWNrZ3JvdW5kIHBhcnNlciB0byByZXN1bWUgcGFyc2luZyB3aXRoIHRo
aXMgdG9rZW4gYW5kIHRva2VuaXplci4KK30KKwogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBy
b2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPENvbXBhY3RIVE1MVG9r
ZW5TdHJlYW0+IHRva2VucykKIHsKICAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkpOwpA
QCAtNDQ2LDExICs0NTMsMjggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUg
aXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJv
dGVjdCh0aGlzKTsKIAorI2lmIEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKKyAgICBpZiAo
IW1fdG9rZW5pemVyKSB7CisgICAgICAgIEFTU0VSVCghaW5QdW1wU2Vzc2lvbigpICYmIG1faGF2
ZUJhY2tncm91bmRQYXJzZXIpOworICAgICAgICBtX3Rva2VuID0gYWRvcHRQdHIobmV3IEhUTUxU
b2tlbik7CisgICAgICAgIG1fdG9rZW5pemVyID0gSFRNTFRva2VuaXplcjo6Y3JlYXRlKG1fb3B0
aW9ucyk7CisgICAgfQorI2VuZGlmCisKICAgICBTZWdtZW50ZWRTdHJpbmcgZXhjbHVkZWRMaW5l
TnVtYmVyU291cmNlKHNvdXJjZSk7CiAgICAgZXhjbHVkZWRMaW5lTnVtYmVyU291cmNlLnNldEV4
Y2x1ZGVMaW5lTnVtYmVycygpOwogICAgIG1faW5wdXQuaW5zZXJ0QXRDdXJyZW50SW5zZXJ0aW9u
UG9pbnQoZXhjbHVkZWRMaW5lTnVtYmVyU291cmNlKTsKICAgICBwdW1wVG9rZW5pemVySWZQb3Nz
aWJsZShGb3JjZVN5bmNocm9ub3VzKTsKLSAgICAKKworI2lmIEVOQUJMRShUSFJFQURFRF9IVE1M
X1BBUlNFUikKKyAgICBpZiAoIWluUHVtcFNlc3Npb24oKSAmJiBtX2hhdmVCYWNrZ3JvdW5kUGFy
c2VyKSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiB0aGUgdG9rZW5pemVyIGlzIGluIHRoZSBzYW1l
IHN0YXRlIGFzIHdoZW4gd2Ugc3RhcnRlZCB0aGlzIGZ1bmN0aW9uLAorICAgICAgICAvLyB0aGVu
IHdlIGhhdmVuJ3QgbmVjZXNzYXJpbHkgZmFpbGVkIG91ciBzcGVjdWxhdGlvbi4KKyAgICAgICAg
ZGlkRmFpbFNwZWN1bGF0aW9uKG1fdG9rZW4ucmVsZWFzZSgpLCBtX3Rva2VuaXplci5yZWxlYXNl
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisKICAgICBpZiAoaXNXYWl0aW5n
Rm9yU2NyaXB0cygpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBkb2N1bWVudC53cml0ZSgpIG91
dHB1dCB3aXRoIGEgc2VwYXJhdGUgcHJlbG9hZCBzY2FubmVyIGFzCiAgICAgICAgIC8vIHRoZSBt
YWluIHNjYW5uZXIgY2FuJ3QgZGVhbCB3aXRoIGluc2VydGlvbnMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDc1NGY4MWUwMzdmMmZj
ZWNhYjA5MDMyYzM3YTJjNjRhZWRmNzQ2OWUuLmE4M2IyOWM3ZThlM2JjMzU1YjZkMTExNTJhODI3
NTcyOTBkNjAzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxE
b2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1
bWVudFBhcnNlci5oCkBAIC0xMjQsNiArMTI0LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVEhS
RUFERURfSFRNTF9QQVJTRVIpCiAgICAgdm9pZCBzdGFydEJhY2tncm91bmRQYXJzZXIoKTsKICAg
ICB2b2lkIHN0b3BCYWNrZ3JvdW5kUGFyc2VyKCk7CisgICAgdm9pZCBkaWRGYWlsU3BlY3VsYXRp
b24oUGFzc093blB0cjxIVE1MVG9rZW4+LCBQYXNzT3duUHRyPEhUTUxUb2tlbml6ZXI+KTsKICAg
ICB2b2lkIHByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihQYXNzT3duUHRyPENvbXBh
Y3RIVE1MVG9rZW5TdHJlYW0+KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBjNzAxMTlkNzI0ZTNjZThiMGZhMDEzMjdh
MTI1ODEwYzA3NzBlN2M3Li42YjY0NDg3NGRhYWQzNDk5NThhY2VjYzc3ZmFmYzE5MTUwODYxZjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAK
QEAgLTM2NiwxMyArMzY2LDE1IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVl
KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgZWxzZQogICAgICAgICBwcm9jZXNzVG9rZW4o
dG9rZW4pOwogCi0gICAgYm9vbCBpbkZvcmVpZ25Db250ZW50ID0gIW1fdHJlZS5pc0VtcHR5KCkK
LSAgICAgICAgJiYgIW1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmlzSW5IVE1MTmFtZXNwYWNl
KCkKLSAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTEludGVncmF0aW9uUG9pbnQo
bV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSkKLSAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6
OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSk7
CisgICAgaWYgKG1fcGFyc2VyLT50b2tlbml6ZXIoKSkgeworICAgICAgICBib29sIGluRm9yZWln
bkNvbnRlbnQgPSAhbV90cmVlLmlzRW1wdHkoKQorICAgICAgICAgICAgJiYgIW1fdHJlZS5jdXJy
ZW50U3RhY2tJdGVtKCktPmlzSW5IVE1MTmFtZXNwYWNlKCkKKyAgICAgICAgICAgICYmICFIVE1M
RWxlbWVudFN0YWNrOjppc0hUTUxJbnRlZ3JhdGlvblBvaW50KG1fdHJlZS5jdXJyZW50U3RhY2tJ
dGVtKCkpCisgICAgICAgICAgICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50
ZWdyYXRpb25Qb2ludChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpKTsKIAotICAgIG1fcGFyc2Vy
LT50b2tlbml6ZXIoKS0+c2V0Rm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQobV9pbnNlcnRp
b25Nb2RlID09IFRleHRNb2RlIHx8IGluRm9yZWlnbkNvbnRlbnQpOwotICAgIG1fcGFyc2VyLT50
b2tlbml6ZXIoKS0+c2V0U2hvdWxkQWxsb3dDREFUQShpbkZvcmVpZ25Db250ZW50KTsKKyAgICAg
ICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVu
dChtX2luc2VydGlvbk1vZGUgPT0gVGV4dE1vZGUgfHwgaW5Gb3JlaWduQ29udGVudCk7CisgICAg
ICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U2hvdWxkQWxsb3dDREFUQShpbkZvcmVpZ25D
b250ZW50KTsKKyAgICB9CiAKICAgICBtX3RyZWUuZXhlY3V0ZVF1ZXVlZFRhc2tzKCk7CiAgICAg
Ly8gV2UgbWlnaHQgYmUgZGV0YWNoZWQgbm93LgpAQCAtNzM5LDcgKzc0MSw4IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0
b2tlbikKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBwbGFpbnRleHRUYWcpIHsKICAgICAgICAg
cHJvY2Vzc0Zha2VQRW5kVGFnSWZQSW5CdXR0b25TY29wZSgpOwogICAgICAgICBtX3RyZWUuaW5z
ZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwotICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNl
dFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOworICAgICAgICBpZiAo
bV9wYXJzZXItPnRva2VuaXplcigpKQorICAgICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigp
LT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBidXR0b25UYWcpIHsKQEAg
LTg0OSw3ICs4NTIsOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9y
SW5Cb2R5KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiAgICAgaWYgKHRva2VuLT5uYW1lKCkgPT0g
dGV4dGFyZWFUYWcpIHsKICAgICAgICAgbV90cmVlLmluc2VydEhUTUxFbGVtZW50KHRva2VuKTsK
ICAgICAgICAgbV9zaG91bGRTa2lwTGVhZGluZ05ld2xpbmUgPSB0cnVlOwotICAgICAgICBtX3Bh
cnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3Rh
dGUpOworICAgICAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKQorICAgICAgICAgICAgbV9w
YXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQVN0
YXRlKTsKICAgICAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7
CiAgICAgICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwogICAgICAgICBzZXRJbnNlcnRpb25Nb2Rl
KFRleHRNb2RlKTsKQEAgLTIxNTUsMTIgKzIxNTksMTQgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgICAgICAgICBt
X3NjcmlwdFRvUHJvY2Vzcy0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIHNldEluc2Vy
dGlvbk1vZGUobV9vcmlnaW5hbEluc2VydGlvbk1vZGUpOwogCi0gICAgICAgICAgICAvLyBUaGlz
IHRva2VuIHdpbGwgbm90IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSB0b2tlbml6ZXIgaWYgYQot
ICAgICAgICAgICAgLy8gc2VsZi1jbG9zaW5nIHNjcmlwdCB0YWcgd2FzIGVuY291bnRlcmVkIGFu
ZCBwcmUtSFRNTDUgcGFyc2VyCi0gICAgICAgICAgICAvLyBxdWlya3MgYXJlIGVuYWJsZWQuIFdl
IG11c3Qgc2V0IHRoZSB0b2tlbml6ZXIncyBzdGF0ZSB0bwotICAgICAgICAgICAgLy8gRGF0YVN0
YXRlIGV4cGxpY2l0bHkgaWYgdGhlIHRva2VuaXplciBkaWRuJ3QgaGF2ZSBhIGNoYW5jZSB0by4K
LSAgICAgICAgICAgIEFTU0VSVChtX3BhcnNlci0+dG9rZW5pemVyKCktPnN0YXRlKCkgPT0gSFRN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUgfHwgbV9vcHRpb25zLnVzZVByZUhUTUw1UGFyc2Vy
UXVpcmtzIHx8IG1fb3B0aW9ucy51c2VUaHJlYWRpbmcpOwotICAgICAgICAgICAgbV9wYXJzZXIt
PnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Cisg
ICAgICAgICAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKSB7CisgICAgICAgICAgICAgICAg
Ly8gVGhpcyB0b2tlbiB3aWxsIG5vdCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGUgdG9rZW5pemVy
IGlmIGEKKyAgICAgICAgICAgICAgICAvLyBzZWxmLWNsb3Npbmcgc2NyaXB0IHRhZyB3YXMgZW5j
b3VudGVyZWQgYW5kIHByZS1IVE1MNSBwYXJzZXIKKyAgICAgICAgICAgICAgICAvLyBxdWlya3Mg
YXJlIGVuYWJsZWQuIFdlIG11c3Qgc2V0IHRoZSB0b2tlbml6ZXIncyBzdGF0ZSB0bworICAgICAg
ICAgICAgICAgIC8vIERhdGFTdGF0ZSBleHBsaWNpdGx5IGlmIHRoZSB0b2tlbml6ZXIgZGlkbid0
IGhhdmUgYSBjaGFuY2UgdG8uCisgICAgICAgICAgICAgICAgQVNTRVJUKG1fcGFyc2VyLT50b2tl
bml6ZXIoKS0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSB8fCBtX29w
dGlvbnMudXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgfHwgbV9vcHRpb25zLnVzZVRocmVhZGluZyk7
CisgICAgICAgICAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgbV90cmVlLm9wZW5FbGVtZW50cygpLT5wb3AoKTsKQEAg
LTI2OTgsNyArMjcwNCw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1JD
REFUQVN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2Vu
LT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0
SFRNTEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUo
SFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CisgICAgaWYgKG1fcGFyc2VyLT50b2tl
bml6ZXIoKSkKKyAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9r
ZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9
IG1faW5zZXJ0aW9uTW9kZTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKFRleHRNb2RlKTsKIH0KQEAg
LTI3MDcsNyArMjcxNCw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jh
d1RleHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tl
bi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2Vy
dEhUTUxFbGVtZW50KHRva2VuKTsKLSAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRl
KEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlKTsKKyAgICBpZiAobV9wYXJzZXItPnRv
a2VuaXplcigpKQorICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxU
b2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9k
ZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICBzZXRJbnNlcnRpb25Nb2RlKFRleHRNb2RlKTsKIH0K
QEAgLTI3MTYsNyArMjcyNCw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU2NyaXB0
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4tPnR5
cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRTY3Jp
cHRFbGVtZW50KHRva2VuKTsKLSAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhU
TUxUb2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRlKTsKKyAgICBpZiAobV9wYXJzZXItPnRv
a2VuaXplcigpKQorICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxU
b2tlbml6ZXJTdGF0ZTo6U2NyaXB0RGF0YVN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9u
TW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKIAogICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IG1f
cGFyc2VyLT50ZXh0UG9zaXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IGEwNzk3YjkzYWU4ZTVkMjJiNjk2YzZlZDRl
YmZiNTIyOTgxNmU5MGIuLjc5NmM3ZWMwNjBlZWU0ZWRmMzMwMDNkM2MwYTQ1YTkyM2MyZWRkZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2Vy
LmNwcApAQCAtMzgsNyArMzgsOSBAQCBUZXh0RG9jdW1lbnRQYXJzZXI6OlRleHREb2N1bWVudFBh
cnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTERvY3VtZW50UGFyc2VyKGRv
Y3VtZW50LCBmYWxzZSkKICAgICAsIG1faGF2ZUluc2VydGVkRmFrZVByZUVsZW1lbnQoZmFsc2Up
CiB7Ci0gICAgdG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5U
RVhUU3RhdGUpOworICAgIC8vIEZJWE1FOiBJZiB3ZSdyZSB1c2luZyB0aHJlYWRpbmcsIHdlIG5l
ZWQgdG8gdGVsbCB0aGUgQmFja2dyb3VuZEhUTUxQYXJzZXIgdG8gdXNlIFBMQUlOVEVYVFN0YXRl
LgorICAgIGlmICh0b2tlbml6ZXIoKSkKKyAgICAgICAgdG9rZW5pemVyKCktPnNldFN0YXRlKEhU
TUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogfQogCiBUZXh0RG9jdW1lbnRQYXJz
ZXI6On5UZXh0RG9jdW1lbnRQYXJzZXIoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185570</attachid>
            <date>2013-01-30 14:18:18 -0800</date>
            <delta_ts>2013-01-30 14:42:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107764-20130130141503.patch</filename>
            <type>text/plain</type>
            <size>13432</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZkNTNlNWYwZTljNzg5
YjQ0Zjc5ZDM0NzFmMjQzY2MxOTk0NjBlNi4uZWNhODFmMzIxZTcxOTEwODgwZmRkNTk2MjRiMTQz
OTVkM2FlNmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTMwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSFRNTERvY3VtZW50UGFyc2Vy
OjppbnNlcnQgc2hvdWxkIGJlIGF3YXJlIG9mIHRocmVhZGVkIHBhcnNpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzc2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5j
cmVtZW50YWwgc3RlcCB0b3dhcmRzIHJlY292ZXJpbmcgZnJvbQorICAgICAgICBkb2N1bWVudC53
cml0ZSBpbnZhbGlkYXRpbmcgb3VyIHNwZWN1bGF0aXZlIHBhcnNpbmcgYnVmZmVyLiBUaGUKKyAg
ICAgICAgYXBwcm9hY2ggSSd2ZSB0YWtlbiBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHRyYW5z
ZmVyIHRoZQorICAgICAgICBIVE1MRG9jdW1lbnRQYXJzZXIncyBIVE1MVG9rZW5pemVyIGFuZCBI
VE1MVG9rZW4gdG8gdGhlIGJhY2tncm91bmQKKyAgICAgICAgdGhyZWFkLiBUbyBtYWtlIHRoYXQg
cG9zc2libGUsIEkndmUgdGF1Z2h0IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIgaG93CisgICAgICAg
IHRvIG9wZXJhdGUgd2l0aG91dCBhIHRva2VuaXplciBvciBhIHRva2VuLgorCisgICAgICAgIE5v
dCBoYXZpbmcgYSB0b2tlbml6ZXIgb3IgYSB0b2tlbiB3aGlsZSBwYXJzaW5nIGluIHRoZSBiYWNr
Z3JvdW5kIGFsc28KKyAgICAgICAgaGVscHMgdXMgYXZvaWQgYWNjaWRlbnRpYWxseSBmZWVkaW5n
IGlucHV0IHRvIHRoZSBtYWluIHRocmVhZCdzCisgICAgICAgIHRva2VuaXplciB3aGVuIHdlJ3Jl
IHN1cHBvc2VkIHRvIGZlZWQgaXQgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorCisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1bGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVj
dXRpb24pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAg
ICAgICAoSFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJl
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1
Y3RUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0
VGFnRm9ySW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vz
c0VuZFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5l
cmljUkNEQVRBU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpw
cm9jZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJl
ZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
VGV4dERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBh
cnNlcjo6VGV4dERvY3VtZW50UGFyc2VyKToKKwogMjAxMy0wMS0yOSAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVBsYXllclByaXZhdGVRVEtpdCBjbGFp
bXMgaXQgc3VwcG9ydHMgYXBwbGljYXRpb24veC1kaXNrY29weSwgYnJlYWtpbmcgZG93bmxvYWRz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5j
cHAKaW5kZXggNWI4YmUyZjc2YTJkMDJkNWFiNDNkMTMyYTBlN2RhMDJjZGFiNWZhNy4uYzAwMDc2
NjA4Yzk5NzQ2ZTNmNThjMjFhMTEzMjZjZTc0ZDIwMzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC03Nyw4ICs3Nyw4IEBA
IHN0YXRpYyBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4
dEVsZW1lbnQoRWxlbWVudCogY29udGV4CiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVu
dFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKICAgICA6
IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAsIG1fb3B0aW9ucyhkb2N1
bWVudCkKLSAgICAsIG1fdG9rZW4oYWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCi0gICAgLCBtX3Rv
a2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKSkKKyAgICAsIG1fdG9rZW4o
bV9vcHRpb25zLnVzZVRocmVhZGluZyA/IG51bGxwdHIgOiBhZG9wdFB0cihuZXcgSFRNTFRva2Vu
KSkKKyAgICAsIG1fdG9rZW5pemVyKG1fb3B0aW9ucy51c2VUaHJlYWRpbmcgPyBudWxscHRyIDog
SFRNTFRva2VuaXplcjo6Y3JlYXRlKG1fb3B0aW9ucykpCiAgICAgLCBtX3NjcmlwdFJ1bm5lcihI
VE1MU2NyaXB0UnVubmVyOjpjcmVhdGUoZG9jdW1lbnQsIHRoaXMpKQogICAgICwgbV90cmVlQnVp
bGRlcihIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlzLCBkb2N1bWVudCwgcmVwb3J0RXJyb3Jz
LCBtX29wdGlvbnMpKQogICAgICwgbV9wYXJzZXJTY2hlZHVsZXIoSFRNTFBhcnNlclNjaGVkdWxl
cjo6Y3JlYXRlKHRoaXMpKQpAQCAtOTAsNiArOTAsNyBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhU
TUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9y
cwogICAgICwgbV9oYXZlQmFja2dyb3VuZFBhcnNlcihmYWxzZSkKICAgICAsIG1fcHVtcFNlc3Np
b25OZXN0aW5nTGV2ZWwoMCkKIHsKKyAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkgfHwg
KG1fdG9rZW4gJiYgbV90b2tlbml6ZXIpKTsKIH0KIAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJs
ZXMgc2hvdWxkIGJlIGdyb3VwZWQgaW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCkBA
IC0xMDgsNiArMTA5LDcgQEAgSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIo
RG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1lbnQqIGNvbnQKICAgICAsIG1faGF2ZUJh
Y2tncm91bmRQYXJzZXIoZmFsc2UpCiAgICAgLCBtX3B1bXBTZXNzaW9uTmVzdGluZ0xldmVsKDAp
CiB7CisgICAgQVNTRVJUKCFzaG91bGRVc2VUaHJlYWRpbmcoKSk7CiAgICAgYm9vbCByZXBvcnRF
cnJvcnMgPSBmYWxzZTsgLy8gRm9yIG5vdyBkb2N1bWVudCBmcmFnbWVudCBwYXJzaW5nIG5ldmVy
IHJlcG9ydHMgZXJyb3JzLgogICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZSh0b2tlbml6ZXJTdGF0
ZUZvckNvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50LCByZXBvcnRFcnJvcnMsIG1fb3B0aW9u
cykpOwogfQpAQCAtMjg0LDYgKzI4NiwxMSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlk
UmVjZWl2ZVRva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdAogICAg
IHByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcih0b2tlbnMpOwogfQogCit2b2lkIEhU
TUxEb2N1bWVudFBhcnNlcjo6ZGlkRmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2Vu
PiwgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPikKK3sKKyAgICAvLyBGSVhNRTogVGVsbCB0aGUg
YmFja2dyb3VuZCBwYXJzZXIgdG8gcmVzdW1lIHBhcnNpbmcgd2l0aCB0aGlzIHRva2VuIGFuZCB0
b2tlbml6ZXIuCit9CisKIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW5zRnJv
bUJhY2tncm91bmRQYXJzZXIoUGFzc093blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tl
bnMpCiB7CiAgICAgQVNTRVJUKHNob3VsZFVzZVRocmVhZGluZygpKTsKQEAgLTQ0NiwxMSArNDUz
LDI5IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3Ry
aW5nJiBzb3VyY2UpCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0
ZWQgeWV0LgogICAgIFJlZlB0cjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAK
KyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisgICAgaWYgKCFtX3Rva2VuaXplcikg
eworICAgICAgICBBU1NFUlQoIWluUHVtcFNlc3Npb24oKSk7CisgICAgICAgIEFTU0VSVChtX2hh
dmVCYWNrZ3JvdW5kUGFyc2VyIHx8IHdhc0NyZWF0ZWRCeVNjcmlwdCgpKTsKKyAgICAgICAgbV90
b2tlbiA9IGFkb3B0UHRyKG5ldyBIVE1MVG9rZW4pOworICAgICAgICBtX3Rva2VuaXplciA9IEhU
TUxUb2tlbml6ZXI6OmNyZWF0ZShtX29wdGlvbnMpOworICAgIH0KKyNlbmRpZgorCiAgICAgU2Vn
bWVudGVkU3RyaW5nIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZShzb3VyY2UpOwogICAgIGV4Y2x1
ZGVkTGluZU51bWJlclNvdXJjZS5zZXRFeGNsdWRlTGluZU51bWJlcnMoKTsKICAgICBtX2lucHV0
Lmluc2VydEF0Q3VycmVudEluc2VydGlvblBvaW50KGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZSk7
CiAgICAgcHVtcFRva2VuaXplcklmUG9zc2libGUoRm9yY2VTeW5jaHJvbm91cyk7Ci0gICAgCisK
KyNpZiBFTkFCTEUoVEhSRUFERURfSFRNTF9QQVJTRVIpCisgICAgaWYgKCFpblB1bXBTZXNzaW9u
KCkgJiYgbV9oYXZlQmFja2dyb3VuZFBhcnNlcikgeworICAgICAgICAvLyBGSVhNRTogSWYgdGhl
IHRva2VuaXplciBpcyBpbiB0aGUgc2FtZSBzdGF0ZSBhcyB3aGVuIHdlIHN0YXJ0ZWQgdGhpcyBm
dW5jdGlvbiwKKyAgICAgICAgLy8gdGhlbiB3ZSBoYXZlbid0IG5lY2Vzc2FyaWx5IGZhaWxlZCBv
dXIgc3BlY3VsYXRpb24uCisgICAgICAgIGRpZEZhaWxTcGVjdWxhdGlvbihtX3Rva2VuLnJlbGVh
c2UoKSwgbV90b2tlbml6ZXIucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNl
bmRpZgorCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAvLyBDaGVj
ayB0aGUgZG9jdW1lbnQud3JpdGUoKSBvdXRwdXQgd2l0aCBhIHNlcGFyYXRlIHByZWxvYWQgc2Nh
bm5lciBhcwogICAgICAgICAvLyB0aGUgbWFpbiBzY2FubmVyIGNhbid0IGRlYWwgd2l0aCBpbnNl
cnRpb25zLgpAQCAtNjA0LDYgKzYyOSwxNCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6Zmlu
aXNoKCkKICAgICAgICAgSFRNTFBhcnNlclRocmVhZDo6c2hhcmVkKCktPnBvc3RUYXNrKGJpbmQo
JkJhY2tncm91bmRIVE1MUGFyc2VyOjpmaW5pc2hQYXJ0aWFsLCBQYXJzZXJNYXA6OmlkZW50aWZp
ZXJGb3JQYXJzZXIodGhpcykpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoc2hv
dWxkVXNlVGhyZWFkaW5nKCkgJiYgIXdhc0NyZWF0ZWRCeVNjcmlwdCgpKSB7CisgICAgICAgIEFT
U0VSVCghbV90b2tlbml6ZXIgJiYgIW1fdG9rZW4pOworICAgICAgICAvLyBXZSdyZSBmaW5pc2hp
bmcgYmVmb3JlIHJlY2VpdmluZyBhbnkgZGF0YS4gUmF0aGVyIHRoYW4gYm9vdGluZyB1cAorICAg
ICAgICAvLyB0aGUgYmFja2dyb3VuZCBwYXJzZXIganVzdCB0byBzcGluIGl0IGRvd24sIHdlIGZp
bmlzaCBwYXJzaW5nCisgICAgICAgIC8vIHN5bmNocm9ub3VzbHkuCisgICAgICAgIG1fdG9rZW4g
PSBhZG9wdFB0cihuZXcgSFRNTFRva2VuKTsKKyAgICAgICAgbV90b2tlbml6ZXIgPSBIVE1MVG9r
ZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGF0dGVtcHRU
b0VuZCgpOwpAQCAtNjcwLDcgKzcwMyw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpyZXN1
bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogICAgIGlmIChzaG91bGRVc2VUaHJlYWRp
bmcoKSkgewogICAgICAgICB3aGlsZSAoIW1fcGVuZGluZ1Rva2Vucy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIHByb2Nlc3NUb2tlbnNGcm9tQmFja2dyb3VuZFBhcnNlcihtX3BlbmRpbmdUb2tl
bnMudGFrZUZpcnN0KCkpOwotICAgICAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkK
KyAgICAgICAgICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkgfHwgaXNTdG9wcGVkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNzU0
ZjgxZTAzN2YyZmNlY2FiMDkwMzJjMzdhMmM2NGFlZGY3NDY5ZS4uYTgzYjI5YzdlOGUzYmMzNTVi
NmQxMTE1MmE4Mjc1NzI5MGQ2MDMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShUSFJFQURFRF9IVE1MX1BBUlNFUikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBh
cnNlcigpOwogICAgIHZvaWQgc3RvcEJhY2tncm91bmRQYXJzZXIoKTsKKyAgICB2b2lkIGRpZEZh
aWxTcGVjdWxhdGlvbihQYXNzT3duUHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2Vu
aXplcj4pOwogICAgIHZvaWQgcHJvY2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NP
d25QdHI8Q29tcGFjdEhUTUxUb2tlblN0cmVhbT4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGM3MDExOWQ3MjRlM2Nl
OGIwZmEwMTMyN2ExMjU4MTBjMDc3MGU3YzcuLjZiNjQ0ODc0ZGFhZDM0OTk1OGFjZWNjNzdmYWZj
MTkxNTA4NjFmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcApAQCAtMzY2LDEzICszNjYsMTUgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNv
bnN0cnVjdFRyZWUoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICBlbHNlCiAgICAgICAgIHBy
b2Nlc3NUb2tlbih0b2tlbik7CiAKLSAgICBib29sIGluRm9yZWlnbkNvbnRlbnQgPSAhbV90cmVl
LmlzRW1wdHkoKQotICAgICAgICAmJiAhbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aXNJbkhU
TUxOYW1lc3BhY2UoKQotICAgICAgICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdy
YXRpb25Qb2ludChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpKQotICAgICAgICAmJiAhSFRNTEVs
ZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludChtX3RyZWUuY3VycmVudFN0
YWNrSXRlbSgpKTsKKyAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKSB7CisgICAgICAgIGJv
b2wgaW5Gb3JlaWduQ29udGVudCA9ICFtX3RyZWUuaXNFbXB0eSgpCisgICAgICAgICAgICAmJiAh
bV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aXNJbkhUTUxOYW1lc3BhY2UoKQorICAgICAgICAg
ICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1
cnJlbnRTdGFja0l0ZW0oKSkKKyAgICAgICAgICAgICYmICFIVE1MRWxlbWVudFN0YWNrOjppc01h
dGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkpOwogCi0g
ICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVu
dChtX2luc2VydGlvbk1vZGUgPT0gVGV4dE1vZGUgfHwgaW5Gb3JlaWduQ29udGVudCk7Ci0gICAg
bV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTaG91bGRBbGxvd0NEQVRBKGluRm9yZWlnbkNvbnRl
bnQpOworICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldEZvcmNlTnVsbENoYXJhY3Rl
clJlcGxhY2VtZW50KG1faW5zZXJ0aW9uTW9kZSA9PSBUZXh0TW9kZSB8fCBpbkZvcmVpZ25Db250
ZW50KTsKKyAgICAgICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTaG91bGRBbGxvd0NEQVRB
KGluRm9yZWlnbkNvbnRlbnQpOworICAgIH0KIAogICAgIG1fdHJlZS5leGVjdXRlUXVldWVkVGFz
a3MoKTsKICAgICAvLyBXZSBtaWdodCBiZSBkZXRhY2hlZCBub3cuCkBAIC03MzksNyArNzQxLDgg
QEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNI
VE1MVG9rZW4qIHRva2VuKQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IHBsYWludGV4dFRhZykg
ewogICAgICAgICBwcm9jZXNzRmFrZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAgICAgICAg
IG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7Ci0gICAgICAgIG1fcGFyc2VyLT50b2tl
bml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7Cisg
ICAgICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCisgICAgICAgICAgICBtX3BhcnNlci0+
dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGJ1dHRv
blRhZykgewpAQCAtODQ5LDcgKzg1Miw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICBpZiAodG9rZW4t
Pm5hbWUoKSA9PSB0ZXh0YXJlYVRhZykgewogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1l
bnQodG9rZW4pOwogICAgICAgICBtX3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IHRydWU7Ci0g
ICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRl
OjpSQ0RBVEFTdGF0ZSk7CisgICAgICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCisgICAg
ICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0
ZTo6UkNEQVRBU3RhdGUpOwogICAgICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5z
ZXJ0aW9uTW9kZTsKICAgICAgICAgbV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAgIHNldElu
c2VydGlvbk1vZGUoVGV4dE1vZGUpOwpAQCAtMjE1NSwxMiArMjE1OSwxNCBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAg
ICAgICAgICAgIG1fc2NyaXB0VG9Qcm9jZXNzLT5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAg
ICAgc2V0SW5zZXJ0aW9uTW9kZShtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSk7CiAKLSAgICAgICAg
ICAgIC8vIFRoaXMgdG9rZW4gd2lsbCBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRva2Vu
aXplciBpZiBhCi0gICAgICAgICAgICAvLyBzZWxmLWNsb3Npbmcgc2NyaXB0IHRhZyB3YXMgZW5j
b3VudGVyZWQgYW5kIHByZS1IVE1MNSBwYXJzZXIKLSAgICAgICAgICAgIC8vIHF1aXJrcyBhcmUg
ZW5hYmxlZC4gV2UgbXVzdCBzZXQgdGhlIHRva2VuaXplcidzIHN0YXRlIHRvCi0gICAgICAgICAg
ICAvLyBEYXRhU3RhdGUgZXhwbGljaXRseSBpZiB0aGUgdG9rZW5pemVyIGRpZG4ndCBoYXZlIGEg
Y2hhbmNlIHRvLgotICAgICAgICAgICAgQVNTRVJUKG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c3Rh
dGUoKSA9PSBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSB8fCBtX29wdGlvbnMudXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MgfHwgbV9vcHRpb25zLnVzZVRocmVhZGluZyk7Ci0gICAgICAgICAg
ICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0
YVN0YXRlKTsKKyAgICAgICAgICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIHRva2VuIHdpbGwgbm90IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRo
ZSB0b2tlbml6ZXIgaWYgYQorICAgICAgICAgICAgICAgIC8vIHNlbGYtY2xvc2luZyBzY3JpcHQg
dGFnIHdhcyBlbmNvdW50ZXJlZCBhbmQgcHJlLUhUTUw1IHBhcnNlcgorICAgICAgICAgICAgICAg
IC8vIHF1aXJrcyBhcmUgZW5hYmxlZC4gV2UgbXVzdCBzZXQgdGhlIHRva2VuaXplcidzIHN0YXRl
IHRvCisgICAgICAgICAgICAgICAgLy8gRGF0YVN0YXRlIGV4cGxpY2l0bHkgaWYgdGhlIHRva2Vu
aXplciBkaWRuJ3QgaGF2ZSBhIGNoYW5jZSB0by4KKyAgICAgICAgICAgICAgICBBU1NFUlQobV9w
YXJzZXItPnRva2VuaXplcigpLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0
YXRlIHx8IG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcyB8fCBtX29wdGlvbnMudXNl
VGhyZWFkaW5nKTsKKyAgICAgICAgICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0
YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCkt
PnBvcCgpOwpAQCAtMjY5OCw3ICsyNzA0LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NHZW5lcmljUkNEQVRBU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBB
U1NFUlQodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1f
dHJlZS5pbnNlcnRIVE1MRWxlbWVudCh0b2tlbik7Ci0gICAgbV9wYXJzZXItPnRva2VuaXplcigp
LT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyU3RhdGU6OlJDREFUQVN0YXRlKTsKKyAgICBpZiAobV9w
YXJzZXItPnRva2VuaXplcigpKQorICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0
YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNl
cnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1v
ZGUpOwogfQpAQCAtMjcwNyw3ICsyNzE0LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAg
QVNTRVJUKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBt
X3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIo
KS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOworICAgIGlmICht
X3BhcnNlci0+dG9rZW5pemVyKCkpCisgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0
U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJ
bnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogICAgIHNldEluc2VydGlvbk1vZGUoVGV4
dE1vZGUpOwogfQpAQCAtMjcxNiw3ICsyNzI0LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NTY3JpcHRTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIEFTU0VS
VCh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVl
Lmluc2VydFNjcmlwdEVsZW1lbnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhU3RhdGUpOworICAgIGlmICht
X3BhcnNlci0+dG9rZW5pemVyKCkpCisgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0
U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG1fb3JpZ2lu
YWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwogCiAgICAgVGV4dFBvc2l0aW9uIHBv
c2l0aW9uID0gbV9wYXJzZXItPnRleHRQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKaW5kZXggYTA3OTdiOTNhZThlNWQy
MmI2OTZjNmVkNGViZmI1MjI5ODE2ZTkwYi4uNzk2YzdlYzA2MGVlZTRlZGYzMzAwM2QzYzBhNDVh
OTIzYzJlZGRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERv
Y3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9j
dW1lbnRQYXJzZXIuY3BwCkBAIC0zOCw3ICszOCw5IEBAIFRleHREb2N1bWVudFBhcnNlcjo6VGV4
dERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRG9jdW1l
bnRQYXJzZXIoZG9jdW1lbnQsIGZhbHNlKQogICAgICwgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxl
bWVudChmYWxzZSkKIHsKLSAgICB0b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0
YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIHVzaW5nIHRocmVh
ZGluZywgd2UgbmVlZCB0byB0ZWxsIHRoZSBCYWNrZ3JvdW5kSFRNTFBhcnNlciB0byB1c2UgUExB
SU5URVhUU3RhdGUuCisgICAgaWYgKHRva2VuaXplcigpKQorICAgICAgICB0b2tlbml6ZXIoKS0+
c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CiB9CiAKIFRleHRE
b2N1bWVudFBhcnNlcjo6flRleHREb2N1bWVudFBhcnNlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185581</attachid>
            <date>2013-01-30 14:43:00 -0800</date>
            <delta_ts>2013-01-30 15:17:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-107764-20130130143945.patch</filename>
            <type>text/plain</type>
            <size>13582</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZkNTNlNWYwZTljNzg5
YjQ0Zjc5ZDM0NzFmMjQzY2MxOTk0NjBlNi4uYTAxZTBiZDNmMDkyMGU0OGRjYWExZGJlNzcyNzU3
N2NkNmZhMjc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTMwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSFRNTERvY3VtZW50UGFyc2Vy
OjppbnNlcnQgc2hvdWxkIGJlIGF3YXJlIG9mIHRocmVhZGVkIHBhcnNpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzc2NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5jcmVt
ZW50YWwgc3RlcCB0b3dhcmRzIHJlY292ZXJpbmcgZnJvbQorICAgICAgICBkb2N1bWVudC53cml0
ZSBpbnZhbGlkYXRpbmcgb3VyIHNwZWN1bGF0aXZlIHBhcnNpbmcgYnVmZmVyLiBUaGUKKyAgICAg
ICAgYXBwcm9hY2ggSSd2ZSB0YWtlbiBpcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHRyYW5zZmVy
IHRoZQorICAgICAgICBIVE1MRG9jdW1lbnRQYXJzZXIncyBIVE1MVG9rZW5pemVyIGFuZCBIVE1M
VG9rZW4gdG8gdGhlIGJhY2tncm91bmQKKyAgICAgICAgdGhyZWFkLiBUbyBtYWtlIHRoYXQgcG9z
c2libGUsIEkndmUgdGF1Z2h0IHRoZSBIVE1MRG9jdW1lbnRQYXJzZXIgaG93CisgICAgICAgIHRv
IG9wZXJhdGUgd2l0aG91dCBhIHRva2VuaXplciBvciBhIHRva2VuLgorCisgICAgICAgIE5vdCBo
YXZpbmcgYSB0b2tlbml6ZXIgb3IgYSB0b2tlbiB3aGlsZSBwYXJzaW5nIGluIHRoZSBiYWNrZ3Jv
dW5kIGFsc28KKyAgICAgICAgaGVscHMgdXMgYXZvaWQgYWNjaWRlbnRpYWxseSBmZWVkaW5nIGlu
cHV0IHRvIHRoZSBtYWluIHRocmVhZCdzCisgICAgICAgIHRva2VuaXplciB3aGVuIHdlJ3JlIHN1
cHBvc2VkIHRvIGZlZWQgaXQgdG8gdGhlIGJhY2tncm91bmQgdGhyZWFkLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggc2hvdWxkbid0IGhhdmUgYW55IGJlaGF2aW9yIGNoYW5nZSAob3RoZXIgdGhhbiBw
b3NzaWJseQorICAgICAgICBmaXhpbmcgYSBjcmFzaCBpbiBmYXN0L3BhcnNlciB3aGVuIHRocmVh
ZGluZyBwYXJzaW5nIGlzIGVuYWJsZWQpLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERv
Y3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6
SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNl
cjo6ZGlkRmFpbFNwZWN1bGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50
UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24pOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoSFRNTERvY3VtZW50UGFy
c2VyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0VuZFRhZyk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRUYWcpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzR2VuZXJpY1Jhd1RleHRT
dGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3Jp
cHRTdGFydFRhZyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3VtZW50UGFy
c2VyKToKKwogMjAxMy0wMS0yOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNZWRpYVBsYXllclByaXZhdGVRVEtpdCBjbGFpbXMgaXQgc3VwcG9ydHMgYXBwbGlj
YXRpb24veC1kaXNrY29weSwgYnJlYWtpbmcgZG93bmxvYWRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggNWI4YmUyZjc2YTJk
MDJkNWFiNDNkMTMyYTBlN2RhMDJjZGFiNWZhNy4uYzAwMDc2NjA4Yzk5NzQ2ZTNmNThjMjFhMTEz
MjZjZTc0ZDIwMzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC03Nyw4ICs3Nyw4IEBAIHN0YXRpYyBIVE1MVG9rZW5pemVy
U3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29u
dGV4CiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1MRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycykKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBh
cnNlcihkb2N1bWVudCkKICAgICAsIG1fb3B0aW9ucyhkb2N1bWVudCkKLSAgICAsIG1fdG9rZW4o
YWRvcHRQdHIobmV3IEhUTUxUb2tlbikpCi0gICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVy
OjpjcmVhdGUobV9vcHRpb25zKSkKKyAgICAsIG1fdG9rZW4obV9vcHRpb25zLnVzZVRocmVhZGlu
ZyA/IG51bGxwdHIgOiBhZG9wdFB0cihuZXcgSFRNTFRva2VuKSkKKyAgICAsIG1fdG9rZW5pemVy
KG1fb3B0aW9ucy51c2VUaHJlYWRpbmcgPyBudWxscHRyIDogSFRNTFRva2VuaXplcjo6Y3JlYXRl
KG1fb3B0aW9ucykpCiAgICAgLCBtX3NjcmlwdFJ1bm5lcihIVE1MU2NyaXB0UnVubmVyOjpjcmVh
dGUoZG9jdW1lbnQsIHRoaXMpKQogICAgICwgbV90cmVlQnVpbGRlcihIVE1MVHJlZUJ1aWxkZXI6
OmNyZWF0ZSh0aGlzLCBkb2N1bWVudCwgcmVwb3J0RXJyb3JzLCBtX29wdGlvbnMpKQogICAgICwg
bV9wYXJzZXJTY2hlZHVsZXIoSFRNTFBhcnNlclNjaGVkdWxlcjo6Y3JlYXRlKHRoaXMpKQpAQCAt
OTAsNiArOTAsNyBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihIVE1M
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycwogICAgICwgbV9oYXZlQmFja2dy
b3VuZFBhcnNlcihmYWxzZSkKICAgICAsIG1fcHVtcFNlc3Npb25OZXN0aW5nTGV2ZWwoMCkKIHsK
KyAgICBBU1NFUlQoc2hvdWxkVXNlVGhyZWFkaW5nKCkgfHwgKG1fdG9rZW4gJiYgbV90b2tlbml6
ZXIpKTsKIH0KIAogLy8gRklYTUU6IE1lbWJlciB2YXJpYWJsZXMgc2hvdWxkIGJlIGdyb3VwZWQg
aW50byBzZWxmLWluaXRpYWxpemluZyBzdHJ1Y3RzIHRvCkBAIC0xMDgsNiArMTA5LDcgQEAgSFRN
TERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJh
Z21lbnQsIEVsZW1lbnQqIGNvbnQKICAgICAsIG1faGF2ZUJhY2tncm91bmRQYXJzZXIoZmFsc2Up
CiAgICAgLCBtX3B1bXBTZXNzaW9uTmVzdGluZ0xldmVsKDApCiB7CisgICAgQVNTRVJUKCFzaG91
bGRVc2VUaHJlYWRpbmcoKSk7CiAgICAgYm9vbCByZXBvcnRFcnJvcnMgPSBmYWxzZTsgLy8gRm9y
IG5vdyBkb2N1bWVudCBmcmFnbWVudCBwYXJzaW5nIG5ldmVyIHJlcG9ydHMgZXJyb3JzLgogICAg
IG1fdG9rZW5pemVyLT5zZXRTdGF0ZSh0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50KGNv
bnRleHRFbGVtZW50LCByZXBvcnRFcnJvcnMsIG1fb3B0aW9ucykpOwogfQpAQCAtMjg0LDYgKzI4
NiwxMSBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkUmVjZWl2ZVRva2Vuc0Zyb21CYWNr
Z3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdAogICAgIHByb2Nlc3NUb2tlbnNGcm9tQmFj
a2dyb3VuZFBhcnNlcih0b2tlbnMpOwogfQogCit2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZGlk
RmFpbFNwZWN1bGF0aW9uKFBhc3NPd25QdHI8SFRNTFRva2VuPiwgUGFzc093blB0cjxIVE1MVG9r
ZW5pemVyPikKK3sKKyAgICAvLyBGSVhNRTogVGVsbCB0aGUgYmFja2dyb3VuZCBwYXJzZXIgdG8g
cmVzdW1lIHBhcnNpbmcgd2l0aCB0aGlzIHRva2VuIGFuZCB0b2tlbml6ZXIuCit9CisKIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpwcm9jZXNzVG9rZW5zRnJvbUJhY2tncm91bmRQYXJzZXIoUGFz
c093blB0cjxDb21wYWN0SFRNTFRva2VuU3RyZWFtPiB0b2tlbnMpCiB7CiAgICAgQVNTRVJUKHNo
b3VsZFVzZVRocmVhZGluZygpKTsKQEAgLTQ0NiwxMSArNDUzLDI5IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgLy8g
YnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgogICAgIFJlZlB0cjxI
VE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QodGhpcyk7CiAKKyNpZiBFTkFCTEUoVEhSRUFERURf
SFRNTF9QQVJTRVIpCisgICAgaWYgKCFtX3Rva2VuaXplcikgeworICAgICAgICBBU1NFUlQoIWlu
UHVtcFNlc3Npb24oKSk7CisgICAgICAgIEFTU0VSVChtX2hhdmVCYWNrZ3JvdW5kUGFyc2VyIHx8
IHdhc0NyZWF0ZWRCeVNjcmlwdCgpKTsKKyAgICAgICAgbV90b2tlbiA9IGFkb3B0UHRyKG5ldyBI
VE1MVG9rZW4pOworICAgICAgICBtX3Rva2VuaXplciA9IEhUTUxUb2tlbml6ZXI6OmNyZWF0ZSht
X29wdGlvbnMpOworICAgIH0KKyNlbmRpZgorCiAgICAgU2VnbWVudGVkU3RyaW5nIGV4Y2x1ZGVk
TGluZU51bWJlclNvdXJjZShzb3VyY2UpOwogICAgIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZS5z
ZXRFeGNsdWRlTGluZU51bWJlcnMoKTsKICAgICBtX2lucHV0Lmluc2VydEF0Q3VycmVudEluc2Vy
dGlvblBvaW50KGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZSk7CiAgICAgcHVtcFRva2VuaXplcklm
UG9zc2libGUoRm9yY2VTeW5jaHJvbm91cyk7Ci0gICAgCisKKyNpZiBFTkFCTEUoVEhSRUFERURf
SFRNTF9QQVJTRVIpCisgICAgaWYgKCFpblB1bXBTZXNzaW9uKCkgJiYgbV9oYXZlQmFja2dyb3Vu
ZFBhcnNlcikgeworICAgICAgICAvLyBGSVhNRTogSWYgdGhlIHRva2VuaXplciBpcyBpbiB0aGUg
c2FtZSBzdGF0ZSBhcyB3aGVuIHdlIHN0YXJ0ZWQgdGhpcyBmdW5jdGlvbiwKKyAgICAgICAgLy8g
dGhlbiB3ZSBoYXZlbid0IG5lY2Vzc2FyaWx5IGZhaWxlZCBvdXIgc3BlY3VsYXRpb24uCisgICAg
ICAgIGRpZEZhaWxTcGVjdWxhdGlvbihtX3Rva2VuLnJlbGVhc2UoKSwgbV90b2tlbml6ZXIucmVs
ZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKGlzV2Fp
dGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICAvLyBDaGVjayB0aGUgZG9jdW1lbnQud3JpdGUo
KSBvdXRwdXQgd2l0aCBhIHNlcGFyYXRlIHByZWxvYWQgc2Nhbm5lciBhcwogICAgICAgICAvLyB0
aGUgbWFpbiBzY2FubmVyIGNhbid0IGRlYWwgd2l0aCBpbnNlcnRpb25zLgpAQCAtNjA0LDYgKzYy
OSwxNCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6ZmluaXNoKCkKICAgICAgICAgSFRNTFBh
cnNlclRocmVhZDo6c2hhcmVkKCktPnBvc3RUYXNrKGJpbmQoJkJhY2tncm91bmRIVE1MUGFyc2Vy
OjpmaW5pc2hQYXJ0aWFsLCBQYXJzZXJNYXA6OmlkZW50aWZpZXJGb3JQYXJzZXIodGhpcykpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAoc2hvdWxkVXNlVGhyZWFkaW5nKCkgJiYg
IXdhc0NyZWF0ZWRCeVNjcmlwdCgpKSB7CisgICAgICAgIEFTU0VSVCghbV90b2tlbml6ZXIgJiYg
IW1fdG9rZW4pOworICAgICAgICAvLyBXZSdyZSBmaW5pc2hpbmcgYmVmb3JlIHJlY2VpdmluZyBh
bnkgZGF0YS4gUmF0aGVyIHRoYW4gYm9vdGluZyB1cAorICAgICAgICAvLyB0aGUgYmFja2dyb3Vu
ZCBwYXJzZXIganVzdCB0byBzcGluIGl0IGRvd24sIHdlIGZpbmlzaCBwYXJzaW5nCisgICAgICAg
IC8vIHN5bmNocm9ub3VzbHkuCisgICAgICAgIG1fdG9rZW4gPSBhZG9wdFB0cihuZXcgSFRNTFRv
a2VuKTsKKyAgICAgICAgbV90b2tlbml6ZXIgPSBIVE1MVG9rZW5pemVyOjpjcmVhdGUobV9vcHRp
b25zKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIGF0dGVtcHRUb0VuZCgpOwpAQCAtNjcwLDcgKzcw
Myw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRF
eGVjdXRpb24oKQogICAgIGlmIChzaG91bGRVc2VUaHJlYWRpbmcoKSkgewogICAgICAgICB3aGls
ZSAoIW1fcGVuZGluZ1Rva2Vucy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHByb2Nlc3NUb2tl
bnNGcm9tQmFja2dyb3VuZFBhcnNlcihtX3BlbmRpbmdUb2tlbnMudGFrZUZpcnN0KCkpOwotICAg
ICAgICAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkKKyAgICAgICAgICAgIGlmIChpc1dh
aXRpbmdGb3JTY3JpcHRzKCkgfHwgaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKaW5kZXggNzU0ZjgxZTAzN2YyZmNlY2FiMDkwMzJj
MzdhMmM2NGFlZGY3NDY5ZS4uYTgzYjI5YzdlOGUzYmMzNTViNmQxMTE1MmE4Mjc1NzI5MGQ2MDMy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShUSFJFQURFRF9IVE1M
X1BBUlNFUikKICAgICB2b2lkIHN0YXJ0QmFja2dyb3VuZFBhcnNlcigpOwogICAgIHZvaWQgc3Rv
cEJhY2tncm91bmRQYXJzZXIoKTsKKyAgICB2b2lkIGRpZEZhaWxTcGVjdWxhdGlvbihQYXNzT3du
UHRyPEhUTUxUb2tlbj4sIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4pOwogICAgIHZvaWQgcHJv
Y2Vzc1Rva2Vuc0Zyb21CYWNrZ3JvdW5kUGFyc2VyKFBhc3NPd25QdHI8Q29tcGFjdEhUTUxUb2tl
blN0cmVhbT4pOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IGM3MDExOWQ3MjRlM2NlOGIwZmEwMTMyN2ExMjU4MTBjMDc3
MGU3YzcuLjZiNjQ0ODc0ZGFhZDM0OTk1OGFjZWNjNzdmYWZjMTkxNTA4NjFmNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMzY2LDEz
ICszNjYsMTUgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUoQXRvbWljSFRN
TFRva2VuKiB0b2tlbikKICAgICBlbHNlCiAgICAgICAgIHByb2Nlc3NUb2tlbih0b2tlbik7CiAK
LSAgICBib29sIGluRm9yZWlnbkNvbnRlbnQgPSAhbV90cmVlLmlzRW1wdHkoKQotICAgICAgICAm
JiAhbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aXNJbkhUTUxOYW1lc3BhY2UoKQotICAgICAg
ICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2ludChtX3RyZWUuY3Vy
cmVudFN0YWNrSXRlbSgpKQotICAgICAgICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxU
ZXh0SW50ZWdyYXRpb25Qb2ludChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpKTsKKyAgICBpZiAo
bV9wYXJzZXItPnRva2VuaXplcigpKSB7CisgICAgICAgIGJvb2wgaW5Gb3JlaWduQ29udGVudCA9
ICFtX3RyZWUuaXNFbXB0eSgpCisgICAgICAgICAgICAmJiAhbV90cmVlLmN1cnJlbnRTdGFja0l0
ZW0oKS0+aXNJbkhUTUxOYW1lc3BhY2UoKQorICAgICAgICAgICAgJiYgIUhUTUxFbGVtZW50U3Rh
Y2s6OmlzSFRNTEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSkKKyAg
ICAgICAgICAgICYmICFIVE1MRWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBv
aW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkpOwogCi0gICAgbV9wYXJzZXItPnRva2VuaXpl
cigpLT5zZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudChtX2luc2VydGlvbk1vZGUgPT0g
VGV4dE1vZGUgfHwgaW5Gb3JlaWduQ29udGVudCk7Ci0gICAgbV9wYXJzZXItPnRva2VuaXplcigp
LT5zZXRTaG91bGRBbGxvd0NEQVRBKGluRm9yZWlnbkNvbnRlbnQpOworICAgICAgICBtX3BhcnNl
ci0+dG9rZW5pemVyKCktPnNldEZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50KG1faW5zZXJ0
aW9uTW9kZSA9PSBUZXh0TW9kZSB8fCBpbkZvcmVpZ25Db250ZW50KTsKKyAgICAgICAgbV9wYXJz
ZXItPnRva2VuaXplcigpLT5zZXRTaG91bGRBbGxvd0NEQVRBKGluRm9yZWlnbkNvbnRlbnQpOwor
ICAgIH0KIAogICAgIG1fdHJlZS5leGVjdXRlUXVldWVkVGFza3MoKTsKICAgICAvLyBXZSBtaWdo
dCBiZSBkZXRhY2hlZCBub3cuCkBAIC03MzksNyArNzQxLDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6OnByb2Nlc3NTdGFydFRhZ0ZvckluQm9keShBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAg
IGlmICh0b2tlbi0+bmFtZSgpID09IHBsYWludGV4dFRhZykgewogICAgICAgICBwcm9jZXNzRmFr
ZVBFbmRUYWdJZlBJbkJ1dHRvblNjb3BlKCk7CiAgICAgICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxl
bWVudCh0b2tlbik7Ci0gICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRN
TFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CisgICAgICAgIGlmIChtX3BhcnNlci0+
dG9rZW5pemVyKCkpCisgICAgICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRl
KEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IGJ1dHRvblRhZykgewpAQCAtODQ5LDcgKzg1
Miw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkJvZHkoQXRv
bWljSFRNTFRva2VuKiB0b2tlbikKICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSB0ZXh0YXJlYVRh
ZykgewogICAgICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1lbnQodG9rZW4pOwogICAgICAgICBt
X3Nob3VsZFNraXBMZWFkaW5nTmV3bGluZSA9IHRydWU7Ci0gICAgICAgIG1fcGFyc2VyLT50b2tl
bml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQ0RBVEFTdGF0ZSk7CisgICAg
ICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpCisgICAgICAgICAgICBtX3BhcnNlci0+dG9r
ZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwogICAg
ICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsKICAgICAgICAg
bV9mcmFtZXNldE9rID0gZmFsc2U7CiAgICAgICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUp
OwpAQCAtMjE1NSwxMiArMjE1OSwxNCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc0Vu
ZFRhZyhBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogICAgICAgICAgICAgICAgIG1fc2NyaXB0VG9Q
cm9jZXNzLT5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZSht
X29yaWdpbmFsSW5zZXJ0aW9uTW9kZSk7CiAKLSAgICAgICAgICAgIC8vIFRoaXMgdG9rZW4gd2ls
bCBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgdGhlIHRva2VuaXplciBpZiBhCi0gICAgICAgICAg
ICAvLyBzZWxmLWNsb3Npbmcgc2NyaXB0IHRhZyB3YXMgZW5jb3VudGVyZWQgYW5kIHByZS1IVE1M
NSBwYXJzZXIKLSAgICAgICAgICAgIC8vIHF1aXJrcyBhcmUgZW5hYmxlZC4gV2UgbXVzdCBzZXQg
dGhlIHRva2VuaXplcidzIHN0YXRlIHRvCi0gICAgICAgICAgICAvLyBEYXRhU3RhdGUgZXhwbGlj
aXRseSBpZiB0aGUgdG9rZW5pemVyIGRpZG4ndCBoYXZlIGEgY2hhbmNlIHRvLgotICAgICAgICAg
ICAgQVNTRVJUKG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c3RhdGUoKSA9PSBIVE1MVG9rZW5pemVy
U3RhdGU6OkRhdGFTdGF0ZSB8fCBtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgfHwg
bV9vcHRpb25zLnVzZVRocmVhZGluZyk7Ci0gICAgICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVy
KCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgICAg
IGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIHRv
a2VuIHdpbGwgbm90IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSB0b2tlbml6ZXIgaWYgYQorICAg
ICAgICAgICAgICAgIC8vIHNlbGYtY2xvc2luZyBzY3JpcHQgdGFnIHdhcyBlbmNvdW50ZXJlZCBh
bmQgcHJlLUhUTUw1IHBhcnNlcgorICAgICAgICAgICAgICAgIC8vIHF1aXJrcyBhcmUgZW5hYmxl
ZC4gV2UgbXVzdCBzZXQgdGhlIHRva2VuaXplcidzIHN0YXRlIHRvCisgICAgICAgICAgICAgICAg
Ly8gRGF0YVN0YXRlIGV4cGxpY2l0bHkgaWYgdGhlIHRva2VuaXplciBkaWRuJ3QgaGF2ZSBhIGNo
YW5jZSB0by4KKyAgICAgICAgICAgICAgICBBU1NFUlQobV9wYXJzZXItPnRva2VuaXplcigpLT5z
dGF0ZSgpID09IEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlIHx8IG1fb3B0aW9ucy51c2VQ
cmVIVE1MNVBhcnNlclF1aXJrcyB8fCBtX29wdGlvbnMudXNlVGhyZWFkaW5nKTsKKyAgICAgICAg
ICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0
ZTo6RGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBtX3RyZWUub3BlbkVsZW1lbnRzKCktPnBvcCgpOwpAQCAtMjY5OCw3ICsy
NzA0LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUkNEQVRBU3RhcnRU
YWcoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW5UeXBlczo6U3RhcnRUYWcpOwogICAgIG1fdHJlZS5pbnNlcnRIVE1MRWxlbWVu
dCh0b2tlbik7Ci0gICAgbV9wYXJzZXItPnRva2VuaXplcigpLT5zZXRTdGF0ZShIVE1MVG9rZW5p
emVyU3RhdGU6OlJDREFUQVN0YXRlKTsKKyAgICBpZiAobV9wYXJzZXItPnRva2VuaXplcigpKQor
ICAgICAgICBtX3BhcnNlci0+dG9rZW5pemVyKCktPnNldFN0YXRlKEhUTUxUb2tlbml6ZXJTdGF0
ZTo6UkNEQVRBU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRp
b25Nb2RlOwogICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUpOwogfQpAQCAtMjcwNyw3ICsy
NzE0LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0
VGFnKEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAgQVNTRVJUKHRva2VuLT50eXBlKCkg
PT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKTsKICAgICBtX3RyZWUuaW5zZXJ0SFRNTEVsZW1l
bnQodG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2Vu
aXplclN0YXRlOjpSQVdURVhUU3RhdGUpOworICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkp
CisgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0
YXRlOjpSQVdURVhUU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNl
cnRpb25Nb2RlOwogICAgIHNldEluc2VydGlvbk1vZGUoVGV4dE1vZGUpOwogfQpAQCAtMjcxNiw3
ICsyNzI0LDggQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTY3JpcHRTdGFydFRhZyhB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tlbi0+dHlwZSgpID09IEhU
TUxUb2tlblR5cGVzOjpTdGFydFRhZyk7CiAgICAgbV90cmVlLmluc2VydFNjcmlwdEVsZW1lbnQo
dG9rZW4pOwotICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXpl
clN0YXRlOjpTY3JpcHREYXRhU3RhdGUpOworICAgIGlmIChtX3BhcnNlci0+dG9rZW5pemVyKCkp
CisgICAgICAgIG1fcGFyc2VyLT50b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0
YXRlOjpTY3JpcHREYXRhU3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9p
bnNlcnRpb25Nb2RlOwogCiAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gbV9wYXJzZXItPnRl
eHRQb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4
dERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1
bWVudFBhcnNlci5jcHAKaW5kZXggYTA3OTdiOTNhZThlNWQyMmI2OTZjNmVkNGViZmI1MjI5ODE2
ZTkwYi4uNzk2YzdlYzA2MGVlZTRlZGYzMzAwM2QzYzBhNDVhOTIzYzJlZGRmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0z
OCw3ICszOCw5IEBAIFRleHREb2N1bWVudFBhcnNlcjo6VGV4dERvY3VtZW50UGFyc2VyKEhUTUxE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQsIGZh
bHNlKQogICAgICwgbV9oYXZlSW5zZXJ0ZWRGYWtlUHJlRWxlbWVudChmYWxzZSkKIHsKLSAgICB0
b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7
CisgICAgLy8gRklYTUU6IElmIHdlJ3JlIHVzaW5nIHRocmVhZGluZywgd2UgbmVlZCB0byB0ZWxs
IHRoZSBCYWNrZ3JvdW5kSFRNTFBhcnNlciB0byB1c2UgUExBSU5URVhUU3RhdGUuCisgICAgaWYg
KHRva2VuaXplcigpKQorICAgICAgICB0b2tlbml6ZXIoKS0+c2V0U3RhdGUoSFRNTFRva2VuaXpl
clN0YXRlOjpQTEFJTlRFWFRTdGF0ZSk7CiB9CiAKIFRleHREb2N1bWVudFBhcnNlcjo6flRleHRE
b2N1bWVudFBhcnNlcigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>