<?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>107954</bug_id>
          
          <creation_ts>2013-01-25 09:06:41 -0800</creation_ts>
          <short_desc>EventSender isn&apos;t suspended when page load is deferred</short_desc>
          <delta_ts>2013-10-02 12:28:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>japhet</cc>
    
    <cc>manyoso</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>816640</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-25 09:06:41 -0800</bug_when>
    <thetext>The timer in EventSender can still fire when the page/document is deferred (or in page cache?)

EventSender should be derived from SuspendableTimer, or at least an ActiveDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817805</commentid>
    <comment_count>1</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-28 09:25:13 -0800</bug_when>
    <thetext>I found this probably needs quite large refactor:

And even more scary thing is Document.cpp is calling these static functions:

    ImageLoader::dispatchPendingBeforeLoadEvents();
    ImageLoader::dispatchPendingLoadEvents();
    ImageLoader::dispatchPendingErrorEvents();

    HTMLLinkElement::dispatchPendingLoadEvents();
    HTMLStyleElement::dispatchPendingLoadEvents();

!!!!?????</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817828</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-28 09:57:39 -0800</bug_when>
    <thetext>This needs an explanation. Why does deferring loading need to suspend EventSender? If that&apos;s actually the case, it needs to be renamed appropriately, because nothing in its name says that it&apos;s not just about loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817862</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-28 10:38:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This needs an explanation. Why does deferring loading need to suspend EventSender? If that&apos;s actually the case, it needs to be renamed appropriately, because nothing in its name says that it&apos;s not just about loading.

Yes, it does sound a little bit confusing. However event it is just about loading, JS execution can definitely trigger some loading jobs.

From what I understand, defersLoading() means suspending loading as well as DOM activities, JS executions and other scheduled jobs that could cause re-entrancy issues or isn&apos;t always safe in that situation. A typical case is JS modal dialogs. WebKit uses PageGroupLoadDeferrer to suspend all scheduled jobs that could trigger JS execution in the nested event loop. Another case is page cache. When a frame/document is pushed into page cache, all its scheduled jobs are suspended. And the jobs will be resumed when the document/frame is restored. Doing anything to a document which is in page cache is dangerous. I&apos;m not sure if there is any isPageCached check being done when  EventSender&lt;&gt; dispatches events, but even there is, we still have a problem, the events will be lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817939</commentid>
    <comment_count>4</comment_count>
      <attachid>185026</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-28 11:56:15 -0800</bug_when>
    <thetext>Created attachment 185026
Proposed solution (not for review yet)

Is this solution OK? Especially the removal of dispatching all load events in Document::implicitClose, and the removal of dispatching beforeload events from XMLDocumentParser::append(). I don&apos;t know why we need that. but there must be some reason...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817947</commentid>
    <comment_count>5</comment_count>
      <attachid>185026</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-28 12:01:39 -0800</bug_when>
    <thetext>Comment on attachment 185026
Proposed solution (not for review yet)

Attachment 185026 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16165668</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817956</commentid>
    <comment_count>6</comment_count>
      <attachid>185026</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-28 12:09:47 -0800</bug_when>
    <thetext>Comment on attachment 185026
Proposed solution (not for review yet)

Attachment 185026 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16165669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817976</commentid>
    <comment_count>7</comment_count>
      <attachid>185032</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-28 12:21:46 -0800</bug_when>
    <thetext>Created attachment 185032
fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817981</commentid>
    <comment_count>8</comment_count>
      <attachid>185032</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-28 12:29:31 -0800</bug_when>
    <thetext>Comment on attachment 185032
fix build

Attachment 185032 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16152758</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817992</commentid>
    <comment_count>9</comment_count>
      <attachid>185035</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-28 12:36:07 -0800</bug_when>
    <thetext>Created attachment 185035
fix build again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818427</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-28 20:07:15 -0800</bug_when>
    <thetext>&gt; Yes, it does sound a little bit confusing. However event it is just about loading, JS execution can definitely trigger some loading jobs.

Honestly, this is more than a little confusing to me. Personally, I would not dare to make patches in this area without deeply investigating both existing and desired behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818446</commentid>
    <comment_count>11</comment_count>
      <attachid>185035</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 20:42:26 -0800</bug_when>
    <thetext>Comment on attachment 185035
fix build again

Attachment 185035 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16182295

New failing tests:
http/tests/security/cross-frame-access-DOMImplementation.html
fast/dom/HTMLStyleElement/style-onload2.html
fast/dom/HTMLLinkElement/link-onload2.html
http/tests/security/canvas-remote-read-remote-image-allowed-with-credentials.html
fast/canvas/canvas-createPattern-fillRect-shadow.html
http/tests/security/img-with-failed-cors-check-fails-to-load.html
http/tests/security/canvas-remote-read-svg-image.html
http/tests/security/canvas-remote-read-redirect-to-remote-image.html
fast/canvas/canvas-toDataURL-webp.html
http/tests/security/contentSecurityPolicy/img-blocked-no-gc-crash.html
fast/canvas/canvas-scale-drawImage-shadow.html
fast/canvas/canvas-drawImage-shadow.html
http/tests/security/contentSecurityPolicy/image-blocked.html
fast/dom/HTMLLinkElement/link-onload-before-page-load.html
fast/canvas/webgl/gl-teximage.html
http/tests/security/contentSecurityPolicy/image-allowed.html
http/tests/security/canvas-remote-read-data-url-svg-image.html
http/tests/security/inactive-document-with-empty-security-origin.html
fast/canvas/webgl/texture-color-profile.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818474</commentid>
    <comment_count>12</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-01-28 21:25:44 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=185026) [details]
&gt; Proposed solution (not for review yet)
&gt; 
&gt; Is this solution OK?

Clearly, this solution is not OK given the test failures mentioned in comment 11.

&gt; Especially the removal of dispatching all load events in Document::implicitClose, and the removal of dispatching beforeload events from XMLDocumentParser::append().  I don&apos;t know why we need that. but there must be some reason...

Focusing on load events, without loss of generality, we need to dispatch all load events for &lt;link&gt; before we dispatch the load event for the document by &lt;http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-link-element&gt;. Similar arguments can be made for &lt;img&gt; and &lt;style&gt; as well as the WebKit-specific beforeload event (*).

(*) See &lt;http://developer.apple.com/library/safari/#documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW9&gt; for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818908</commentid>
    <comment_count>13</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-29 06:57:51 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Yes, it does sound a little bit confusing. However event it is just about loading, JS execution can definitely trigger some loading jobs.
&gt; 
&gt; Honestly, this is more than a little confusing to me. Personally, I would not dare to make patches in this area without deeply investigating both existing and desired behavior.

We already have a lot of code (like ActiveDOMObjects, SuspendableTimer, DocumentEventQueue and other classes/functions) that suspends and resumes scheduled timers accordingly.

I think the existing behavior for these load events is:

1) schedule event dispatching with timer. Dispatch events when the timer fires
2) Force dispatching the events in Document.implicitClose() and XMLDocumentParser::append()

I wouldn&apos;t change the behavior. My proposed patch misses 2), which I think can be done by keeping the event sender lists in the document object (rather than using global static lists).

Thanks Dan. I&apos;ll also try to make a test case even a manual one to show the JS re-entrancy when time allowing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185026</attachid>
            <date>2013-01-28 11:56:15 -0800</date>
            <delta_ts>2013-01-28 12:21:46 -0800</delta_ts>
            <desc>Proposed solution (not for review yet)</desc>
            <filename>107954-proposed.diff</filename>
            <type>text/plain</type>
            <size>18406</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ3ODMzNzUuLjFlY2JlMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMjM4NiwxMyArMjM4Niw2IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxp
Y2l0Q2xvc2UoKQogICAgICAgICBmLT5hbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRv
Y3VtZW50KHRoaXMpOwogICAgIH0KIAotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdC
ZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRF
dmVudHMoKTsKLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsK
LQotICAgIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAg
IEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLQogI2lmIEVO
QUJMRShTVkcpCiAgICAgLy8gVG8gYWxpZ24gdGhlIEhUTUwgbG9hZCBldmVudCBhbmQgdGhlIFNW
R0xvYWQgZXZlbnQgZm9yIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCwgZmlyZSBpdCBmcm9t
CiAgICAgLy8gaGVyZSwgaW5zdGVhZCBvZiBkb2luZyBpdCBmcm9tIFNWR0VsZW1lbnQ6OmZpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuIChpZiBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCmluZGV4IDY0NjAzNGMuLjgwN2ZmMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFNlbmRlci5oCkBAIC0yNiw4NyArMjYsNDQgQEAKICNpZm5kZWYgRXZlbnRTZW5k
ZXJfaAogI2RlZmluZSBFdmVudFNlbmRlcl9oCiAKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgIlN1c3BlbmRhYmxlVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXIg
ewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI6IHByaXZhdGUgU3VzcGVu
ZGFibGVUaW1lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRTZW5kZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFdmVudFNlbmRlcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUeXBlOyB9Ci0gICAgdm9pZCBkaXNw
YXRjaEV2ZW50U29vbihUKik7Ci0gICAgdm9pZCBjYW5jZWxFdmVudChUKik7Ci0gICAgdm9pZCBk
aXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc1Bl
bmRpbmdFdmVudHMoVCogc2VuZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGlz
cGF0Y2hTb29uTGlzdC5maW5kKHNlbmRlcikgIT0gbm90Rm91bmQgfHwgbV9kaXNwYXRjaGluZ0xp
c3QuZmluZChzZW5kZXIpICE9IG5vdEZvdW5kOwotICAgIH0KLSNlbmRpZgorICAgIEV2ZW50U2Vu
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUKiBvd25lcik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4qKSB7IGRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpOyB9CisgICAgLy8gU3VzcGVuZGFibGVUaW1lci4KKyAgICB2aXJ0dWFsIHZvaWQg
ZmlyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCi0gICAgQXRv
bWljU3RyaW5nIG1fZXZlbnRUeXBlOwotICAgIFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4gbV90aW1l
cjsKLSAgICBWZWN0b3I8VCo+IG1fZGlzcGF0Y2hTb29uTGlzdDsKLSAgICBWZWN0b3I8VCo+IG1f
ZGlzcGF0Y2hpbmdMaXN0OworICAgIFQqIG1fb3duZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpCi0gICAgOiBtX2V2ZW50VHlwZShldmVudFR5cGUpCi0gICAgLCBtX3RpbWVyKHRoaXMs
ICZFdmVudFNlbmRlcjo6dGltZXJGaXJlZCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IEV2ZW50U2Vu
ZGVyPFQ+OjpFdmVudFNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUKiBv
d25lcikKKyAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4dCkKKyAgICAsIG1fb3duZXIob3du
ZXIpCiB7CisgICAgc3RhcnRPbmVTaG90KDApOworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50
U29vbihUKiBzZW5kZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+
Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBwZW5kKHNl
bmRlcik7Ci0gICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDApOworICAgIFN1c3BlbmRhYmxlVGltZXI6OmNvbnRleHREZXN0cm95ZWQoKTsK
KyAgICBzdG9wKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8
VD46OmNhbmNlbEV2ZW50KFQqIHNlbmRlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZl
bnRTZW5kZXI8VD46OmZpcmVkKCkKIHsKLSAgICAvLyBSZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMg
c2VuZGVyIGZyb20gYm90aCBsaXN0cy4KLSAgICAvLyBVc2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxv
dyBtdWx0aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8gdGhlIGxpc3RzLgotICAgIHNpemVfdCBz
aXplID0gbV9kaXNwYXRjaFNvb25MaXN0LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAobV9kaXNwYXRjaFNvb25MaXN0W2ldID09IHNl
bmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9IDA7Ci0gICAgfQotICAg
IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlzcGF0Y2hpbmdMaXN0W2ldID09IHNl
bmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gMDsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpCi17Ci0gICAgLy8gTmVlZCB0byBhdm9pZCByZS1lbnRlcmluZyB0aGlzIGZ1bmN0
aW9uOyBpZiBuZXcgZGlzcGF0Y2hlcyBhcmUKLSAgICAvLyBzY2hlZHVsZWQgYmVmb3JlIHRoZSBw
YXJlbnQgZmluaXNoZXMgcHJvY2Vzc2luZyB0aGUgbGlzdCwgdGhleQotICAgIC8vIHdpbGwgc2V0
IGEgdGltZXIgYW5kIGV2ZW50dWFsbHkgYmUgcHJvY2Vzc2VkLgotICAgIGlmICghbV9kaXNwYXRj
aGluZ0xpc3QuaXNFbXB0eSgpKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVyLnN0b3AoKTsKLQotICAgIG1fZGlzcGF0Y2hT
b29uTGlzdC5jaGVja0NvbnNpc3RlbmN5KCk7Ci0KLSAgICBtX2Rpc3BhdGNoaW5nTGlzdC5zd2Fw
KG1fZGlzcGF0Y2hTb29uTGlzdCk7Ci0gICAgc2l6ZV90IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlz
dC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgaWYgKFQqIHNlbmRlciA9IG1fZGlzcGF0Y2hpbmdMaXN0W2ldKSB7Ci0gICAgICAgICAgICBt
X2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7Ci0gICAgICAgICAgICBzZW5kZXItPmRpc3BhdGNoUGVu
ZGluZ0V2ZW50KHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fZGlzcGF0Y2hpbmdMaXN0
LmNsZWFyKCk7CisgICAgbV9vd25lci0+ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CmluZGV4IGY4MmU2MDIuLjAxYjU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKQEAgLTU1LDEyICs1NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIExpbmtFdmVudFNlbmRlciYgbGlua0xvYWRF
dmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChMaW5rRXZlbnRTZW5kZXIs
IHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAgICBy
ZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOwotfQotCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50
OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCkBAIC05MSw4ICs4NSw2IEBA
IEhUTUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAKICAgICBpZiAoaW5Eb2N1bWVu
dCgpKQogICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5yZW1vdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKLQotICAgIGxpbmtMb2FkRXZlbnRTZW5kZXIo
KS5jYW5jZWxFdmVudCh0aGlzKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2Fi
bGVkU3RhdGUoYm9vbCBkaXNhYmxlZCkKQEAgLTM4OSwxNCArMzgxLDkgQEAgYm9vbCBIVE1MTGlu
a0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRN
TExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKLXsKLSAgICBsaW5rTG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2Vu
ZGVyKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCBldmVudFNlbmRlciA9PSAmbGlua0xvYWRFdmVu
dFNlbmRlcigpKTsKKyAgICBtX2V2ZW50U2VuZGVyLmNsZWFyKCk7CiAgICAgaWYgKG1fbG9hZGVk
U2hlZXQpCiAgICAgICAgIGxpbmtMb2FkZWQoKTsKICAgICBlbHNlCkBAIC00MDgsNyArMzk1LDgg
QEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxT
dWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3UKICAgICBpZiAobV9maXJlZExvYWQpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2xvYWRlZFNoZWV0ID0gIWVycm9yT2NjdXJyZWQ7Ci0gICAgbGlua0xv
YWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIGlmICghbV9ldmVu
dFNlbmRlcikKKyAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBMaW5rRXZlbnRT
ZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMzc2MjRjNC4uMDlmYWJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC02OSw4ICs2OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0cmluZyYpOwogICAgIERPTVNldHRhYmxl
VG9rZW5MaXN0KiBzaXplcygpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVu
dChMaW5rRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2Fk
RXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CkBAIC0xNDIsNiArMTQxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RE9NU2V0dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgRGlzYWJsZWRT
dGF0ZSBtX2Rpc2FibGVkU3RhdGU7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0dHJpYnV0
ZTsKKyAgICBPd25QdHI8TGlua0V2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIGJvb2wg
bV9sb2FkaW5nOwogICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lzSW5T
aGFkb3dUcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXgg
YTgxZjNiZC4uZmVkM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
Y3BwCkBAIC00MCwxMiArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVu
dFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZUV2ZW50U2VuZGVyLCBz
aGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0
dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKLX0KLQogaW5saW5lIEhUTUxTdHlsZUVsZW1lbnQ6
OkhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgU3R5bGVFbGVtZW50KGRvY3VtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpCkBAIC02MSw4ICs1NSw2IEBAIEhUTUxTdHlsZUVsZW1lbnQ6On5IVE1MU3R5bGVFbGVtZW50
KCkKICAgICAvLyBEdXJpbmcgdGVhci1kb3duLCB3aWxsUmVtb3ZlIGlzbid0IGNhbGxlZCwgc28g
bV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlIG1heSBzdGlsbCBiZSBSZWdpc3RlcmVkQXNT
Y29wZWQgb3IgUmVnaXN0ZXJlZEluU2hhZG93Um9vdCBoZXJlLgogICAgIC8vIFRoZXJlZm9yZSB3
ZSBjYW4ndCBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09IE5vdFJlZ2lz
dGVyZWQpLgogICAgIFN0eWxlRWxlbWVudDo6Y2xlYXJEb2N1bWVudERhdGEoZG9jdW1lbnQoKSwg
dGhpcyk7Ci0KLSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpAQCAtMjQ1LDE0ICsyMzcsOSBAQCBFbGVtZW50KiBIVE1MU3R5bGVF
bGVtZW50OjpzY29waW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJl
bnRPckhvc3QpOwogfQogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xv
YWRFdmVudHMoKQotewotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5n
RXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnQoU3R5bGVFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ0V2ZW50KCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVy
LCBldmVudFNlbmRlciA9PSAmc3R5bGVMb2FkRXZlbnRTZW5kZXIoKSk7CisgICAgbV9ldmVudFNl
bmRlci5jbGVhcigpOwogICAgIGlmIChtX2xvYWRlZFNoZWV0KQogICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CiAgICAgZWxzZQpAQCAtMjY0LDcgKzI1MSw4IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6bm90
aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjCiAg
ICAgaWYgKG1fZmlyZWRMb2FkKQogICAgICAgICByZXR1cm47CiAgICAgbV9sb2FkZWRTaGVldCA9
ICFlcnJvck9jY3VycmVkOwotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVu
dFNvb24odGhpcyk7CisgICAgaWYgKCFtX2V2ZW50U2VuZGVyKQorICAgICAgICBtX2V2ZW50U2Vu
ZGVyID0gYWRvcHRQdHIobmV3IFN0eWxlRXZlbnRTZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwog
ICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaAppbmRleCBkM2U5OWU0Li5lMTFlYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuaApAQCAtNTgsOCArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNhYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgp
OwogCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpAQCAtODYsNiArODUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoYm9vbCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRhaW5lck5vZGUqKTsKIAorICAgIE93blB0cjxT
dHlsZUV2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIGJvb2wgbV9maXJlZExvYWQ7CiAg
ICAgYm9vbCBtX2xvYWRlZFNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCAzMGI5MjhlLi43ZDZkOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAKQEAgLTY1LDMwICs2NSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IFZhbHVlQ2hlY2s8V2Vi
Q29yZTo6SW1hZ2VMb2FkZXIqPiB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIElt
YWdlRXZlbnRTZW5kZXImIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChJbWFnZUV2ZW50U2VuZGVyLCBzZW5kZXIsIChldmVudE5hbWVzKCkuYmVmb3Jl
bG9hZEV2ZW50KSk7Ci0gICAgcmV0dXJuIHNlbmRlcjsKLX0KLQotc3RhdGljIEltYWdlRXZlbnRT
ZW5kZXImIGxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFn
ZUV2ZW50U2VuZGVyLCBzZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0
dXJuIHNlbmRlcjsKLX0KLQotc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGVycm9yRXZlbnRTZW5k
ZXIoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2VFdmVudFNlbmRlciwgc2VuZGVy
LCAoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpKTsKLSAgICByZXR1cm4gc2VuZGVyOwotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgcGFnZUlzQmVpbmdEaXNtaXNzZWQoRG9jdW1lbnQqIGRvY3VtZW50
KQotewotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgIHJldHVybiBm
cmFtZSAmJiBmcmFtZS0+bG9hZGVyKCktPnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZCgpICE9IEZyYW1lTG9hZGVyOjpOb0Rpc21pc3NhbDsKLX0KLQogSW1hZ2VMb2FkZXI6OkltYWdl
TG9hZGVyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAs
IG1faW1hZ2UoMCkKQEAgLTEwNiwxOCArODIsNiBAQCBJbWFnZUxvYWRlcjo6fkltYWdlTG9hZGVy
KCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgbV9pbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OwogCi0gICAgQVNTRVJUKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCB8fCAhYmVmb3JlTG9h
ZEV2ZW50U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cyh0aGlzKSk7Ci0gICAgaWYgKG1faGFzUGVu
ZGluZ0JlZm9yZUxvYWRFdmVudCkKLSAgICAgICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuY2Fu
Y2VsRXZlbnQodGhpcyk7Ci0KLSAgICBBU1NFUlQobV9oYXNQZW5kaW5nTG9hZEV2ZW50IHx8ICFs
b2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKHRoaXMpKTsKLSAgICBpZiAobV9oYXNQ
ZW5kaW5nTG9hZEV2ZW50KQotICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0
aGlzKTsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdFcnJvckV2ZW50IHx8ICFlcnJvckV2ZW50
U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cyh0aGlzKSk7Ci0gICAgaWYgKG1faGFzUGVuZGluZ0Vy
cm9yRXZlbnQpCi0gICAgICAgIGVycm9yRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
LQogICAgIC8vIElmIHRoZSBJbWFnZUxvYWRlciBpcyBiZWluZyBkZXN0cm95ZWQgYnV0IGl0IGlz
IHN0aWxsIHByb3RlY3RpbmcgaXRzIGltYWdlLWxvYWRpbmcgRWxlbWVudCwKICAgICAvLyByZW1v
dmUgdGhhdCBwcm90ZWN0aW9uIGhlcmUuCiAgICAgaWYgKG1fZWxlbWVudElzUHJvdGVjdGVkKQpA
QCAtMTM5LDE4ICsxMDMsMTEgQEAgdm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2VXaXRob3V0Q29u
c2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KENhY2hlZEltYWdlKiBuZXdJbWEKICAgICBDYWNoZWRJ
bWFnZSogb2xkSW1hZ2UgPSBtX2ltYWdlLmdldCgpOwogICAgIGlmIChuZXdJbWFnZSAhPSBvbGRJ
bWFnZSkgewogICAgICAgICBtX2ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIGlmIChtX2hhc1Bl
bmRpbmdCZWZvcmVMb2FkRXZlbnQpIHsKLSAgICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRl
cigpLmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICAgICAgbV9oYXNQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0xvYWRF
dmVudCkgewotICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7
Ci0gICAgICAgICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkgewotICAgICAgICAgICAgZXJyb3JF
dmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICAgICAgbV9oYXNQZW5kaW5n
RXJyb3JFdmVudCA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V2ZW50U2VuZGVy
KQorICAgICAgICAgICAgbV9ldmVudFNlbmRlci5jbGVhcigpOworICAgICAgICBtX2hhc1BlbmRp
bmdCZWZvcmVMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50
ID0gZmFsc2U7CisgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSBmYWxzZTsKICAgICAg
ICAgbV9pbWFnZUNvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgaWYgKG5ld0ltYWdlKQogICAgICAg
ICAgICAgbmV3SW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKQEAgLTIwNiw3ICsxNjMsOCBAQCB2b2lk
IEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIGlmICghbmV3SW1hZ2Ug
JiYgIXBhZ2VJc0JlaW5nRGlzbWlzc2VkKGRvY3VtZW50KSkgewogICAgICAgICAgICAgbV9mYWls
ZWRMb2FkVVJMID0gYXR0cjsKICAgICAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0
cnVlOwotICAgICAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRo
aXMpOworICAgICAgICAgICAgaWYgKCFtX2V2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIG1f
ZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgSW1hZ2VFdmVudFNlbmRlcihkb2N1bWVudCgpLCB0
aGlzKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY2xlYXJGYWlsZWRMb2FkVVJMKCk7
CiAgICAgfSBlbHNlIGlmICghYXR0ci5pc051bGwoKSkgewpAQCAtMjE3LDEyICsxNzUsOCBAQCB2
b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgCiAgICAgQ2FjaGVkSW1h
Z2UqIG9sZEltYWdlID0gbV9pbWFnZS5nZXQoKTsKICAgICBpZiAobmV3SW1hZ2UgIT0gb2xkSW1h
Z2UpIHsKLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCkKLSAgICAgICAg
ICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICBp
ZiAobV9oYXNQZW5kaW5nTG9hZEV2ZW50KQotICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCku
Y2FuY2VsRXZlbnQodGhpcyk7Ci0gICAgICAgIGlmIChtX2hhc1BlbmRpbmdFcnJvckV2ZW50KQot
ICAgICAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOworICAgICAg
ICBpZiAobV9ldmVudFNlbmRlcikKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXIuY2xlYXIoKTsK
IAogICAgICAgICBtX2ltYWdlID0gbmV3SW1hZ2U7CiAgICAgICAgIG1faGFzUGVuZGluZ0JlZm9y
ZUxvYWRFdmVudCA9ICFtX2VsZW1lbnQtPmRvY3VtZW50KCktPmlzSW1hZ2VEb2N1bWVudCgpICYm
IG5ld0ltYWdlOwpAQCAtMjMzLDggKzE4Nyw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZy
b21FbGVtZW50KCkKICAgICAgICAgICAgIGlmICghbV9lbGVtZW50LT5kb2N1bWVudCgpLT5pc0lt
YWdlRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlmICghbV9lbGVtZW50LT5kb2N1bWVu
dCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkJFRk9SRUxPQURfTElTVEVORVIpKQogICAg
ICAgICAgICAgICAgICAgICBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRl
cigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFt
X2V2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQ
dHIobmV3IEltYWdlRXZlbnRTZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgdXBkYXRlUmVuZGVyZXIoKTsKIApAQCAtMjgwLDcgKzIz
NCw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKICAgICAgICAgc2V0SW1hZ2VXaXRob3V0Q29uc2lkZXJpbmdQZW5kaW5nTG9hZEV2
ZW50KDApOwogCiAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0cnVlOwotICAgICAg
ICBlcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CisgICAgICAgIGlm
ICghbV9ldmVudFNlbmRlcikKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihu
ZXcgSW1hZ2VFdmVudFNlbmRlcihkb2N1bWVudCgpLCB0aGlzKSk7CiAKICAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJDcm9z
cy1vcmlnaW4gaW1hZ2UgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJp
bmcgcG9saWN5LiIpKSk7CiAgICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3Nh
Z2UpOwpAQCAtMzAxLDcgKzI1Niw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIGlmICghbV9l
dmVudFNlbmRlcikKKyAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBJbWFnZUV2
ZW50U2VuZGVyKGRvY3VtZW50KCksIHRoaXMpKTsKIH0KIAogUmVuZGVySW1hZ2VSZXNvdXJjZSog
SW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UoKQpAQCAtMzYxLDE1ICszMTcsMTggQEAg
dm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlZEhhc1BlbmRpbmdFdmVudCgpCiAgICAgICAgIG1fZWxl
bWVudC0+ZGVyZWYoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnQoSW1hZ2VFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCit2b2lkIEltYWdlTG9hZGVyOjpkaXNw
YXRjaFBlbmRpbmdFdmVudCgpCiB7Ci0gICAgQVNTRVJUKGV2ZW50U2VuZGVyID09ICZiZWZvcmVM
b2FkRXZlbnRTZW5kZXIoKSB8fCBldmVudFNlbmRlciA9PSAmbG9hZEV2ZW50U2VuZGVyKCkgfHwg
ZXZlbnRTZW5kZXIgPT0gJmVycm9yRXZlbnRTZW5kZXIoKSk7Ci0gICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUgPSBldmVudFNlbmRlci0+ZXZlbnRUeXBlKCk7Ci0gICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KQorICAgIG1fZXZlbnRTZW5kZXIu
Y2xlYXIoKTsKKyAgICBpZiAobV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KSB7CisgICAgICAg
IGlmIChtX2hhc1BlbmRpbmdMb2FkRXZlbnQgfHwgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCkKKyAg
ICAgICAgICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgSW1hZ2VFdmVudFNlbmRlcihk
b2N1bWVudCgpLCB0aGlzKSk7CiAgICAgICAgIGRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVu
dCgpOwotICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCkKKyAgICB9
IGVsc2UgaWYgKG1faGFzUGVuZGluZ0xvYWRFdmVudCkgeworICAgICAgICBpZiAobV9oYXNQZW5k
aW5nRXJyb3JFdmVudCkKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcg
SW1hZ2VFdmVudFNlbmRlcihkb2N1bWVudCgpLCB0aGlzKSk7CiAgICAgICAgIGRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudCgpOwotICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQpCisgICAgfSBlbHNlIGlmIChtX2hhc1BlbmRpbmdFcnJvckV2ZW50KQogICAgICAgICBk
aXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50KCk7CiB9CiAKQEAgLTM5MSw3ICszNTAsNiBAQCB2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKQogICAgICAgICBt
X2ltYWdlID0gMDsKICAgICB9CiAKLSAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0
aGlzKTsKICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsKICAgICAKICAgICBpZiAo
bV9lbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKSkKQEAgLTQzMCwyMSAr
Mzg4LDYgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudCgpCiAg
ICAgdXBkYXRlZEhhc1BlbmRpbmdFdmVudCgpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpkaXNw
YXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCkKLXsKLSAgICBiZWZvcmVMb2FkRXZlbnRTZW5k
ZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0KLQotdm9pZCBJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCi17Ci0gICAgbG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0
Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGlu
Z0Vycm9yRXZlbnRzKCkKLXsKLSAgICBlcnJvckV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5n
RXZlbnRzKCk7Ci19Ci0KIHZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9OZXdEb2N1
bWVudCgpCiB7CiAgICAgY2xlYXJGYWlsZWRMb2FkVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5oCmluZGV4IGY1OWQ0ZDUuLjhkNzMzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5oCkBAIC02MywxMSArNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5n
QmVmb3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2
ZW50OyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBtX2hh
c1BlbmRpbmdMb2FkRXZlbnQgfHwgbV9oYXNQZW5kaW5nRXJyb3JFdmVudDsgfQogCi0gICAgdm9p
ZCBkaXNwYXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyKik7Ci0KLSAgICBzdGF0aWMg
dm9pZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVu
ZGluZ0Vycm9yRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
Kik7CkBAIC05MSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgRWxlbWVudCogbV9lbGVtZW50Owog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2ltYWdlOwogICAgIEF0b21p
Y1N0cmluZyBtX2ZhaWxlZExvYWRVUkw7CisgICAgT3duUHRyPEltYWdlRXZlbnRTZW5kZXI+IG1f
ZXZlbnRTZW5kZXI7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQgOiAxOwog
ICAgIGJvb2wgbV9oYXNQZW5kaW5nTG9hZEV2ZW50IDogMTsKICAgICBib29sIG1faGFzUGVuZGlu
Z0Vycm9yRXZlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCA1M2IyYzRiLi43MTM0NDVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTI2LDkgKzEyNiw2IEBA
IHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNv
dXJjZSkKICAgICB9CiAKICAgICBkb1dyaXRlKHNvdXJjZS50b1N0cmluZygpKTsKLQotICAgIC8v
IEFmdGVyIHBhcnNpbmcsIGdvIGFoZWFkIGFuZCBkaXNwYXRjaCBpbWFnZSBiZWZvcmVsb2FkIGV2
ZW50cy4KLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygp
OwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJvcihYTUxFcnJvcnM6OkVy
cm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24gcG9zaXRpb24pCg==
</data>
<flag name="commit-queue"
          id="203954"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185032</attachid>
            <date>2013-01-28 12:21:46 -0800</date>
            <delta_ts>2013-01-28 12:36:07 -0800</delta_ts>
            <desc>fix build</desc>
            <filename>107954-proposed.diff</filename>
            <type>text/plain</type>
            <size>18446</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ3ODMzNzUuLjFlY2JlMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMjM4NiwxMyArMjM4Niw2IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxp
Y2l0Q2xvc2UoKQogICAgICAgICBmLT5hbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRv
Y3VtZW50KHRoaXMpOwogICAgIH0KIAotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdC
ZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRF
dmVudHMoKTsKLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsK
LQotICAgIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAg
IEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLQogI2lmIEVO
QUJMRShTVkcpCiAgICAgLy8gVG8gYWxpZ24gdGhlIEhUTUwgbG9hZCBldmVudCBhbmQgdGhlIFNW
R0xvYWQgZXZlbnQgZm9yIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCwgZmlyZSBpdCBmcm9t
CiAgICAgLy8gaGVyZSwgaW5zdGVhZCBvZiBkb2luZyBpdCBmcm9tIFNWR0VsZW1lbnQ6OmZpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuIChpZiBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCmluZGV4IDY0NjAzNGMuLjgwN2ZmMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFNlbmRlci5oCkBAIC0yNiw4NyArMjYsNDQgQEAKICNpZm5kZWYgRXZlbnRTZW5k
ZXJfaAogI2RlZmluZSBFdmVudFNlbmRlcl9oCiAKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgIlN1c3BlbmRhYmxlVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXIg
ewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI6IHByaXZhdGUgU3VzcGVu
ZGFibGVUaW1lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRTZW5kZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFdmVudFNlbmRlcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUeXBlOyB9Ci0gICAgdm9pZCBkaXNw
YXRjaEV2ZW50U29vbihUKik7Ci0gICAgdm9pZCBjYW5jZWxFdmVudChUKik7Ci0gICAgdm9pZCBk
aXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc1Bl
bmRpbmdFdmVudHMoVCogc2VuZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGlz
cGF0Y2hTb29uTGlzdC5maW5kKHNlbmRlcikgIT0gbm90Rm91bmQgfHwgbV9kaXNwYXRjaGluZ0xp
c3QuZmluZChzZW5kZXIpICE9IG5vdEZvdW5kOwotICAgIH0KLSNlbmRpZgorICAgIEV2ZW50U2Vu
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUKiBvd25lcik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4qKSB7IGRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpOyB9CisgICAgLy8gU3VzcGVuZGFibGVUaW1lci4KKyAgICB2aXJ0dWFsIHZvaWQg
ZmlyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCi0gICAgQXRv
bWljU3RyaW5nIG1fZXZlbnRUeXBlOwotICAgIFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4gbV90aW1l
cjsKLSAgICBWZWN0b3I8VCo+IG1fZGlzcGF0Y2hTb29uTGlzdDsKLSAgICBWZWN0b3I8VCo+IG1f
ZGlzcGF0Y2hpbmdMaXN0OworICAgIFQqIG1fb3duZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpCi0gICAgOiBtX2V2ZW50VHlwZShldmVudFR5cGUpCi0gICAgLCBtX3RpbWVyKHRoaXMs
ICZFdmVudFNlbmRlcjo6dGltZXJGaXJlZCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IEV2ZW50U2Vu
ZGVyPFQ+OjpFdmVudFNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUKiBv
d25lcikKKyAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4dCkKKyAgICAsIG1fb3duZXIob3du
ZXIpCiB7CisgICAgc3RhcnRPbmVTaG90KDApOworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50
U29vbihUKiBzZW5kZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+
Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBwZW5kKHNl
bmRlcik7Ci0gICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDApOworICAgIFN1c3BlbmRhYmxlVGltZXI6OmNvbnRleHREZXN0cm95ZWQoKTsK
KyAgICBzdG9wKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8
VD46OmNhbmNlbEV2ZW50KFQqIHNlbmRlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZl
bnRTZW5kZXI8VD46OmZpcmVkKCkKIHsKLSAgICAvLyBSZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMg
c2VuZGVyIGZyb20gYm90aCBsaXN0cy4KLSAgICAvLyBVc2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxv
dyBtdWx0aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8gdGhlIGxpc3RzLgotICAgIHNpemVfdCBz
aXplID0gbV9kaXNwYXRjaFNvb25MaXN0LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAobV9kaXNwYXRjaFNvb25MaXN0W2ldID09IHNl
bmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9IDA7Ci0gICAgfQotICAg
IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlzcGF0Y2hpbmdMaXN0W2ldID09IHNl
bmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gMDsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpCi17Ci0gICAgLy8gTmVlZCB0byBhdm9pZCByZS1lbnRlcmluZyB0aGlzIGZ1bmN0
aW9uOyBpZiBuZXcgZGlzcGF0Y2hlcyBhcmUKLSAgICAvLyBzY2hlZHVsZWQgYmVmb3JlIHRoZSBw
YXJlbnQgZmluaXNoZXMgcHJvY2Vzc2luZyB0aGUgbGlzdCwgdGhleQotICAgIC8vIHdpbGwgc2V0
IGEgdGltZXIgYW5kIGV2ZW50dWFsbHkgYmUgcHJvY2Vzc2VkLgotICAgIGlmICghbV9kaXNwYXRj
aGluZ0xpc3QuaXNFbXB0eSgpKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVyLnN0b3AoKTsKLQotICAgIG1fZGlzcGF0Y2hT
b29uTGlzdC5jaGVja0NvbnNpc3RlbmN5KCk7Ci0KLSAgICBtX2Rpc3BhdGNoaW5nTGlzdC5zd2Fw
KG1fZGlzcGF0Y2hTb29uTGlzdCk7Ci0gICAgc2l6ZV90IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlz
dC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgaWYgKFQqIHNlbmRlciA9IG1fZGlzcGF0Y2hpbmdMaXN0W2ldKSB7Ci0gICAgICAgICAgICBt
X2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7Ci0gICAgICAgICAgICBzZW5kZXItPmRpc3BhdGNoUGVu
ZGluZ0V2ZW50KHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fZGlzcGF0Y2hpbmdMaXN0
LmNsZWFyKCk7CisgICAgbV9vd25lci0+ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CmluZGV4IGY4MmU2MDIuLjAxYjU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKQEAgLTU1LDEyICs1NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIExpbmtFdmVudFNlbmRlciYgbGlua0xvYWRF
dmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChMaW5rRXZlbnRTZW5kZXIs
IHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAgICBy
ZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOwotfQotCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50
OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCkBAIC05MSw4ICs4NSw2IEBA
IEhUTUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAKICAgICBpZiAoaW5Eb2N1bWVu
dCgpKQogICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5yZW1vdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKLQotICAgIGxpbmtMb2FkRXZlbnRTZW5kZXIo
KS5jYW5jZWxFdmVudCh0aGlzKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2Fi
bGVkU3RhdGUoYm9vbCBkaXNhYmxlZCkKQEAgLTM4OSwxNCArMzgxLDkgQEAgYm9vbCBIVE1MTGlu
a0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRN
TExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKLXsKLSAgICBsaW5rTG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2Vu
ZGVyKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCBldmVudFNlbmRlciA9PSAmbGlua0xvYWRFdmVu
dFNlbmRlcigpKTsKKyAgICBtX2V2ZW50U2VuZGVyLmNsZWFyKCk7CiAgICAgaWYgKG1fbG9hZGVk
U2hlZXQpCiAgICAgICAgIGxpbmtMb2FkZWQoKTsKICAgICBlbHNlCkBAIC00MDgsNyArMzk1LDgg
QEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxT
dWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3UKICAgICBpZiAobV9maXJlZExvYWQpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2xvYWRlZFNoZWV0ID0gIWVycm9yT2NjdXJyZWQ7Ci0gICAgbGlua0xv
YWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIGlmICghbV9ldmVu
dFNlbmRlcikKKyAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBMaW5rRXZlbnRT
ZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMzc2MjRjNC4uMDlmYWJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC02OSw4ICs2OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0cmluZyYpOwogICAgIERPTVNldHRhYmxl
VG9rZW5MaXN0KiBzaXplcygpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVu
dChMaW5rRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2Fk
RXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CkBAIC0xNDIsNiArMTQxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RE9NU2V0dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgRGlzYWJsZWRT
dGF0ZSBtX2Rpc2FibGVkU3RhdGU7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0dHJpYnV0
ZTsKKyAgICBPd25QdHI8TGlua0V2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIGJvb2wg
bV9sb2FkaW5nOwogICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lzSW5T
aGFkb3dUcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXgg
YTgxZjNiZC4uZmVkM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
Y3BwCkBAIC00MCwxMiArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVu
dFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZUV2ZW50U2VuZGVyLCBz
aGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0
dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKLX0KLQogaW5saW5lIEhUTUxTdHlsZUVsZW1lbnQ6
OkhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgU3R5bGVFbGVtZW50KGRvY3VtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpCkBAIC02MSw4ICs1NSw2IEBAIEhUTUxTdHlsZUVsZW1lbnQ6On5IVE1MU3R5bGVFbGVtZW50
KCkKICAgICAvLyBEdXJpbmcgdGVhci1kb3duLCB3aWxsUmVtb3ZlIGlzbid0IGNhbGxlZCwgc28g
bV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlIG1heSBzdGlsbCBiZSBSZWdpc3RlcmVkQXNT
Y29wZWQgb3IgUmVnaXN0ZXJlZEluU2hhZG93Um9vdCBoZXJlLgogICAgIC8vIFRoZXJlZm9yZSB3
ZSBjYW4ndCBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09IE5vdFJlZ2lz
dGVyZWQpLgogICAgIFN0eWxlRWxlbWVudDo6Y2xlYXJEb2N1bWVudERhdGEoZG9jdW1lbnQoKSwg
dGhpcyk7Ci0KLSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpAQCAtMjQ1LDE0ICsyMzcsOSBAQCBFbGVtZW50KiBIVE1MU3R5bGVF
bGVtZW50OjpzY29waW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJl
bnRPckhvc3QpOwogfQogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xv
YWRFdmVudHMoKQotewotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5n
RXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnQoU3R5bGVFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ0V2ZW50KCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVy
LCBldmVudFNlbmRlciA9PSAmc3R5bGVMb2FkRXZlbnRTZW5kZXIoKSk7CisgICAgbV9ldmVudFNl
bmRlci5jbGVhcigpOwogICAgIGlmIChtX2xvYWRlZFNoZWV0KQogICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CiAgICAgZWxzZQpAQCAtMjY0LDcgKzI1MSw4IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6bm90
aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjCiAg
ICAgaWYgKG1fZmlyZWRMb2FkKQogICAgICAgICByZXR1cm47CiAgICAgbV9sb2FkZWRTaGVldCA9
ICFlcnJvck9jY3VycmVkOwotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVu
dFNvb24odGhpcyk7CisgICAgaWYgKCFtX2V2ZW50U2VuZGVyKQorICAgICAgICBtX2V2ZW50U2Vu
ZGVyID0gYWRvcHRQdHIobmV3IFN0eWxlRXZlbnRTZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwog
ICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaAppbmRleCBkM2U5OWU0Li5lMTFlYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuaApAQCAtNTgsOCArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNhYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgp
OwogCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpAQCAtODYsNiArODUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoYm9vbCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRhaW5lck5vZGUqKTsKIAorICAgIE93blB0cjxT
dHlsZUV2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIGJvb2wgbV9maXJlZExvYWQ7CiAg
ICAgYm9vbCBtX2xvYWRlZFNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCAzMGI5MjhlLi4zMWZkMjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAKQEAgLTY1LDMwICs2NSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IFZhbHVlQ2hlY2s8V2Vi
Q29yZTo6SW1hZ2VMb2FkZXIqPiB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIElt
YWdlRXZlbnRTZW5kZXImIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChJbWFnZUV2ZW50U2VuZGVyLCBzZW5kZXIsIChldmVudE5hbWVzKCkuYmVmb3Jl
bG9hZEV2ZW50KSk7Ci0gICAgcmV0dXJuIHNlbmRlcjsKLX0KLQotc3RhdGljIEltYWdlRXZlbnRT
ZW5kZXImIGxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFn
ZUV2ZW50U2VuZGVyLCBzZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0
dXJuIHNlbmRlcjsKLX0KLQotc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGVycm9yRXZlbnRTZW5k
ZXIoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2VFdmVudFNlbmRlciwgc2VuZGVy
LCAoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpKTsKLSAgICByZXR1cm4gc2VuZGVyOwotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgcGFnZUlzQmVpbmdEaXNtaXNzZWQoRG9jdW1lbnQqIGRvY3VtZW50
KQotewotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgIHJldHVybiBm
cmFtZSAmJiBmcmFtZS0+bG9hZGVyKCktPnBhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hl
ZCgpICE9IEZyYW1lTG9hZGVyOjpOb0Rpc21pc3NhbDsKLX0KLQogSW1hZ2VMb2FkZXI6OkltYWdl
TG9hZGVyKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAs
IG1faW1hZ2UoMCkKQEAgLTEwNiwxOCArODIsNiBAQCBJbWFnZUxvYWRlcjo6fkltYWdlTG9hZGVy
KCkKICAgICBpZiAobV9pbWFnZSkKICAgICAgICAgbV9pbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMp
OwogCi0gICAgQVNTRVJUKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCB8fCAhYmVmb3JlTG9h
ZEV2ZW50U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cyh0aGlzKSk7Ci0gICAgaWYgKG1faGFzUGVu
ZGluZ0JlZm9yZUxvYWRFdmVudCkKLSAgICAgICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuY2Fu
Y2VsRXZlbnQodGhpcyk7Ci0KLSAgICBBU1NFUlQobV9oYXNQZW5kaW5nTG9hZEV2ZW50IHx8ICFs
b2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRzKHRoaXMpKTsKLSAgICBpZiAobV9oYXNQ
ZW5kaW5nTG9hZEV2ZW50KQotICAgICAgICBsb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0
aGlzKTsKLQotICAgIEFTU0VSVChtX2hhc1BlbmRpbmdFcnJvckV2ZW50IHx8ICFlcnJvckV2ZW50
U2VuZGVyKCkuaGFzUGVuZGluZ0V2ZW50cyh0aGlzKSk7Ci0gICAgaWYgKG1faGFzUGVuZGluZ0Vy
cm9yRXZlbnQpCi0gICAgICAgIGVycm9yRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsK
LQogICAgIC8vIElmIHRoZSBJbWFnZUxvYWRlciBpcyBiZWluZyBkZXN0cm95ZWQgYnV0IGl0IGlz
IHN0aWxsIHByb3RlY3RpbmcgaXRzIGltYWdlLWxvYWRpbmcgRWxlbWVudCwKICAgICAvLyByZW1v
dmUgdGhhdCBwcm90ZWN0aW9uIGhlcmUuCiAgICAgaWYgKG1fZWxlbWVudElzUHJvdGVjdGVkKQpA
QCAtMTM5LDE4ICsxMDMsMTEgQEAgdm9pZCBJbWFnZUxvYWRlcjo6c2V0SW1hZ2VXaXRob3V0Q29u
c2lkZXJpbmdQZW5kaW5nTG9hZEV2ZW50KENhY2hlZEltYWdlKiBuZXdJbWEKICAgICBDYWNoZWRJ
bWFnZSogb2xkSW1hZ2UgPSBtX2ltYWdlLmdldCgpOwogICAgIGlmIChuZXdJbWFnZSAhPSBvbGRJ
bWFnZSkgewogICAgICAgICBtX2ltYWdlID0gbmV3SW1hZ2U7Ci0gICAgICAgIGlmIChtX2hhc1Bl
bmRpbmdCZWZvcmVMb2FkRXZlbnQpIHsKLSAgICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRl
cigpLmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICAgICAgbV9oYXNQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0xvYWRF
dmVudCkgewotICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7
Ci0gICAgICAgICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkgewotICAgICAgICAgICAgZXJyb3JF
dmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICAgICAgbV9oYXNQZW5kaW5n
RXJyb3JFdmVudCA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGlmIChtX2V2ZW50U2VuZGVy
KQorICAgICAgICAgICAgbV9ldmVudFNlbmRlci5jbGVhcigpOworICAgICAgICBtX2hhc1BlbmRp
bmdCZWZvcmVMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgbV9oYXNQZW5kaW5nTG9hZEV2ZW50
ID0gZmFsc2U7CisgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSBmYWxzZTsKICAgICAg
ICAgbV9pbWFnZUNvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgaWYgKG5ld0ltYWdlKQogICAgICAg
ICAgICAgbmV3SW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKQEAgLTIwNiw3ICsxNjMsOCBAQCB2b2lk
IEltYWdlTG9hZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgICAgIGlmICghbmV3SW1hZ2Ug
JiYgIXBhZ2VJc0JlaW5nRGlzbWlzc2VkKGRvY3VtZW50KSkgewogICAgICAgICAgICAgbV9mYWls
ZWRMb2FkVVJMID0gYXR0cjsKICAgICAgICAgICAgIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgPSB0
cnVlOwotICAgICAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRo
aXMpOworICAgICAgICAgICAgaWYgKCFtX2V2ZW50U2VuZGVyKQorICAgICAgICAgICAgICAgIG1f
ZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcgSW1hZ2VFdmVudFNlbmRlcihkb2N1bWVudCwgdGhp
cykpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNsZWFyRmFpbGVkTG9hZFVSTCgpOwog
ICAgIH0gZWxzZSBpZiAoIWF0dHIuaXNOdWxsKCkpIHsKQEAgLTIxNywxMiArMTc1LDggQEAgdm9p
ZCBJbWFnZUxvYWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIAogICAgIENhY2hlZEltYWdl
KiBvbGRJbWFnZSA9IG1faW1hZ2UuZ2V0KCk7CiAgICAgaWYgKG5ld0ltYWdlICE9IG9sZEltYWdl
KSB7Ci0gICAgICAgIGlmIChtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQpCi0gICAgICAgICAg
ICBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsKLSAgICAgICAgaWYg
KG1faGFzUGVuZGluZ0xvYWRFdmVudCkKLSAgICAgICAgICAgIGxvYWRFdmVudFNlbmRlcigpLmNh
bmNlbEV2ZW50KHRoaXMpOwotICAgICAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkKLSAg
ICAgICAgICAgIGVycm9yRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsKKyAgICAgICAg
aWYgKG1fZXZlbnRTZW5kZXIpCisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyLmNsZWFyKCk7CiAK
ICAgICAgICAgbV9pbWFnZSA9IG5ld0ltYWdlOwogICAgICAgICBtX2hhc1BlbmRpbmdCZWZvcmVM
b2FkRXZlbnQgPSAhbV9lbGVtZW50LT5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSAmJiBu
ZXdJbWFnZTsKQEAgLTIzMyw4ICsxODcsOCBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9t
RWxlbWVudCgpCiAgICAgICAgICAgICBpZiAoIW1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+aXNJbWFn
ZURvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZWxlbWVudC0+ZG9jdW1lbnQo
KS0+aGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpCRUZPUkVMT0FEX0xJU1RFTkVSKSkKICAgICAg
ICAgICAgICAgICAgICAgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBiZWZvcmVMb2FkRXZlbnRTZW5kZXIo
KS5kaXNwYXRjaEV2ZW50U29vbih0aGlzKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghbV9l
dmVudFNlbmRlcikKKyAgICAgICAgICAgICAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRy
KG5ldyBJbWFnZUV2ZW50U2VuZGVyKGRvY3VtZW50LCB0aGlzKSk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICB1cGRhdGVSZW5kZXJlcigpOwogCkBAIC0yODAsNyArMjM0LDgg
QEAgdm9pZCBJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlKQogICAgICAgICBzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQo
MCk7CiAKICAgICAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IHRydWU7Ci0gICAgICAgIGVy
cm9yRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbih0aGlzKTsKKyAgICAgICAgaWYgKCFt
X2V2ZW50U2VuZGVyKQorICAgICAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBJ
bWFnZUV2ZW50U2VuZGVyKG1fZWxlbWVudC0+ZG9jdW1lbnQoKSwgdGhpcykpOwogCiAgICAgICAg
IERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBjb25zb2xlTWVzc2FnZSwgKEFTQ0lJTGl0ZXJh
bCgiQ3Jvc3Mtb3JpZ2luIGltYWdlIGxvYWQgZGVuaWVkIGJ5IENyb3NzLU9yaWdpbiBSZXNvdXJj
ZSBTaGFyaW5nIHBvbGljeS4iKSkpOwogICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNv
bGVNZXNzYWdlKTsKQEAgLTMwMSw3ICsyNTYsOCBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBsb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50U29vbih0aGlzKTsKKyAgICBp
ZiAoIW1fZXZlbnRTZW5kZXIpCisgICAgICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcg
SW1hZ2VFdmVudFNlbmRlcihtX2VsZW1lbnQtPmRvY3VtZW50KCksIHRoaXMpKTsKIH0KIAogUmVu
ZGVySW1hZ2VSZXNvdXJjZSogSW1hZ2VMb2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UoKQpAQCAt
MzYxLDE1ICszMTcsMTggQEAgdm9pZCBJbWFnZUxvYWRlcjo6dXBkYXRlZEhhc1BlbmRpbmdFdmVu
dCgpCiAgICAgICAgIG1fZWxlbWVudC0+ZGVyZWYoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6
ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoSW1hZ2VFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCit2b2lk
IEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudCgpCiB7Ci0gICAgQVNTRVJUKGV2ZW50
U2VuZGVyID09ICZiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSB8fCBldmVudFNlbmRlciA9PSAmbG9h
ZEV2ZW50U2VuZGVyKCkgfHwgZXZlbnRTZW5kZXIgPT0gJmVycm9yRXZlbnRTZW5kZXIoKSk7Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBldmVudFNlbmRlci0+ZXZlbnRUeXBl
KCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KQor
ICAgIG1fZXZlbnRTZW5kZXIuY2xlYXIoKTsKKyAgICBpZiAobV9oYXNQZW5kaW5nQmVmb3JlTG9h
ZEV2ZW50KSB7CisgICAgICAgIGlmIChtX2hhc1BlbmRpbmdMb2FkRXZlbnQgfHwgbV9oYXNQZW5k
aW5nRXJyb3JFdmVudCkKKyAgICAgICAgICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcg
SW1hZ2VFdmVudFNlbmRlcihtX2VsZW1lbnQtPmRvY3VtZW50KCksIHRoaXMpKTsKICAgICAgICAg
ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgIH0gZWxzZSBpZiAobV9oYXNQZW5kaW5nTG9hZEV2
ZW50KSB7CisgICAgICAgIGlmIChtX2hhc1BlbmRpbmdFcnJvckV2ZW50KQorICAgICAgICAgICAg
bV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBJbWFnZUV2ZW50U2VuZGVyKG1fZWxlbWVudC0+
ZG9jdW1lbnQoKSwgdGhpcykpOwogICAgICAgICBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsK
LSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50KQorICAgIH0gZWxz
ZSBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkKICAgICAgICAgZGlzcGF0Y2hQZW5kaW5nRXJy
b3JFdmVudCgpOwogfQogCkBAIC0zOTEsNyArMzUwLDYgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlz
cGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCkKICAgICAgICAgbV9pbWFnZSA9IDA7CiAgICAg
fQogCi0gICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7CiAgICAgbV9oYXNQ
ZW5kaW5nTG9hZEV2ZW50ID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKG1fZWxlbWVudC0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykpCkBAIC00MzAsMjEgKzM4OCw2IEBAIHZvaWQgSW1h
Z2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnQoKQogICAgIHVwZGF0ZWRIYXNQZW5k
aW5nRXZlbnQoKTsKIH0KIAotdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVmb3Jl
TG9hZEV2ZW50cygpCi17Ci0gICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5k
aW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRF
dmVudHMoKQotewotICAgIGxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygp
OwotfQotCi12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50cygpCi17
Ci0gICAgZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotfQotCiB2
b2lkIEltYWdlTG9hZGVyOjplbGVtZW50RGlkTW92ZVRvTmV3RG9jdW1lbnQoKQogewogICAgIGNs
ZWFyRmFpbGVkTG9hZFVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0lt
YWdlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAppbmRleCBm
NTlkNGQ1Li44ZDczMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaApAQCAtNjMs
MTEgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudDsgfQogICAgIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5kaW5nTG9hZEV2ZW50
IHx8IG1faGFzUGVuZGluZ0Vycm9yRXZlbnQ7IH0KIAotICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5n
RXZlbnQoSW1hZ2VFdmVudFNlbmRlciopOwotCi0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5k
aW5nQmVmb3JlTG9hZEV2ZW50cygpOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xv
YWRFdmVudHMoKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50cygp
OworICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoKTsKIAogcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopOwpAQCAtOTEsNiArODcs
NyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnQqIG1fZWxlbWVudDsKICAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9pbWFnZTsKICAgICBBdG9taWNTdHJpbmcgbV9mYWlsZWRM
b2FkVVJMOworICAgIE93blB0cjxJbWFnZUV2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAg
IGJvb2wgbV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50IDogMTsKICAgICBib29sIG1faGFzUGVu
ZGluZ0xvYWRFdmVudCA6IDE7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdFcnJvckV2ZW50IDogMTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5k
ZXggNTNiMmM0Yi4uNzEzNDQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTEyNiw5ICsxMjYsNiBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgfQogCiAg
ICAgZG9Xcml0ZShzb3VyY2UudG9TdHJpbmcoKSk7Ci0KLSAgICAvLyBBZnRlciBwYXJzaW5nLCBn
byBhaGVhZCBhbmQgZGlzcGF0Y2ggaW1hZ2UgYmVmb3JlbG9hZCBldmVudHMuCi0gICAgSW1hZ2VM
b2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudHMoKTsKIH0KIAogdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6aGFuZGxlRXJyb3IoWE1MRXJyb3JzOjpFcnJvclR5cGUgdHlwZSwgY29u
c3QgY2hhciogbSwgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKQo=
</data>
<flag name="commit-queue"
          id="203960"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185035</attachid>
            <date>2013-01-28 12:36:07 -0800</date>
            <delta_ts>2013-01-28 20:42:26 -0800</delta_ts>
            <desc>fix build again</desc>
            <filename>107954-proposed.diff</filename>
            <type>text/plain</type>
            <size>18250</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ3ODMzNzUuLjFlY2JlMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMjM4NiwxMyArMjM4Niw2IEBAIHZvaWQgRG9jdW1lbnQ6OmltcGxp
Y2l0Q2xvc2UoKQogICAgICAgICBmLT5hbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRv
Y3VtZW50KHRoaXMpOwogICAgIH0KIAotICAgIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdC
ZWZvcmVMb2FkRXZlbnRzKCk7Ci0gICAgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRF
dmVudHMoKTsKLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXJyb3JFdmVudHMoKTsK
LQotICAgIEhUTUxMaW5rRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAg
IEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKLQogI2lmIEVO
QUJMRShTVkcpCiAgICAgLy8gVG8gYWxpZ24gdGhlIEhUTUwgbG9hZCBldmVudCBhbmQgdGhlIFNW
R0xvYWQgZXZlbnQgZm9yIHRoZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudCwgZmlyZSBpdCBmcm9t
CiAgICAgLy8gaGVyZSwgaW5zdGVhZCBvZiBkb2luZyBpdCBmcm9tIFNWR0VsZW1lbnQ6OmZpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuIChpZiBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkPSJmYWxzZSIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCmluZGV4IDY0NjAzNGMuLjgwN2ZmMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFNlbmRlci5oCkBAIC0yNiw4NyArMjYsNDQgQEAKICNpZm5kZWYgRXZlbnRTZW5k
ZXJfaAogI2RlZmluZSBFdmVudFNlbmRlcl9oCiAKLSNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1
ZGUgIlN1c3BlbmRhYmxlVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXIg
ewordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI6IHByaXZhdGUgU3VzcGVu
ZGFibGVUaW1lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnRTZW5kZXIpOyBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFdmVudFNlbmRlcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRUeXBlOyB9Ci0gICAgdm9pZCBkaXNw
YXRjaEV2ZW50U29vbihUKik7Ci0gICAgdm9pZCBjYW5jZWxFdmVudChUKik7Ci0gICAgdm9pZCBk
aXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBib29sIGhhc1Bl
bmRpbmdFdmVudHMoVCogc2VuZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZGlz
cGF0Y2hTb29uTGlzdC5maW5kKHNlbmRlcikgIT0gbm90Rm91bmQgfHwgbV9kaXNwYXRjaGluZ0xp
c3QuZmluZChzZW5kZXIpICE9IG5vdEZvdW5kOwotICAgIH0KLSNlbmRpZgorICAgIEV2ZW50U2Vu
ZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUKiBvd25lcik7CiAKIHByaXZhdGU6Ci0gICAg
dm9pZCB0aW1lckZpcmVkKFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4qKSB7IGRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpOyB9CisgICAgLy8gU3VzcGVuZGFibGVUaW1lci4KKyAgICB2aXJ0dWFsIHZvaWQg
ZmlyZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCi0gICAgQXRv
bWljU3RyaW5nIG1fZXZlbnRUeXBlOwotICAgIFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4gbV90aW1l
cjsKLSAgICBWZWN0b3I8VCo+IG1fZGlzcGF0Y2hTb29uTGlzdDsKLSAgICBWZWN0b3I8VCo+IG1f
ZGlzcGF0Y2hpbmdMaXN0OworICAgIFQqIG1fb3duZXI7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUpCi0gICAgOiBtX2V2ZW50VHlwZShldmVudFR5cGUpCi0gICAgLCBtX3RpbWVyKHRoaXMs
ICZFdmVudFNlbmRlcjo6dGltZXJGaXJlZCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IEV2ZW50U2Vu
ZGVyPFQ+OjpFdmVudFNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUKiBv
d25lcikKKyAgICA6IFN1c3BlbmRhYmxlVGltZXIoY29udGV4dCkKKyAgICAsIG1fb3duZXIob3du
ZXIpCiB7CisgICAgc3RhcnRPbmVTaG90KDApOworICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaEV2ZW50
U29vbihUKiBzZW5kZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+
Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBwZW5kKHNl
bmRlcik7Ci0gICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDApOworICAgIFN1c3BlbmRhYmxlVGltZXI6OmNvbnRleHREZXN0cm95ZWQoKTsK
KyAgICBzdG9wKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8
VD46OmNhbmNlbEV2ZW50KFQqIHNlbmRlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZl
bnRTZW5kZXI8VD46OmZpcmVkKCkKIHsKLSAgICAvLyBSZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMg
c2VuZGVyIGZyb20gYm90aCBsaXN0cy4KLSAgICAvLyBVc2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxv
dyBtdWx0aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8gdGhlIGxpc3RzLgotICAgIHNpemVfdCBz
aXplID0gbV9kaXNwYXRjaFNvb25MaXN0LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAobV9kaXNwYXRjaFNvb25MaXN0W2ldID09IHNl
bmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9IDA7Ci0gICAgfQotICAg
IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlzcGF0Y2hpbmdMaXN0W2ldID09IHNl
bmRlcikKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gMDsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3BhdGNoUGVuZGlu
Z0V2ZW50cygpCi17Ci0gICAgLy8gTmVlZCB0byBhdm9pZCByZS1lbnRlcmluZyB0aGlzIGZ1bmN0
aW9uOyBpZiBuZXcgZGlzcGF0Y2hlcyBhcmUKLSAgICAvLyBzY2hlZHVsZWQgYmVmb3JlIHRoZSBw
YXJlbnQgZmluaXNoZXMgcHJvY2Vzc2luZyB0aGUgbGlzdCwgdGhleQotICAgIC8vIHdpbGwgc2V0
IGEgdGltZXIgYW5kIGV2ZW50dWFsbHkgYmUgcHJvY2Vzc2VkLgotICAgIGlmICghbV9kaXNwYXRj
aGluZ0xpc3QuaXNFbXB0eSgpKQorICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVyLnN0b3AoKTsKLQotICAgIG1fZGlzcGF0Y2hT
b29uTGlzdC5jaGVja0NvbnNpc3RlbmN5KCk7Ci0KLSAgICBtX2Rpc3BhdGNoaW5nTGlzdC5zd2Fw
KG1fZGlzcGF0Y2hTb29uTGlzdCk7Ci0gICAgc2l6ZV90IHNpemUgPSBtX2Rpc3BhdGNoaW5nTGlz
dC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgaWYgKFQqIHNlbmRlciA9IG1fZGlzcGF0Y2hpbmdMaXN0W2ldKSB7Ci0gICAgICAgICAgICBt
X2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7Ci0gICAgICAgICAgICBzZW5kZXItPmRpc3BhdGNoUGVu
ZGluZ0V2ZW50KHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotICAgIG1fZGlzcGF0Y2hpbmdMaXN0
LmNsZWFyKCk7CisgICAgbV9vd25lci0+ZGlzcGF0Y2hQZW5kaW5nRXZlbnQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
CmluZGV4IGY4MmU2MDIuLjAxYjU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAKQEAgLTU1LDEyICs1NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIExpbmtFdmVudFNlbmRlciYgbGlua0xvYWRF
dmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChMaW5rRXZlbnRTZW5kZXIs
IHNoYXJlZExvYWRFdmVudFNlbmRlciwgKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAgICBy
ZXR1cm4gc2hhcmVkTG9hZEV2ZW50U2VuZGVyOwotfQotCiBpbmxpbmUgSFRNTExpbmtFbGVtZW50
OjpIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgbV9saW5rTG9hZGVyKHRoaXMpCkBAIC05MSw4ICs4NSw2IEBA
IEhUTUxMaW5rRWxlbWVudDo6fkhUTUxMaW5rRWxlbWVudCgpCiAKICAgICBpZiAoaW5Eb2N1bWVu
dCgpKQogICAgICAgICBkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5yZW1vdmVT
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSh0aGlzKTsKLQotICAgIGxpbmtMb2FkRXZlbnRTZW5kZXIo
KS5jYW5jZWxFdmVudCh0aGlzKTsKIH0KIAogdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldERpc2Fi
bGVkU3RhdGUoYm9vbCBkaXNhYmxlZCkKQEAgLTM4OSwxNCArMzgxLDkgQEAgYm9vbCBIVE1MTGlu
a0VsZW1lbnQ6OnNoZWV0TG9hZGVkKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSFRN
TExpbmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnRzKCkKLXsKLSAgICBsaW5rTG9h
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTExp
bmtFbGVtZW50OjpkaXNwYXRjaFBlbmRpbmdFdmVudChMaW5rRXZlbnRTZW5kZXIqIGV2ZW50U2Vu
ZGVyKQordm9pZCBIVE1MTGlua0VsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0V2ZW50KCkKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVyLCBldmVudFNlbmRlciA9PSAmbGlua0xvYWRFdmVu
dFNlbmRlcigpKTsKKyAgICBtX2V2ZW50U2VuZGVyLmNsZWFyKCk7CiAgICAgaWYgKG1fbG9hZGVk
U2hlZXQpCiAgICAgICAgIGxpbmtMb2FkZWQoKTsKICAgICBlbHNlCkBAIC00MDgsNyArMzk1LDgg
QEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6Om5vdGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxT
dWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3UKICAgICBpZiAobV9maXJlZExvYWQpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2xvYWRlZFNoZWV0ID0gIWVycm9yT2NjdXJyZWQ7Ci0gICAgbGlua0xv
YWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIGlmICghbV9ldmVu
dFNlbmRlcikKKyAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBMaW5rRXZlbnRT
ZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwogICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKaW5kZXggMzc2MjRjNC4uMDlmYWJkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCkBAIC02OSw4ICs2OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNpemVzKGNvbnN0IFN0cmluZyYpOwogICAgIERPTVNldHRhYmxl
VG9rZW5MaXN0KiBzaXplcygpIGNvbnN0OwogCi0gICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVu
dChMaW5rRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2Fk
RXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgpOwogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CkBAIC0xNDIsNiArMTQxLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8RE9NU2V0dGFibGVUb2tlbkxpc3Q+IG1fc2l6ZXM7CiAgICAgRGlzYWJsZWRT
dGF0ZSBtX2Rpc2FibGVkU3RhdGU7CiAgICAgTGlua1JlbEF0dHJpYnV0ZSBtX3JlbEF0dHJpYnV0
ZTsKKyAgICBPd25QdHI8TGlua0V2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIGJvb2wg
bV9sb2FkaW5nOwogICAgIGJvb2wgbV9jcmVhdGVkQnlQYXJzZXI7CiAgICAgYm9vbCBtX2lzSW5T
aGFkb3dUcmVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXgg
YTgxZjNiZC4uZmVkM2UzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
Y3BwCkBAIC00MCwxMiArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBTdHlsZUV2ZW50U2VuZGVyJiBzdHlsZUxvYWRFdmVu
dFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZUV2ZW50U2VuZGVyLCBz
aGFyZWRMb2FkRXZlbnRTZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0
dXJuIHNoYXJlZExvYWRFdmVudFNlbmRlcjsKLX0KLQogaW5saW5lIEhUTUxTdHlsZUVsZW1lbnQ6
OkhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKICAgICA6IEhUTUxFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50KQogICAgICwgU3R5bGVFbGVtZW50KGRvY3VtZW50LCBjcmVhdGVkQnlQYXJz
ZXIpCkBAIC02MSw4ICs1NSw2IEBAIEhUTUxTdHlsZUVsZW1lbnQ6On5IVE1MU3R5bGVFbGVtZW50
KCkKICAgICAvLyBEdXJpbmcgdGVhci1kb3duLCB3aWxsUmVtb3ZlIGlzbid0IGNhbGxlZCwgc28g
bV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlIG1heSBzdGlsbCBiZSBSZWdpc3RlcmVkQXNT
Y29wZWQgb3IgUmVnaXN0ZXJlZEluU2hhZG93Um9vdCBoZXJlLgogICAgIC8vIFRoZXJlZm9yZSB3
ZSBjYW4ndCBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09IE5vdFJlZ2lz
dGVyZWQpLgogICAgIFN0eWxlRWxlbWVudDo6Y2xlYXJEb2N1bWVudERhdGEoZG9jdW1lbnQoKSwg
dGhpcyk7Ci0KLSAgICBzdHlsZUxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxTdHlsZUVsZW1lbnQ+IEhUTUxTdHlsZUVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKQpAQCAtMjQ1LDE0ICsyMzcsOSBAQCBFbGVtZW50KiBIVE1MU3R5bGVF
bGVtZW50OjpzY29waW5nRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRvRWxlbWVudChwYXJl
bnRPckhvc3QpOwogfQogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmRpc3BhdGNoUGVuZGluZ0xv
YWRFdmVudHMoKQotewotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5n
RXZlbnRzKCk7Ci19Ci0KLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnQoU3R5bGVFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6
OmRpc3BhdGNoUGVuZGluZ0V2ZW50KCkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGV2ZW50U2VuZGVy
LCBldmVudFNlbmRlciA9PSAmc3R5bGVMb2FkRXZlbnRTZW5kZXIoKSk7CisgICAgbV9ldmVudFNl
bmRlci5jbGVhcigpOwogICAgIGlmIChtX2xvYWRlZFNoZWV0KQogICAgICAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
CiAgICAgZWxzZQpAQCAtMjY0LDcgKzI1MSw4IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6bm90
aWZ5TG9hZGVkU2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjCiAg
ICAgaWYgKG1fZmlyZWRMb2FkKQogICAgICAgICByZXR1cm47CiAgICAgbV9sb2FkZWRTaGVldCA9
ICFlcnJvck9jY3VycmVkOwotICAgIHN0eWxlTG9hZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVu
dFNvb24odGhpcyk7CisgICAgaWYgKCFtX2V2ZW50U2VuZGVyKQorICAgICAgICBtX2V2ZW50U2Vu
ZGVyID0gYWRvcHRQdHIobmV3IFN0eWxlRXZlbnRTZW5kZXIoZG9jdW1lbnQoKSwgdGhpcykpOwog
ICAgIG1fZmlyZWRMb2FkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuaAppbmRleCBkM2U5OWU0Li5lMTFlYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dHlsZUVsZW1lbnQuaApAQCAtNTgsOCArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkaXNhYmxl
ZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIGRpc3Bh
dGNoUGVuZGluZ0V2ZW50KFN0eWxlRXZlbnRTZW5kZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaFBlbmRpbmdMb2FkRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudCgp
OwogCiBwcml2YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwpAQCAtODYsNiArODUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoYm9vbCk7CiAgICAgdm9pZCB1
bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRhaW5lck5vZGUqKTsKIAorICAgIE93blB0cjxT
dHlsZUV2ZW50U2VuZGVyPiBtX2V2ZW50U2VuZGVyOwogICAgIGJvb2wgbV9maXJlZExvYWQ7CiAg
ICAgYm9vbCBtX2xvYWRlZFNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cAppbmRleCAzMGI5MjhlLi43MGQ4NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAKQEAgLTY1LDI0ICs2NSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IFZhbHVlQ2hlY2s8V2Vi
Q29yZTo6SW1hZ2VMb2FkZXIqPiB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIElt
YWdlRXZlbnRTZW5kZXImIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChJbWFnZUV2ZW50U2VuZGVyLCBzZW5kZXIsIChldmVudE5hbWVzKCkuYmVmb3Jl
bG9hZEV2ZW50KSk7Ci0gICAgcmV0dXJuIHNlbmRlcjsKLX0KLQotc3RhdGljIEltYWdlRXZlbnRT
ZW5kZXImIGxvYWRFdmVudFNlbmRlcigpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFn
ZUV2ZW50U2VuZGVyLCBzZW5kZXIsIChldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgcmV0
dXJuIHNlbmRlcjsKLX0KLQotc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGVycm9yRXZlbnRTZW5k
ZXIoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoSW1hZ2VFdmVudFNlbmRlciwgc2VuZGVy
LCAoZXZlbnROYW1lcygpLmVycm9yRXZlbnQpKTsKLSAgICByZXR1cm4gc2VuZGVyOwotfQotCiBz
dGF0aWMgaW5saW5lIGJvb2wgcGFnZUlzQmVpbmdEaXNtaXNzZWQoRG9jdW1lbnQqIGRvY3VtZW50
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwpAQCAtMTA2LDE4ICs4
OCw2IEBAIEltYWdlTG9hZGVyOjp+SW1hZ2VMb2FkZXIoKQogICAgIGlmIChtX2ltYWdlKQogICAg
ICAgICBtX2ltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CiAKLSAgICBBU1NFUlQobV9oYXNQZW5k
aW5nQmVmb3JlTG9hZEV2ZW50IHx8ICFiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5n
RXZlbnRzKHRoaXMpKTsKLSAgICBpZiAobV9oYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KQotICAg
ICAgICBiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsKLQotICAgIEFT
U0VSVChtX2hhc1BlbmRpbmdMb2FkRXZlbnQgfHwgIWxvYWRFdmVudFNlbmRlcigpLmhhc1BlbmRp
bmdFdmVudHModGhpcykpOwotICAgIGlmIChtX2hhc1BlbmRpbmdMb2FkRXZlbnQpCi0gICAgICAg
IGxvYWRFdmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwotCi0gICAgQVNTRVJUKG1faGFz
UGVuZGluZ0Vycm9yRXZlbnQgfHwgIWVycm9yRXZlbnRTZW5kZXIoKS5oYXNQZW5kaW5nRXZlbnRz
KHRoaXMpKTsKLSAgICBpZiAobV9oYXNQZW5kaW5nRXJyb3JFdmVudCkKLSAgICAgICAgZXJyb3JF
dmVudFNlbmRlcigpLmNhbmNlbEV2ZW50KHRoaXMpOwotCiAgICAgLy8gSWYgdGhlIEltYWdlTG9h
ZGVyIGlzIGJlaW5nIGRlc3Ryb3llZCBidXQgaXQgaXMgc3RpbGwgcHJvdGVjdGluZyBpdHMgaW1h
Z2UtbG9hZGluZyBFbGVtZW50LAogICAgIC8vIHJlbW92ZSB0aGF0IHByb3RlY3Rpb24gaGVyZS4K
ICAgICBpZiAobV9lbGVtZW50SXNQcm90ZWN0ZWQpCkBAIC0xMzksMTggKzEwOSwxMSBAQCB2b2lk
IEltYWdlTG9hZGVyOjpzZXRJbWFnZVdpdGhvdXRDb25zaWRlcmluZ1BlbmRpbmdMb2FkRXZlbnQo
Q2FjaGVkSW1hZ2UqIG5ld0ltYQogICAgIENhY2hlZEltYWdlKiBvbGRJbWFnZSA9IG1faW1hZ2Uu
Z2V0KCk7CiAgICAgaWYgKG5ld0ltYWdlICE9IG9sZEltYWdlKSB7CiAgICAgICAgIG1faW1hZ2Ug
PSBuZXdJbWFnZTsKLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCkgewot
ICAgICAgICAgICAgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7Ci0g
ICAgICAgICAgICBtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQgPSBmYWxzZTsKLSAgICAgICAg
fQotICAgICAgICBpZiAobV9oYXNQZW5kaW5nTG9hZEV2ZW50KSB7Ci0gICAgICAgICAgICBsb2Fk
RXZlbnRTZW5kZXIoKS5jYW5jZWxFdmVudCh0aGlzKTsKLSAgICAgICAgICAgIG1faGFzUGVuZGlu
Z0xvYWRFdmVudCA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX2hhc1BlbmRpbmdF
cnJvckV2ZW50KSB7Ci0gICAgICAgICAgICBlcnJvckV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQo
dGhpcyk7Ci0gICAgICAgICAgICBtX2hhc1BlbmRpbmdFcnJvckV2ZW50ID0gZmFsc2U7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fZXZlbnRTZW5kZXIpCisgICAgICAgICAgICBtX2V2ZW50U2Vu
ZGVyLmNsZWFyKCk7CisgICAgICAgIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCA9IGZhbHNl
OworICAgICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsKKyAgICAgICAgbV9oYXNQ
ZW5kaW5nRXJyb3JFdmVudCA9IGZhbHNlOwogICAgICAgICBtX2ltYWdlQ29tcGxldGUgPSB0cnVl
OwogICAgICAgICBpZiAobmV3SW1hZ2UpCiAgICAgICAgICAgICBuZXdJbWFnZS0+YWRkQ2xpZW50
KHRoaXMpOwpAQCAtMjA2LDcgKzE2OSw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21F
bGVtZW50KCkKICAgICAgICAgaWYgKCFuZXdJbWFnZSAmJiAhcGFnZUlzQmVpbmdEaXNtaXNzZWQo
ZG9jdW1lbnQpKSB7CiAgICAgICAgICAgICBtX2ZhaWxlZExvYWRVUkwgPSBhdHRyOwogICAgICAg
ICAgICAgbV9oYXNQZW5kaW5nRXJyb3JFdmVudCA9IHRydWU7Ci0gICAgICAgICAgICBlcnJvckV2
ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24odGhpcyk7CisgICAgICAgICAgICBpZiAoIW1f
ZXZlbnRTZW5kZXIpCisgICAgICAgICAgICAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5l
dyBJbWFnZUV2ZW50U2VuZGVyKGRvY3VtZW50LCB0aGlzKSk7CiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgY2xlYXJGYWlsZWRMb2FkVVJMKCk7CiAgICAgfSBlbHNlIGlmICghYXR0ci5pc051
bGwoKSkgewpAQCAtMjE3LDEyICsxODEsOCBAQCB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVGcm9t
RWxlbWVudCgpCiAgICAgCiAgICAgQ2FjaGVkSW1hZ2UqIG9sZEltYWdlID0gbV9pbWFnZS5nZXQo
KTsKICAgICBpZiAobmV3SW1hZ2UgIT0gb2xkSW1hZ2UpIHsKLSAgICAgICAgaWYgKG1faGFzUGVu
ZGluZ0JlZm9yZUxvYWRFdmVudCkKLSAgICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigp
LmNhbmNlbEV2ZW50KHRoaXMpOwotICAgICAgICBpZiAobV9oYXNQZW5kaW5nTG9hZEV2ZW50KQot
ICAgICAgICAgICAgbG9hZEV2ZW50U2VuZGVyKCkuY2FuY2VsRXZlbnQodGhpcyk7Ci0gICAgICAg
IGlmIChtX2hhc1BlbmRpbmdFcnJvckV2ZW50KQotICAgICAgICAgICAgZXJyb3JFdmVudFNlbmRl
cigpLmNhbmNlbEV2ZW50KHRoaXMpOworICAgICAgICBpZiAobV9ldmVudFNlbmRlcikKKyAgICAg
ICAgICAgIG1fZXZlbnRTZW5kZXIuY2xlYXIoKTsKIAogICAgICAgICBtX2ltYWdlID0gbmV3SW1h
Z2U7CiAgICAgICAgIG1faGFzUGVuZGluZ0JlZm9yZUxvYWRFdmVudCA9ICFtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPmlzSW1hZ2VEb2N1bWVudCgpICYmIG5ld0ltYWdlOwpAQCAtMjMzLDggKzE5Myw4
IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZUZyb21FbGVtZW50KCkKICAgICAgICAgICAgIGlm
ICghbV9lbGVtZW50LT5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghbV9lbGVtZW50LT5kb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1l
bnQ6OkJFRk9SRUxPQURfTElTVEVORVIpKQogICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFBl
bmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGJlZm9yZUxvYWRFdmVudFNlbmRlcigpLmRpc3BhdGNoRXZlbnRTb29uKHRoaXMp
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFtX2V2ZW50U2VuZGVyKQorICAgICAgICAgICAg
ICAgICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIobmV3IEltYWdlRXZlbnRTZW5kZXIoZG9j
dW1lbnQsIHRoaXMpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHVwZGF0
ZVJlbmRlcmVyKCk7CiAKQEAgLTI4MCw3ICsyNDAsOCBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgICAgIHNldEltYWdlV2l0
aG91dENvbnNpZGVyaW5nUGVuZGluZ0xvYWRFdmVudCgwKTsKIAogICAgICAgICBtX2hhc1BlbmRp
bmdFcnJvckV2ZW50ID0gdHJ1ZTsKLSAgICAgICAgZXJyb3JFdmVudFNlbmRlcigpLmRpc3BhdGNo
RXZlbnRTb29uKHRoaXMpOworICAgICAgICBpZiAoIW1fZXZlbnRTZW5kZXIpCisgICAgICAgICAg
ICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIobmV3IEltYWdlRXZlbnRTZW5kZXIobV9lbGVtZW50
LT5kb2N1bWVudCgpLCB0aGlzKSk7CiAKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJDcm9zcy1vcmlnaW4gaW1hZ2UgbG9h
ZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpKSk7CiAg
ICAgICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwpAQCAtMzAxLDcgKzI2
Miw4IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvYWRFdmVudFNlbmRlcigp
LmRpc3BhdGNoRXZlbnRTb29uKHRoaXMpOworICAgIGlmICghbV9ldmVudFNlbmRlcikKKyAgICAg
ICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBJbWFnZUV2ZW50U2VuZGVyKG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKSwgdGhpcykpOwogfQogCiBSZW5kZXJJbWFnZVJlc291cmNlKiBJbWFnZUxv
YWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJjZSgpCkBAIC0zNjEsMTUgKzMyMywxOCBAQCB2b2lkIElt
YWdlTG9hZGVyOjp1cGRhdGVkSGFzUGVuZGluZ0V2ZW50KCkKICAgICAgICAgbV9lbGVtZW50LT5k
ZXJlZigpOwogfQogCi12b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudChJbWFn
ZUV2ZW50U2VuZGVyKiBldmVudFNlbmRlcikKK3ZvaWQgSW1hZ2VMb2FkZXI6OmRpc3BhdGNoUGVu
ZGluZ0V2ZW50KCkKIHsKLSAgICBBU1NFUlQoZXZlbnRTZW5kZXIgPT0gJmJlZm9yZUxvYWRFdmVu
dFNlbmRlcigpIHx8IGV2ZW50U2VuZGVyID09ICZsb2FkRXZlbnRTZW5kZXIoKSB8fCBldmVudFNl
bmRlciA9PSAmZXJyb3JFdmVudFNlbmRlcigpKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSA9IGV2ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKLSAgICBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQpCisgICAgbV9ldmVudFNlbmRlci5jbGVhcigp
OworICAgIGlmIChtX2hhc1BlbmRpbmdCZWZvcmVMb2FkRXZlbnQpIHsKKyAgICAgICAgaWYgKG1f
aGFzUGVuZGluZ0xvYWRFdmVudCB8fCBtX2hhc1BlbmRpbmdFcnJvckV2ZW50KQorICAgICAgICAg
ICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBJbWFnZUV2ZW50U2VuZGVyKG1fZWxlbWVu
dC0+ZG9jdW1lbnQoKSwgdGhpcykpOwogICAgICAgICBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2Fk
RXZlbnQoKTsKLSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpCisg
ICAgfSBlbHNlIGlmIChtX2hhc1BlbmRpbmdMb2FkRXZlbnQpIHsKKyAgICAgICAgaWYgKG1faGFz
UGVuZGluZ0Vycm9yRXZlbnQpCisgICAgICAgICAgICBtX2V2ZW50U2VuZGVyID0gYWRvcHRQdHIo
bmV3IEltYWdlRXZlbnRTZW5kZXIobV9lbGVtZW50LT5kb2N1bWVudCgpLCB0aGlzKSk7CiAgICAg
ICAgIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudCgpOwotICAgIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLmVycm9yRXZlbnQpCisgICAgfSBlbHNlIGlmIChtX2hhc1BlbmRpbmdFcnJvckV2
ZW50KQogICAgICAgICBkaXNwYXRjaFBlbmRpbmdFcnJvckV2ZW50KCk7CiB9CiAKQEAgLTM5MSw3
ICszNTYsNiBAQCB2b2lkIEltYWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZl
bnQoKQogICAgICAgICBtX2ltYWdlID0gMDsKICAgICB9CiAKLSAgICBsb2FkRXZlbnRTZW5kZXIo
KS5jYW5jZWxFdmVudCh0aGlzKTsKICAgICBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgPSBmYWxzZTsK
ICAgICAKICAgICBpZiAobV9lbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFn
KSkKQEAgLTQzMCwyMSArMzk0LDYgQEAgdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5n
RXJyb3JFdmVudCgpCiAgICAgdXBkYXRlZEhhc1BlbmRpbmdFdmVudCgpOwogfQogCi12b2lkIElt
YWdlTG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCkKLXsKLSAgICBiZWZv
cmVMb2FkRXZlbnRTZW5kZXIoKS5kaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKLX0KLQotdm9pZCBJ
bWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpCi17Ci0gICAgbG9hZEV2ZW50
U2VuZGVyKCkuZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgSW1hZ2VMb2FkZXI6
OmRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCkKLXsKLSAgICBlcnJvckV2ZW50U2VuZGVyKCku
ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KIHZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnRE
aWRNb3ZlVG9OZXdEb2N1bWVudCgpCiB7CiAgICAgY2xlYXJGYWlsZWRMb2FkVVJMKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCmluZGV4IGY1OWQ0ZDUuLjhkNzMzN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCkBAIC02MywxMSArNjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNQZW5k
aW5nQmVmb3JlTG9hZEV2ZW50OyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25z
dCB7IHJldHVybiBtX2hhc1BlbmRpbmdMb2FkRXZlbnQgfHwgbV9oYXNQZW5kaW5nRXJyb3JFdmVu
dDsgfQogCi0gICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudChJbWFnZUV2ZW50U2VuZGVyKik7
Ci0KLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnRzKCk7Ci0g
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwotICAgIHN0YXRpYyB2
b2lkIGRpc3BhdGNoUGVuZGluZ0Vycm9yRXZlbnRzKCk7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRp
bmdFdmVudCgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKik7CkBAIC05MSw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgRWxlbWVu
dCogbV9lbGVtZW50OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2lt
YWdlOwogICAgIEF0b21pY1N0cmluZyBtX2ZhaWxlZExvYWRVUkw7CisgICAgT3duUHRyPEltYWdl
RXZlbnRTZW5kZXI+IG1fZXZlbnRTZW5kZXI7CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdCZWZvcmVM
b2FkRXZlbnQgOiAxOwogICAgIGJvb2wgbV9oYXNQZW5kaW5nTG9hZEV2ZW50IDogMTsKICAgICBi
b29sIG1faGFzUGVuZGluZ0Vycm9yRXZlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
cGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA1M2IyYzRiLi43MTM0NDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
MTI2LDkgKzEyNiw2IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICB9CiAKICAgICBkb1dyaXRlKHNvdXJjZS50b1N0cmlu
ZygpKTsKLQotICAgIC8vIEFmdGVyIHBhcnNpbmcsIGdvIGFoZWFkIGFuZCBkaXNwYXRjaCBpbWFn
ZSBiZWZvcmVsb2FkIGV2ZW50cy4KLSAgICBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nQmVm
b3JlTG9hZEV2ZW50cygpOwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpoYW5kbGVFcnJv
cihYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCBjaGFyKiBtLCBUZXh0UG9zaXRpb24g
cG9zaXRpb24pCg==
</data>
<flag name="commit-queue"
          id="204095"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>