<?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>140920</bug_id>
          
          <creation_ts>2015-01-26 19:35:52 -0800</creation_ts>
          <short_desc>Introduce Document::body() for call sites interested in the &lt;body&gt; element</short_desc>
          <delta_ts>2015-01-26 23:05:16 -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>DOM</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064355</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-26 19:35:52 -0800</bug_when>
    <thetext>Introduce Document::body() for call sites interested in the &lt;body&gt; element only (not &lt;frameset&gt; like Document::bodyOrFrameset() does).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064364</commentid>
    <comment_count>1</comment_count>
      <attachid>245404</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-26 19:53:35 -0800</bug_when>
    <thetext>Created attachment 245404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064408</commentid>
    <comment_count>2</comment_count>
      <attachid>245404</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-26 21:41:57 -0800</bug_when>
    <thetext>Comment on attachment 245404
Patch

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

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1793
&gt; +        auto* rootObject = renderer().document().documentElement() ? renderer().document().documentElement()-&gt;renderer() : nullptr;

Surprised you didn’t add a local variable for documentElement here given what you did everywhere else

&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1806
&gt; +        auto* bodyRenderer = body ? body-&gt;renderer() : nullptr;
&gt; +        if (!bodyRenderer)
&gt;              return false;

Could just return false one more time a line earlier instead of using ? : here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064412</commentid>
    <comment_count>3</comment_count>
      <attachid>245404</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-26 21:50:03 -0800</bug_when>
    <thetext>Comment on attachment 245404
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1793
&gt;&gt; +        auto* rootObject = renderer().document().documentElement() ? renderer().document().documentElement()-&gt;renderer() : nullptr;
&gt; 
&gt; Surprised you didn’t add a local variable for documentElement here given what you did everywhere else

documentElement() is a trivial getter. I cached the return value of body() and bodyOrFrameset() because those do tree traversal.

&gt;&gt; Source/WebCore/rendering/RenderLayerBacking.cpp:1806
&gt;&gt;              return false;
&gt; 
&gt; Could just return false one more time a line earlier instead of using ? : here

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064414</commentid>
    <comment_count>4</comment_count>
      <attachid>245418</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-26 21:53:10 -0800</bug_when>
    <thetext>Created attachment 245418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064419</commentid>
    <comment_count>5</comment_count>
      <attachid>245419</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-26 21:56:16 -0800</bug_when>
    <thetext>Created attachment 245419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064435</commentid>
    <comment_count>6</comment_count>
      <attachid>245419</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-26 23:05:10 -0800</bug_when>
    <thetext>Comment on attachment 245419
Patch

Clearing flags on attachment: 245419

Committed r179172: &lt;http://trac.webkit.org/changeset/179172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064436</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-26 23:05:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245404</attachid>
            <date>2015-01-26 19:53:35 -0800</date>
            <delta_ts>2015-01-26 21:53:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140920-20150126195338.patch</filename>
            <type>text/plain</type>
            <size>27532</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3NjJmNzA2MmFmMDI3
OTg5N2M0YmI5MTdiMTAzMWFhYTljYjY4NS4uNjE0Mzc1MGY5OWIyNTc1YzM4MGUxNmQwYzIxMGQy
OTUzNDk4MzQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE1LTAxLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW50cm9kdWNlIERvY3VtZW50
Ojpib2R5KCkgZm9yIGNhbGwgc2l0ZXMgaW50ZXJlc3RlZCBpbiB0aGUgPGJvZHk+IGVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDkyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZSBEb2N1bWVudDo6Ym9keSgpIG1ldGhvZCBmb3IgY2FsbCBzaXRlcyBpbnRlcmVzdGVkIG9ubHkg
aW4gdGhlCisgICAgICAgIGRvY3VtZW50J3MgPGJvZHk+IGVsZW1lbnQgKG5vdCB0aGUgPGZyYW1l
c2V0PikuIEFsc28gY2xlYW4gdXAgdGhlIGNhbGwKKyAgICAgICAgc2l0ZXMgb2YgRG9jdW1lbnQ6
OmJvZHlPckZyYW1lc2V0KCkgdG8gY2FjaGUgdGhlIHJldHVybiB2YWx1ZSB3aGVuCisgICAgICAg
IHN1aXRhYmxlIGFzIHRoaXMgbWV0aG9kIGRvZXMgYSB0cmVlIHRyYXZlcnNhbC4KKworICAgICAg
ICBUaGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSBiZWhhdmlvciwgaXQgbWVyZWx5IHBvcnRzIGNh
bGxzIHNpdGVzIHRoYXQKKyAgICAgICAgd2VyZSBjYWxsaW5nIERvY3VtZW50Ojpib2R5T3JGcmFt
ZXNldCgpIHRoZW4gY2hlY2tpbmcgaWYgdGhlIHRhZyB3YXMKKyAgICAgICAgPGJvZHk+LCB0byBj
YWxsIERvY3VtZW50Ojpib2R5KCkgaW5zdGVhZC4gRG9pbmcgc28gaXMgbW9yZSBlZmZpY2llbnQK
KyAgICAgICAgYW5kIGNsZWFyZXIuCisKKzIwMTUtMDEtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKwogICAgICAgICBSZW5hbWUgRG9jdW1lbnQ6OmJvZHkoKSB0byBEb2N1bWVu
dDo6Ym9keU9yRnJhbWVzZXQoKSBmb3IgY2xhcml0eQogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwOTAyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDNlYmQyYjcyYTUyYTE0MzJjYmI3YzJmNjc5ZWQ1NjAxMjkyNWQ0Y2QuLmY2NTA0MmY4Y2U0
YmUzNWYzMjBkOTcxNmI2Y2NlNWIwMDNiYzNlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjMyNCwxMyArMjMyNCwyMSBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogICAg
IHNldFJlYWR5U3RhdGUoTG9hZGluZyk7CiB9CiAKK0hUTUxCb2R5RWxlbWVudCogRG9jdW1lbnQ6
OmJvZHkoKSBjb25zdAoreworICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsK
KyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBj
aGlsZHJlbk9mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KCplbGVtZW50KS5maXJzdCgpOworfQorCiBI
VE1MRWxlbWVudCogRG9jdW1lbnQ6OmJvZHlPckZyYW1lc2V0KCkgY29uc3QKIHsKICAgICAvLyBJ
ZiB0aGUgZG9jdW1lbnQgZWxlbWVudCBjb250YWlucyBib3RoIGEgZnJhbWVzZXQgYW5kIGEgYm9k
eSwgdGhlIGZyYW1lc2V0IHdpbnMuCi0gICAgYXV0byBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50
KCk7CisgICAgYXV0byogZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmICghZWxl
bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKGF1dG8gZnJhbWVzZXQgPSBj
aGlsZHJlbk9mVHlwZTxIVE1MRnJhbWVTZXRFbGVtZW50PigqZWxlbWVudCkuZmlyc3QoKSkKKyAg
ICBpZiAoYXV0byogZnJhbWVzZXQgPSBjaGlsZHJlbk9mVHlwZTxIVE1MRnJhbWVTZXRFbGVtZW50
PigqZWxlbWVudCkuZmlyc3QoKSkKICAgICAgICAgcmV0dXJuIGZyYW1lc2V0OwogICAgIHJldHVy
biBjaGlsZHJlbk9mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KCplbGVtZW50KS5maXJzdCgpOwogfQpA
QCAtMjMzOSw2ICsyMzQ3LDkgQEAgdm9pZCBEb2N1bWVudDo6c2V0Qm9keU9yRnJhbWVzZXQoUGFz
c1JlZlB0cjxIVE1MRWxlbWVudD4gcHJwTmV3Qm9keSwgRXhjZXB0aW9uQ28KIHsKICAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG5ld0JvZHkgPSBwcnBOZXdCb2R5OwogCisgICAgLy8gRklYTUU6IFRo
aXMgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGEgPGZyYW1lc2V0PiBFbGVtZW50LCBvbmx5IGEg
PGJvZHk+LiBUaGlzIGRvZXMKKyAgICAvLyBub3QgbWF0Y2ggdGhlIEhUTUwgc3BlY2lmaWNhdGlv
bjoKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRt
bCNkb20tZG9jdW1lbnQtYm9keQogICAgIGlmICghbmV3Qm9keSB8fCAhZG9jdW1lbnRFbGVtZW50
KCkgfHwgIW5ld0JvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsgCiAgICAgICAgIGVjID0gSElF
UkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICByZXR1cm47CkBAIC0yNTQyLDcgKzI1NTMsNyBA
QCBib29sIERvY3VtZW50OjpzaG91bGRTY2hlZHVsZUxheW91dCgpCiAgICAgLy8gICAgKGIpIE9u
bHkgc2NoZWR1bGUgbGF5b3V0IG9uY2Ugd2UgaGF2ZSBhIGJvZHkgZWxlbWVudC4KIAogICAgIHJl
dHVybiAoaGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgJiYgYm9keU9yRnJhbWVzZXQoKSkKLSAgICAg
ICAgfHwgKGRvY3VtZW50RWxlbWVudCgpICYmICFkb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFt
ZShodG1sVGFnKSk7CisgICAgICAgIHx8IChkb2N1bWVudEVsZW1lbnQoKSAmJiAhaXM8SFRNTEh0
bWxFbGVtZW50PigqZG9jdW1lbnRFbGVtZW50KCkpKTsKIH0KICAgICAKIGJvb2wgRG9jdW1lbnQ6
OmlzTGF5b3V0VGltZXJBY3RpdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NTc4YjQyODNk
MDkzMGE3OGRjZmUzZTA2YmE0YTA0N2UzMTk2NDhjLi5mNDczNDk0ZDdhYjVmNmU1ZDRiOWE3MGIz
ODNlNmZmNGUzY2MzMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTAxLDkgKzEwMSwxMCBA
QCBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGb3JtQ29udHJvbGxlcjsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgRnJhbWVWaWV3OworY2xhc3MgSFRNTEFsbENvbGxlY3Rpb247CitjbGFzcyBIVE1MQm9k
eUVsZW1lbnQ7CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxDb2xsZWN0aW9u
OwotY2xhc3MgSFRNTEFsbENvbGxlY3Rpb247CiBjbGFzcyBIVE1MRG9jdW1lbnQ7CiBjbGFzcyBI
VE1MRWxlbWVudDsKIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKQEAgLTkzNyw2ICs5Mzgs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaGFzVmFsaWROYW1lc3BhY2VGb3JFbGVtZW50
cyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgc3RhdGljIGJvb2wgaGFzVmFsaWROYW1lc3Bh
Y2VGb3JBdHRyaWJ1dGVzKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAorICAgIEhUTUxCb2R5RWxl
bWVudCogYm9keSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIEhUTUxFbGVtZW50KiBib2R5
T3JGcmFtZXNldCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Qm9keU9yRnJhbWVzZXQoUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4sIEV4Y2VwdGlvbkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCAzZTBlODk5NTNjOGJjNjgzYmY2NjU3MzVhMjQxMDc1
YmZkN2ZlZDdhLi40ZDExZjU4MjNkMjhjY2MxYTUzODRhZDZiZDEyYzAzYjRjYjA2MDFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjEwOCwxMCArMjEw
OCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbkZyb21Ob25lKCkKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBhdXRvKiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudEVsZW1lbnQpCi0gICAgICAg
IHJldHVybjsKLSAgICBpZiAoYXV0byBib2R5ID0gY2hpbGRyZW5PZlR5cGU8SFRNTEJvZHlFbGVt
ZW50PigqZG9jdW1lbnRFbGVtZW50KS5maXJzdCgpKQorICAgIGlmIChhdXRvKiBib2R5ID0gZG9j
dW1lbnQtPmJvZHkoKSkKICAgICAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZmly
c3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGJvZHkpLCBET1dOU1RSRUFNKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAppbmRleCBmZmFmZmM0MGMyMmVl
NjIwMWVmZDk4YWZmNjA4MWJmYmMxN2UzMzlkLi40Yjc0NjViNjIwMjYzYjVjZTJhY2M3OTFjMTk0
MWFkYThmYTk0OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQ
b3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCkBAIC01MzYsOCArNTM2LDExIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6Y2Fub25p
Y2FsUG9zaXRpb24oY29uc3QgUG9zaXRpb24mIHBhc3NlZFBvc2l0aW9uKQogCiAgICAgLy8gVGhl
IG5ldyBwb3NpdGlvbiBtdXN0IGJlIGluIHRoZSBzYW1lIGVkaXRhYmxlIGVsZW1lbnQuIEVuZm9y
Y2UgdGhhdCBmaXJzdC4KICAgICAvLyBVbmxlc3MgdGhlIGRlc2NlbnQgaXMgZnJvbSBhIG5vbi1l
ZGl0YWJsZSBodG1sIGVsZW1lbnQgdG8gYW4gZWRpdGFibGUgYm9keS4KLSAgICBpZiAobm9kZSAm
JiBub2RlLT5oYXNUYWdOYW1lKGh0bWxUYWcpICYmICFub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkg
JiYgbm9kZS0+ZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpICYmIG5vZGUtPmRvY3VtZW50KCku
Ym9keU9yRnJhbWVzZXQoKS0+aGFzRWRpdGFibGVTdHlsZSgpKQotICAgICAgICByZXR1cm4gbmV4
dC5pc05vdE51bGwoKSA/IG5leHQgOiBwcmV2OworICAgIGlmIChpczxIVE1MSHRtbEVsZW1lbnQ+
KG5vZGUpICYmICFub2RlLT5oYXNFZGl0YWJsZVN0eWxlKCkpIHsKKyAgICAgICAgYXV0byogYm9k
eSA9IG5vZGUtPmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKTsKKyAgICAgICAgaWYgKGJvZHkg
JiYgYm9keS0+aGFzRWRpdGFibGVTdHlsZSgpKQorICAgICAgICAgICAgcmV0dXJuIG5leHQuaXNO
b3ROdWxsKCkgPyBuZXh0IDogcHJldjsKKyAgICB9CiAKICAgICBOb2RlKiBlZGl0aW5nUm9vdCA9
IGVkaXRhYmxlUm9vdEZvclBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXggYTNkMDUyMWJjNTNlZDY1ZmFjODBlNDFkMGM5ZGE1
MmExMmVlOGJlOS4uYzA1ZTFhZGEwMzVjMDBiNTEwZjY5NTBkNTUwYTUwMmUwN2VhYjc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1
ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKQEAgLTEwNyw2ICsxMDgsOSBAQCBpbnQgSFRNTERvY3VtZW50OjpoZWln
aHQoKQogCiBTdHJpbmcgSFRNTERvY3VtZW50OjpkaXIoKQogeworICAgIC8vIEZJWE1FOiBUaGUg
SFRNTCBzcGVjaWZpY2F0aW9uIHNheXMgdGhpcyBpcyBzdXBwb3NlZCB0byByZWZsZWN0IHRoZSAn
ZGlyJworICAgIC8vIGNvbnRlbnQgYXR0cmlidXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudCwgbm90
IHRoZSBib2R5OgorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L2RvbS5odG1sI2RvbS1kb2N1bWVudC1kaXIKICAgICBpZiAoYXV0byogYm9keSA9IGJvZHlPckZy
YW1lc2V0KCkpCiAgICAgICAgIHJldHVybiBib2R5LT5mYXN0R2V0QXR0cmlidXRlKGRpckF0dHIp
OwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTExNCw2ICsxMTgsOSBAQCBTdHJpbmcgSFRNTERv
Y3VtZW50OjpkaXIoKQogCiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0RGlyKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7CisgICAgLy8gRklYTUU6IFRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cyB0aGlz
IGlzIHN1cHBvc2VkIHRvIHJlZmxlY3QgdGhlICdkaXInCisgICAgLy8gY29udGVudCBhdHRyaWJ1
dGUgb2YgdGhlIDxodG1sPiBlbGVtZW50LCBub3QgdGhlIGJvZHk6CisgICAgLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0bWwjZG9tLWRvY3VtZW50LWRpcgog
ICAgIGlmIChhdXRvKiBib2R5ID0gYm9keU9yRnJhbWVzZXQoKSkKICAgICAgICAgYm9keS0+c2V0
QXR0cmlidXRlKGRpckF0dHIsIHZhbHVlKTsKIH0KQEAgLTEzNyw4MiArMTQ0LDcyIEBAIHZvaWQg
SFRNTERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKIGNvbnN0
IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50OjpiZ0NvbG9yKCkgY29uc3QKIHsKLSAgICBIVE1M
RWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlmICghaXM8SFRN
TEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCisgICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5
KCk7CisgICAgaWYgKCFib2R5RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAg
ICByZXR1cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIpOwogfQog
CiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0QmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewot
ICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYg
KCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYmdjb2xvckF0dHIsIHZhbHVlKTsKKyAgICBpZiAo
YXV0byogYm9keUVsZW1lbnQgPSBib2R5KCkpCisgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRy
aWJ1dGUoYmdjb2xvckF0dHIsIHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
RG9jdW1lbnQ6OmZnQ29sb3IoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVu
dCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlF
bGVtZW50KSkKKyAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKKyAgICBpZiAoIWJvZHlF
bGVtZW50KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVu
dC0+ZmFzdEdldEF0dHJpYnV0ZSh0ZXh0QXR0cik7CiB9CiAKIHZvaWQgSFRNTERvY3VtZW50Ojpz
ZXRGZ0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJvZHlF
bGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVudD4o
Ym9keUVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgYm9keUVsZW1lbnQtPnNldEF0dHJp
YnV0ZSh0ZXh0QXR0ciwgdmFsdWUpOworICAgIGlmIChhdXRvKiBib2R5RWxlbWVudCA9IGJvZHko
KSkKKyAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh0ZXh0QXR0ciwgdmFsdWUpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6YWxpbmtDb2xvcigpIGNvbnN0
CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAg
ICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQorICAgIGF1dG8qIGJvZHlF
bGVtZW50ID0gYm9keSgpOworICAgIGlmICghYm9keUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBl
bXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGFsaW5r
QXR0cik7CiB9CiAKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRBbGlua0NvbG9yKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keU9yRnJhbWVz
ZXQoKTsKLSAgICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQotICAgICAg
ICByZXR1cm47Ci0gICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShhbGlua0F0dHIsIHZhbHVl
KTsKKyAgICBpZiAoYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCkpCisgICAgICAgIGJvZHlFbGVt
ZW50LT5zZXRBdHRyaWJ1dGUoYWxpbmtBdHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgSFRNTERvY3VtZW50OjpsaW5rQ29sb3IoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50
KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVs
ZW1lbnQ+KGJvZHlFbGVtZW50KSkKKyAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKKyAg
ICBpZiAoIWJvZHlFbGVtZW50KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVy
biBib2R5RWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShsaW5rQXR0cik7CiB9CiAKIHZvaWQgSFRN
TERvY3VtZW50OjpzZXRMaW5rQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBIVE1M
RWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlmICghaXM8SFRN
TEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICByZXR1cm4g
Ym9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZShsaW5rQXR0ciwgdmFsdWUpOworICAgIGlmIChhdXRv
KiBib2R5RWxlbWVudCA9IGJvZHkoKSkKKyAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0
ZShsaW5rQXR0ciwgdmFsdWUpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVu
dDo6dmxpbmtDb2xvcigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJvZHlFbGVtZW50ID0g
Ym9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVudD4oYm9keUVsZW1l
bnQpKQorICAgIGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpOworICAgIGlmICghYm9keUVsZW1l
bnQpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJvZHlFbGVtZW50LT5m
YXN0R2V0QXR0cmlidXRlKHZsaW5rQXR0cik7CiB9CiAKIHZvaWQgSFRNTERvY3VtZW50OjpzZXRW
bGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJvZHlF
bGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVudD4o
Ym9keUVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGJvZHlFbGVtZW50LT5z
ZXRBdHRyaWJ1dGUodmxpbmtBdHRyLCB2YWx1ZSk7CisgICAgaWYgKGF1dG8qIGJvZHlFbGVtZW50
ID0gYm9keSgpKQorICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKHZsaW5rQXR0ciwg
dmFsdWUpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6Y2FwdHVyZUV2ZW50cygpCkBAIC0zMzgs
NyArMzM1LDkgQEAgdm9pZCBIVE1MRG9jdW1lbnQ6OmNsZWFyKCkKIAogYm9vbCBIVE1MRG9jdW1l
bnQ6OmlzRnJhbWVTZXQoKSBjb25zdAogewotICAgIHJldHVybiBpczxIVE1MRnJhbWVTZXRFbGVt
ZW50Pihib2R5T3JGcmFtZXNldCgpKTsKKyAgICBpZiAoIWRvY3VtZW50RWxlbWVudCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICEhY2hpbGRyZW5PZlR5cGU8SFRNTEZyYW1l
U2V0RWxlbWVudD4oKmRvY3VtZW50RWxlbWVudCgpKS5maXJzdCgpOwogfQogCiBSZWY8RG9jdW1l
bnQ+IEhUTUxEb2N1bWVudDo6Y2xvbmVEb2N1bWVudFdpdGhvdXRDaGlsZHJlbigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA0
NzkxOGQzMjI5MTc0NDRiMjUyMDc1YzQ3OWFlNWJlZDJkOWJjMWVlLi5lYTNlZTJjN2Q0NTI1YWE4
YjQ3NjIzM2IxOTY2MjRhMTdiMzMzN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTk1OCwxMCArOTU4LDEwIEBAIEluc3BlY3RvclN0
eWxlU2hlZXQqIEluc3BlY3RvckNTU0FnZW50Ojp2aWFJbnNwZWN0b3JTdHlsZVNoZWV0KERvY3Vt
ZW50KiBkb2N1bWVuCiAgICAgaWYgKCFlYykgewogICAgICAgICBDb250YWluZXJOb2RlKiB0YXJn
ZXROb2RlOwogICAgICAgICAvLyBIRUFEIGlzIGFic2VudCBpbiBJbWFnZURvY3VtZW50cywgZm9y
IGV4YW1wbGUuCi0gICAgICAgIGlmIChkb2N1bWVudC0+aGVhZCgpKQotICAgICAgICAgICAgdGFy
Z2V0Tm9kZSA9IGRvY3VtZW50LT5oZWFkKCk7Ci0gICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LT5i
b2R5T3JGcmFtZXNldCgpKQotICAgICAgICAgICAgdGFyZ2V0Tm9kZSA9IGRvY3VtZW50LT5ib2R5
T3JGcmFtZXNldCgpOworICAgICAgICBpZiAoYXV0byogaGVhZCA9IGRvY3VtZW50LT5oZWFkKCkp
CisgICAgICAgICAgICB0YXJnZXROb2RlID0gaGVhZDsKKyAgICAgICAgZWxzZSBpZiAoYXV0byog
Ym9keSA9IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpKQorICAgICAgICAgICAgdGFyZ2V0Tm9k
ZSA9IGJvZHk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA5MDJmYjE4NGUyMTBiMTkzZGFlZWExMjM0OGVmNjQ5MDE0ZGFhNGQ4Li41MjRh
NGU3NTRlMTI4NWJlZDU4NTE4OGQzYTcwNDUyYmY1MTQwNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTkxMiw3
ICs5MTIsMTAgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJlbG9hZChDYWNoZWRSZXNv
dXJjZTo6VHlwZSB0eXBlLCBDYWNoZWRSZXNvdXJjZVJlcXUKIAogdm9pZCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2hlY2tGb3JQZW5kaW5nUHJlbG9hZHMoKSAKIHsKLSAgICBpZiAobV9wZW5kaW5n
UHJlbG9hZHMuaXNFbXB0eSgpIHx8ICFtX2RvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpIHx8ICFt
X2RvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpLT5yZW5kZXJlcigpKQorICAgIGlmIChtX3BlbmRp
bmdQcmVsb2Fkcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBib2R5ID0g
bV9kb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKTsKKyAgICBpZiAoIWJvZHkgfHwgIWJvZHktPnJl
bmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gV2Ug
YWx3YXlzIHByZWxvYWQgcmVzb3VyY2VzIG9uIGlPUy4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEyNzY+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDk4NTQ5MTYzNGU5MDBhMjlmZjljZmMwOTM3ZWM0MDA1ZGY1MjRjMWIuLjFlYTcyMGRjMWJh
NGYzYzdjMDc3NWY5MWI2NzhjYmIxMmYzOTA4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJGcmFtZVNlbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50LmgiCkBA
IC01MzksMTIgKzU0MCwxMiBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gRnJhbWVWaWV3OjpjcmVh
dGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpbwogICAgIERvY3VtZW50
KiBkb2MgPSBmcmFtZSgpLmRvY3VtZW50KCk7CiAKICAgICAvLyBUcnkgdGhlIDxib2R5PiBlbGVt
ZW50IGZpcnN0IGFzIGEgc2Nyb2xsYmFyIHNvdXJjZS4KLSAgICBFbGVtZW50KiBib2R5ID0gZG9j
ID8gZG9jLT5ib2R5T3JGcmFtZXNldCgpIDogMDsKKyAgICBIVE1MRWxlbWVudCogYm9keSA9IGRv
YyA/IGRvYy0+Ym9keU9yRnJhbWVzZXQoKSA6IG51bGxwdHI7CiAgICAgaWYgKGJvZHkgJiYgYm9k
eS0+cmVuZGVyZXIoKSAmJiBib2R5LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVkb1N0eWxl
KFNDUk9MTEJBUikpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1c3Rv
bVNjcm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgYm9keSk7CiAgICAgCiAgICAgLy8gSWYgdGhl
IDxib2R5PiBkaWRuJ3QgaGF2ZSBhIGN1c3RvbSBzdHlsZSwgdGhlbiB0aGUgcm9vdCBlbGVtZW50
IG1pZ2h0LgotICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2MgPyBkb2MtPmRvY3VtZW50RWxl
bWVudCgpIDogMDsKKyAgICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9jID8gZG9jLT5kb2N1bWVu
dEVsZW1lbnQoKSA6IG51bGxwdHI7CiAgICAgaWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+
cmVuZGVyZXIoKSAmJiBkb2NFbGVtZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmhhc1BzZXVkb1N0
eWxlKFNDUk9MTEJBUikpCiAgICAgICAgIHJldHVybiBSZW5kZXJTY3JvbGxiYXI6OmNyZWF0ZUN1
c3RvbVNjcm9sbGJhcih0aGlzLCBvcmllbnRhdGlvbiwgZG9jRWxlbWVudCk7CiAgICAgICAgIApA
QCAtNjcwLDExICs2NzEsOSBAQCB2b2lkIEZyYW1lVmlldzo6YXBwbHlQYWdpbmF0aW9uVG9WaWV3
cG9ydCgpCiAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVt
ZW50KCk7CiAgICAgUmVuZGVyRWxlbWVudCogZG9jdW1lbnRSZW5kZXJlciA9IGRvY3VtZW50RWxl
bWVudCA/IGRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgUmVuZGVy
RWxlbWVudCogZG9jdW1lbnRPckJvZHlSZW5kZXJlciA9IGRvY3VtZW50UmVuZGVyZXI7Ci0gICAg
YXV0byBib2R5ID0gZG9jdW1lbnQtPmJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKGJvZHkgJiYg
Ym9keS0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShib2R5VGFn
KSkKLSAgICAgICAgICAgIGRvY3VtZW50T3JCb2R5UmVuZGVyZXIgPSBkb2N1bWVudFJlbmRlcmVy
LT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFICYmIGRvY3VtZW50RWxlbWVudC0+aGFz
VGFnTmFtZShodG1sVGFnKSA/IGJvZHktPnJlbmRlcmVyKCkgOiBkb2N1bWVudFJlbmRlcmVyOwot
ICAgIH0KKyAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICBpZiAoYm9keSAm
JiBib2R5LT5yZW5kZXJlcigpKQorICAgICAgICBkb2N1bWVudE9yQm9keVJlbmRlcmVyID0gZG9j
dW1lbnRSZW5kZXJlci0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBpczxIVE1M
SHRtbEVsZW1lbnQ+KCpkb2N1bWVudEVsZW1lbnQpID8gYm9keS0+cmVuZGVyZXIoKSA6IGRvY3Vt
ZW50UmVuZGVyZXI7CiAKICAgICBQYWdpbmF0aW9uIHBhZ2luYXRpb247CiAKQEAgLTcxNSwxNSAr
NzE0LDE1IEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91
dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQg
PSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgICAgIFJlbmRlckVsZW1lbnQqIHJv
b3RSZW5kZXJlciA9IGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIo
KSA6IG51bGxwdHI7Ci0gICAgICAgIGF1dG8gYm9keSA9IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNl
dCgpOworICAgICAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQtPmJvZHlPckZyYW1lc2V0KCk7CiAg
ICAgICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChi
b2R5LT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSAmJiAhZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgp
KSB7CisgICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmJvZHkpICYmICFm
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICB2TW9kZSA9IFNjcm9s
bGJhckFsd2F5c09mZjsKICAgICAgICAgICAgICAgICBoTW9kZSA9IFNjcm9sbGJhckFsd2F5c09m
ZjsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keS0+aGFzVGFnTmFtZShib2R5VGFnKSkgewor
ICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1MQm9keUVsZW1lbnQ+KCpib2R5KSkgewogICAg
ICAgICAgICAgICAgIC8vIEl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGNoZWNrIHRoZSBYIG92ZXJm
bG93LAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3MgaWxsZWdhbCB0byBoYXZlIHZpc2li
bGUgaW4gb25seSBvbmUgZGlyZWN0aW9uLgotICAgICAgICAgICAgICAgIFJlbmRlckVsZW1lbnQq
IG8gPSByb290UmVuZGVyZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgJiYgZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGh0bWxUYWcpID8gYm9keS0+cmVu
ZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKKyAgICAgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiBv
ID0gcm9vdFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFICYmIGlzPEhU
TUxIdG1sRWxlbWVudD4oKmRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkgPyBib2R5LT5yZW5k
ZXJlcigpIDogcm9vdFJlbmRlcmVyOwogICAgICAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1Zp
ZXdwb3J0KG8sIGhNb2RlLCB2TW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAocm9vdFJlbmRlcmVyKQpAQCAtMTIyOSwxMSArMTIyOCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6
bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4g
Y2hhbmdlU2NoZWR1bGluZ0VuYWJsZWQobV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCwgZmFsc2Up
OwogCiAgICAgICAgIGlmICghbV9sYXlvdXRSb290KSB7Ci0gICAgICAgICAgICBIVE1MRWxlbWVu
dCogYm9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCk7CisgICAgICAgICAgICBhdXRvKiBi
b2R5ID0gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKTsKICAgICAgICAgICAgIGlmIChib2R5ICYm
IGJvZHktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFt
ZShmcmFtZXNldFRhZykgJiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChpczxIVE1MRnJhbWVTZXRFbGVtZW50PigqYm9keSkgJiYgIWZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBib2R5LT5yZW5kZXJlcigpLT5z
ZXRDaGlsZE5lZWRzTGF5b3V0KCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChib2R5LT5o
YXNUYWdOYW1lKGJvZHlUYWcpKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpczxIVE1M
Qm9keUVsZW1lbnQ+KCpib2R5KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZmlyc3RM
YXlvdXQgJiYgbV9zaXplLmhlaWdodCgpICE9IGxheW91dEhlaWdodCgpICYmIGJvZHktPnJlbmRl
cmVyKCktPmVuY2xvc2luZ0JveCgpLnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvZHktPnJlbmRlcmVyKCktPnNldENoaWxkTmVlZHNMYXlvdXQoKTsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xMjgzLDggKzEyODIsOSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5
b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogICAgICAgICAgICAgaWYgKG9sZFNpemUgIT0gbV9zaXpl
KSB7CiAgICAgICAgICAgICAgICAgbV9uZWVkc0Z1bGxSZXBhaW50ID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBpZiAoIW1fZmlyc3RMYXlvdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVy
Qm94KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKSA/IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJCb3goKSA6IDA7Ci0gICAgICAgICAgICAgICAgICAg
IFJlbmRlckJveCogYm9keVJlbmRlcmVyID0gcm9vdFJlbmRlcmVyICYmIGRvY3VtZW50LmJvZHlP
ckZyYW1lc2V0KCkgPyBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpLT5yZW5kZXJCb3goKSA6IDA7
CisgICAgICAgICAgICAgICAgICAgIFJlbmRlckJveCogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyQm94
KCkgOiBudWxscHRyOworICAgICAgICAgICAgICAgICAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQu
Ym9keU9yRnJhbWVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyQm94KiBib2R5UmVu
ZGVyZXIgPSByb290UmVuZGVyZXIgJiYgYm9keSA/IGJvZHktPnJlbmRlckJveCgpIDogbnVsbHB0
cjsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHlSZW5kZXJlciAmJiBib2R5UmVuZGVyZXIt
PnN0cmV0Y2hlc1RvVmlld3BvcnQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlSZW5k
ZXJlci0+c2V0Q2hpbGROZWVkc0xheW91dCgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChyb290UmVuZGVyZXIgJiYgcm9vdFJlbmRlcmVyLT5zdHJldGNoZXNUb1ZpZXdwb3J0KCkpCkBA
IC0zNTE0LDE0ICszNTE0LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVBbm5vdGF0ZWRSZWdp
b25zKCkKIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiB7Ci0gICAgUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIgPSAwOworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
bnVsbHB0cjsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGNvcm5lclN0eWxlOwogICAgIEludFJl
Y3QgY29ybmVyUmVjdCA9IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICAKICAgICBpZiAoIWNvcm5l
clJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRyeSB0aGUgPGJvZHk+IGVsZW1lbnQgZmly
c3QgYXMgYSBzY3JvbGwgY29ybmVyIHNvdXJjZS4KICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKLSAgICAgICAgRWxlbWVudCogYm9keSA9IGRvYyA/IGRvYy0+Ym9k
eU9yRnJhbWVzZXQoKSA6IDA7CisgICAgICAgIEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJv
ZHlPckZyYW1lc2V0KCkgOiBudWxscHRyOwogICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlciA9IGJvZHktPnJlbmRlcmVyKCk7CiAgICAg
ICAgICAgICBjb3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBz
ZXVkb1N0eWxlUmVxdWVzdChTQ1JPTExCQVJfQ09STkVSKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsK
QEAgLTM1MjksNyArMzUyOSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIo
KQogICAgICAgICAKICAgICAgICAgaWYgKCFjb3JuZXJTdHlsZSkgewogICAgICAgICAgICAgLy8g
SWYgdGhlIDxib2R5PiBkaWRuJ3QgaGF2ZSBhIGN1c3RvbSBzdHlsZSwgdGhlbiB0aGUgcm9vdCBl
bGVtZW50IG1pZ2h0LgotICAgICAgICAgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRv
Yy0+ZG9jdW1lbnRFbGVtZW50KCkgOiAwOworICAgICAgICAgICAgRWxlbWVudCogZG9jRWxlbWVu
dCA9IGRvYyA/IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwogICAgICAgICAgICAg
aWYgKGRvY0VsZW1lbnQgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAg
ICAgIHJlbmRlcmVyID0gZG9jRWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICBj
b3JuZXJTdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb1N0eWxl
UmVxdWVzdChTQ1JPTExCQVJfQ09STkVSKSwgJnJlbmRlcmVyLT5zdHlsZSgpKTsKQEAgLTM1OTUs
OCArMzU5NSw4IEBAIENvbG9yIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gQ29sb3Io
KTsKIAotICAgIEVsZW1lbnQqIGh0bWxFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKTsKLSAgICBFbGVtZW50KiBib2R5RWxlbWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKS0+Ym9keU9yRnJhbWVzZXQoKTsKKyAgICBhdXRvKiBodG1sRWxlbWVudCA9IGZyYW1lKCku
ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgYXV0byogYm9keUVsZW1lbnQgPSBm
cmFtZSgpLmRvY3VtZW50KCktPmJvZHlPckZyYW1lc2V0KCk7CiAKICAgICAvLyBTdGFydCB3aXRo
IGludmFsaWQgY29sb3JzLgogICAgIENvbG9yIGh0bWxCYWNrZ3JvdW5kQ29sb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGRiNjI1MDEzMmI4ZTU1NTI3Y2Q1MjYy
MjFlYjdjOGFkNjhhYzc4OTcuLjNmNTA3ZTA3ZGI0MzgyZDM2M2FjZmY3ZDdiYzJkZDAwODcxOTFj
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MQnV0dG9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBAIC00NjcsOCArNDY4LDggQEAgdm9pZCBS
ZW5kZXJCb3g6OnVwZGF0ZUZyb21TdHlsZSgpCiAgICAgICAgICAgICAvLyAoMSkgVGhlIHJvb3Qg
ZWxlbWVudCBpcyA8aHRtbD4uCiAgICAgICAgICAgICAvLyAoMikgV2UgYXJlIHRoZSBwcmltYXJ5
IDxib2R5PiAoY2FuIGJlIGNoZWNrZWQgYnkgbG9va2luZyBhdCBkb2N1bWVudC5ib2R5KS4KICAg
ICAgICAgICAgIC8vICgzKSBUaGUgcm9vdCBlbGVtZW50IGhhcyB2aXNpYmxlIG92ZXJmbG93Lgot
ICAgICAgICAgICAgaWYgKGRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUo
aHRtbFRhZykKLSAgICAgICAgICAgICAgICAmJiBkb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCkg
PT0gZWxlbWVudCgpCisgICAgICAgICAgICBpZiAoaXM8SFRNTEh0bWxFbGVtZW50PigqZG9jdW1l
bnQoKS5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAmJiBkb2N1bWVudCgpLmJv
ZHkoKSA9PSBlbGVtZW50KCkKICAgICAgICAgICAgICAgICAmJiBkb2N1bWVudCgpLmRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFKSB7
CiAgICAgICAgICAgICAgICAgYm94SGFzT3ZlcmZsb3dDbGlwID0gZmFsc2U7CiAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcAppbmRleCA5ZDVkYWVjMTY5Yjg5YzkxMGJmMjAxZjRmODNjODMyNDE1MjE0YWM2Li41Mjc1
YTI3MTE3MTBhODkzYTQxM2IwNzYxZDE1ODEzN2ExNDA1ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTc5MCwxMCArNzkw
LDkgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgICAgICAgICAgLy8gdG8g
Y3Jhd2wgYXJvdW5kIGEgcmVuZGVyIHRyZWUgd2l0aCBwb3RlbnRpYWwgOmJlZm9yZS86YWZ0ZXIg
Y29udGVudCBhbmQKICAgICAgICAgICAgICAgICAgICAgLy8gYW5vbnltb3VzIGJsb2NrcyBjcmVh
dGVkIGJ5IGlubGluZSA8Ym9keT4gdGFncyBldGMuICBXZSBjYW4gbG9jYXRlIHRoZSA8Ym9keT4K
ICAgICAgICAgICAgICAgICAgICAgLy8gcmVuZGVyIG9iamVjdCB2ZXJ5IGVhc2lseSB2aWEgdGhl
IERPTS4KLSAgICAgICAgICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2N1bWVudCgp
LmJvZHlPckZyYW1lc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChib2R5KSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChIVE1MRWxlbWVudCogYm9keSA9IGRvY3VtZW50KCkuYm9keU9y
RnJhbWVzZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3Qgc2Nyb2xsIGEg
ZnJhbWVzZXQgZG9jdW1lbnQgYW55d2F5LgotICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGFx
dWVSb290ID0gYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpc09wYXF1ZVJvb3QgPSBpczxIVE1MRnJhbWVTZXRFbGVtZW50PigqYm9keSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBT
VkcgZG9jdW1lbnRzIGFuZCBYTUwgZG9jdW1lbnRzIHdpdGggU1ZHIHJvb3Qgbm9kZXMgYXJlIHRy
YW5zcGFyZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgaXNPcGFxdWVSb290ID0gIWRvY3Vt
ZW50KCkuaGFzU1ZHUm9vdE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcAppbmRleCAwYTc1NTIyNDA0MDliMDNkMGVmMDFjZWJmYTAwY2M0MTU3NzA2YjQ5
Li42ODZmNmZmYTU2ODdmNDA5ZGFmMDg0MzdhOWZiOTZmNTg3OWExNjQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xMTIwLDcgKzExMjAsNyBAQCBS
ZW5kZXJFbGVtZW50JiBSZW5kZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKCkK
ICAgICAgICAgLy8gdG8gY3Jhd2wgYXJvdW5kIGEgcmVuZGVyIHRyZWUgd2l0aCBwb3RlbnRpYWwg
OmJlZm9yZS86YWZ0ZXIgY29udGVudCBhbmQKICAgICAgICAgLy8gYW5vbnltb3VzIGJsb2NrcyBj
cmVhdGVkIGJ5IGlubGluZSA8Ym9keT4gdGFncyBldGMuIFdlIGNhbiBsb2NhdGUgdGhlIDxib2R5
PgogICAgICAgICAvLyByZW5kZXIgb2JqZWN0IHZlcnkgZWFzaWx5IHZpYSB0aGUgRE9NLgotICAg
ICAgICBpZiAoYXV0byogYm9keSA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxCb2R5RWxlbWVudD4oKmVs
ZW1lbnQoKSkuZmlyc3QoKSkgeworICAgICAgICBpZiAoYXV0byogYm9keSA9IGRvY3VtZW50KCku
Ym9keSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBib2R5LT5yZW5kZXJl
cigpKQogICAgICAgICAgICAgICAgIHJldHVybiAqcmVuZGVyZXI7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMDVk
ZWM4YWEzNWI4MThiOWU3MjIxMjY0NTAyZTMxODcxMTVjYzBiYy4uMTUyZWI5OGZhMGRkMWJjMDVm
ODRjYmY1YTUxZGJiYWFjYjNhMTljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyLmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENh
bnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKQEAgLTE3ODksNyArMTc5MCw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBjb25zdAogCiAg
ICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkpIHsKICAgICAgICAgLy8gTG9vayB0byBz
ZWUgaWYgdGhlIHJvb3Qgb2JqZWN0IGhhcyBhIG5vbi1zaW1wbGUgYmFja2dyb3VuZAotICAgICAg
ICBSZW5kZXJPYmplY3QqIHJvb3RPYmplY3QgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCkgPyByZW5kZXJlcigpLmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJl
bmRlcmVyKCkgOiAwOworICAgICAgICBhdXRvKiByb290T2JqZWN0ID0gcmVuZGVyZXIoKS5kb2N1
bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID8gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRvY3VtZW50
RWxlbWVudCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKCFyb290T2JqZWN0
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTE3OTksMTIgKzE4MDAs
MTIgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRp
bmdMYXllcigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAg
ICAgICAvLyBOb3cgbG9vayBhdCB0aGUgYm9keSdzIHJlbmRlcmVyLgotICAgICAgICBIVE1MRWxl
bWVudCogYm9keSA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpOwotICAg
ICAgICBSZW5kZXJPYmplY3QqIGJvZHlPYmplY3QgPSAoYm9keSAmJiBib2R5LT5oYXNUYWdOYW1l
KGJvZHlUYWcpKSA/IGJvZHktPnJlbmRlcmVyKCkgOiAwOwotICAgICAgICBpZiAoIWJvZHlPYmpl
Y3QpCisgICAgICAgIGF1dG8qIGJvZHkgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuYm9keSgpOwor
ICAgICAgICBhdXRvKiBib2R5UmVuZGVyZXIgPSBib2R5ID8gYm9keS0+cmVuZGVyZXIoKSA6IG51
bGxwdHI7CisgICAgICAgIGlmICghYm9keVJlbmRlcmVyKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5k
SW1hZ2UoYm9keU9iamVjdC0+c3R5bGUoKSkpCisgICAgICAgIGlmIChoYXNCb3hEZWNvcmF0aW9u
c09yQmFja2dyb3VuZEltYWdlKGJvZHlSZW5kZXJlci0+c3R5bGUoKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDA0NTQzM2MyNGE0MTg1ZTIwNWI3MzRlOWUwOGIzZjgyNDFkNTlmMDQuLmVi
NzI2ZDM1MThiNmIxNDU0M2YwZTE0ODk1NTk3YjgwZWRkMzIzZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMjk1LDggKzIyOTUsMTAgQEAgUmVuZGVy
Qm94TW9kZWxPYmplY3QqIFJlbmRlck9iamVjdDo6b2Zmc2V0UGFyZW50KCkgY29uc3QKICAgICB9
CiAgICAgCiAgICAgLy8gQ1NTIHJlZ2lvbnMgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgcmVnaW9u
IGZsb3dzIHNob3VsZCByZXR1cm4gdGhlIGJvZHkgZWxlbWVudCBhcyB0aGVpciBvZmZzZXRQYXJl
bnQuCi0gICAgaWYgKGlzPFJlbmRlck5hbWVkRmxvd1RocmVhZD4oY3VycmVudCkpCi0gICAgICAg
IGN1cnJlbnQgPSBkb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCkgPyBkb2N1bWVudCgpLmJvZHlP
ckZyYW1lc2V0KCktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIGlmIChpczxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ+KGN1cnJlbnQpKSB7CisgICAgICAgIGF1dG8qIGJvZHkgPSBkb2N1bWVudCgp
LmJvZHlPckZyYW1lc2V0KCk7CisgICAgICAgIGN1cnJlbnQgPSBib2R5ID8gYm9keS0+cmVuZGVy
ZXIoKSA6IG51bGxwdHI7CisgICAgfQogICAgIAogICAgIHJldHVybiBpczxSZW5kZXJCb3hNb2Rl
bE9iamVjdD4oY3VycmVudCkgPyBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oY3VycmVu
dCkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCmluZGV4IDc0ZjlmZTg2YmVhYjA1NGViYzUyNWU1MTA4NDRhZTE0NWFiMDM3ZDcu
Ljk4N2Q5NGNiMTIwNjQ4ZGFjNWZkOThiYzkyMjIxYzhhODlmYzBmZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTgxMCw3ICs4MTAsNyBA
QCBzdGF0aWMgU3RyaW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQogewogICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwogCi0gICAgRWxlbWVudCogYm9keSA9IG5vZGUtPmRvY3VtZW50KCkuYm9k
eU9yRnJhbWVzZXQoKTsKKyAgICBhdXRvKiBib2R5ID0gbm9kZS0+ZG9jdW1lbnQoKS5ib2R5T3JG
cmFtZXNldCgpOwogICAgIE5vZGUqIHBhcmVudDsKICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBu
OyBuID0gcGFyZW50KSB7CiAgICAgICAgIHBhcmVudCA9IG4tPnBhcmVudE9yU2hhZG93SG9zdE5v
ZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50
LmNwcAppbmRleCBhMzcyZDJjZDYwZDM5MzJhODIxZjAwMjc3NzgxYmY3NGI2OTlkMDBlLi5hMDJj
NDllY2YzYzk2MWY2ZTg0MzRhMTQ1MWQ5NjlmMDcwYjJlZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCkBAIC02OSwxMiArNjksMTMg
QEAgUmVmPFJlbmRlclN0eWxlPiByZXNvbHZlRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIGRv
Y3VtZW50KQogI2VuZGlmCiAKICAgICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50KCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBkb2NFbGVtZW50UmVuZGVyZXIgPSBk
b2NFbGVtZW50ID8gZG9jRWxlbWVudC0+cmVuZGVyZXIoKSA6IDA7CisgICAgUmVuZGVyT2JqZWN0
KiBkb2NFbGVtZW50UmVuZGVyZXIgPSBkb2NFbGVtZW50ID8gZG9jRWxlbWVudC0+cmVuZGVyZXIo
KSA6IG51bGxwdHI7CiAgICAgaWYgKGRvY0VsZW1lbnRSZW5kZXJlcikgewogICAgICAgICAvLyBV
c2UgdGhlIGRpcmVjdGlvbiBhbmQgd3JpdGluZy1tb2RlIG9mIHRoZSBib2R5IHRvIHNldCB0aGUK
ICAgICAgICAgLy8gdmlld3BvcnQncyBkaXJlY3Rpb24gYW5kIHdyaXRpbmctbW9kZSB1bmxlc3Mg
dGhlIHByb3BlcnR5IGlzIHNldCBvbiB0aGUgZG9jdW1lbnQgZWxlbWVudC4KICAgICAgICAgLy8g
SWYgdGhlcmUgaXMgbm8gYm9keSwgdGhlbiB1c2UgdGhlIGRvY3VtZW50IGVsZW1lbnQuCi0gICAg
ICAgIFJlbmRlck9iamVjdCogYm9keVJlbmRlcmVyID0gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQo
KSA/IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCktPnJlbmRlcmVyKCkgOiAwOworICAgICAgICBh
dXRvKiBib2R5ID0gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKTsKKyAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBib2R5UmVuZGVyZXIgPSBib2R5ID8gYm9keS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAg
ICAgICAgIGlmIChib2R5UmVuZGVyZXIgJiYgIWRvY3VtZW50LndyaXRpbmdNb2RlU2V0T25Eb2N1
bWVudEVsZW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50U3R5bGUuZ2V0KCkuc2V0V3JpdGlu
Z01vZGUoYm9keVJlbmRlcmVyLT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwogICAgICAgICBlbHNl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245418</attachid>
            <date>2015-01-26 21:53:10 -0800</date>
            <delta_ts>2015-01-26 21:56:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140920-20150126215313.patch</filename>
            <type>text/plain</type>
            <size>27506</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI2NmQ0ZmY5ZDVjNDdm
ZDczNzk5ZWIyYjY5MzliODI3NjU2MDEyOS4uM2RmNWQwMzQxNWRiYzYzN2EyMDFiZDg1ZmU5MWNh
MWViZWY3MjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAxLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIERvY3VtZW50
Ojpib2R5KCkgZm9yIGNhbGwgc2l0ZXMgaW50ZXJlc3RlZCBpbiB0aGUgPGJvZHk+IGVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDkyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEludHJvZHVjZSBE
b2N1bWVudDo6Ym9keSgpIG1ldGhvZCBmb3IgY2FsbCBzaXRlcyBpbnRlcmVzdGVkIG9ubHkgaW4g
dGhlCisgICAgICAgIGRvY3VtZW50J3MgPGJvZHk+IGVsZW1lbnQgKG5vdCB0aGUgPGZyYW1lc2V0
PikuIEFsc28gY2xlYW4gdXAgdGhlIGNhbGwKKyAgICAgICAgc2l0ZXMgb2YgRG9jdW1lbnQ6OmJv
ZHlPckZyYW1lc2V0KCkgdG8gY2FjaGUgdGhlIHJldHVybiB2YWx1ZSB3aGVuCisgICAgICAgIHN1
aXRhYmxlIGFzIHRoaXMgbWV0aG9kIGRvZXMgYSB0cmVlIHRyYXZlcnNhbC4KKworICAgICAgICBU
aGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSBiZWhhdmlvciwgaXQgbWVyZWx5IHBvcnRzIGNhbGxz
IHNpdGVzIHRoYXQKKyAgICAgICAgd2VyZSBjYWxsaW5nIERvY3VtZW50Ojpib2R5T3JGcmFtZXNl
dCgpIHRoZW4gY2hlY2tpbmcgaWYgdGhlIHRhZyB3YXMKKyAgICAgICAgPGJvZHk+LCB0byBjYWxs
IERvY3VtZW50Ojpib2R5KCkgaW5zdGVhZC4gRG9pbmcgc28gaXMgbW9yZSBlZmZpY2llbnQKKyAg
ICAgICAgYW5kIGNsZWFyZXIuCisKIDIwMTUtMDEtMjYgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25n
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJHTCAyLjA6IEFjdHVhbGx5IGFsbG93IGZvciBleHBl
cmltZW50YWwtd2ViZ2wyIGNvbnRleHQgY3JlYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAzZWJkMmI3MmE1MmExNDMyY2JiN2MyZjY3OWVkNTYwMTI5MjVkNGNkLi5mNjUwNDJmOGNl
NGJlMzVmMzIwZDk3MTZiNmNjZTViMDAzYmMzZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTIzMjQsMTMgKzIzMjQsMjEgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkKICAg
ICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogfQogCitIVE1MQm9keUVsZW1lbnQqIERvY3VtZW50
Ojpib2R5KCkgY29uc3QKK3sKKyAgICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7
CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
Y2hpbGRyZW5PZlR5cGU8SFRNTEJvZHlFbGVtZW50PigqZWxlbWVudCkuZmlyc3QoKTsKK30KKwog
SFRNTEVsZW1lbnQqIERvY3VtZW50Ojpib2R5T3JGcmFtZXNldCgpIGNvbnN0CiB7CiAgICAgLy8g
SWYgdGhlIGRvY3VtZW50IGVsZW1lbnQgY29udGFpbnMgYm90aCBhIGZyYW1lc2V0IGFuZCBhIGJv
ZHksIHRoZSBmcmFtZXNldCB3aW5zLgotICAgIGF1dG8gZWxlbWVudCA9IGRvY3VtZW50RWxlbWVu
dCgpOworICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWVs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChhdXRvIGZyYW1lc2V0ID0g
Y2hpbGRyZW5PZlR5cGU8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmVsZW1lbnQpLmZpcnN0KCkpCisg
ICAgaWYgKGF1dG8qIGZyYW1lc2V0ID0gY2hpbGRyZW5PZlR5cGU8SFRNTEZyYW1lU2V0RWxlbWVu
dD4oKmVsZW1lbnQpLmZpcnN0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZXNldDsKICAgICByZXR1
cm4gY2hpbGRyZW5PZlR5cGU8SFRNTEJvZHlFbGVtZW50PigqZWxlbWVudCkuZmlyc3QoKTsKIH0K
QEAgLTIzMzksNiArMjM0Nyw5IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEJvZHlPckZyYW1lc2V0KFBh
c3NSZWZQdHI8SFRNTEVsZW1lbnQ+IHBycE5ld0JvZHksIEV4Y2VwdGlvbkNvCiB7CiAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBuZXdCb2R5ID0gcHJwTmV3Qm9keTsKIAorICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyBhIDxmcmFtZXNldD4gRWxlbWVudCwgb25seSBh
IDxib2R5Pi4gVGhpcyBkb2VzCisgICAgLy8gbm90IG1hdGNoIHRoZSBIVE1MIHNwZWNpZmljYXRp
b246CisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9tLmh0
bWwjZG9tLWRvY3VtZW50LWJvZHkKICAgICBpZiAoIW5ld0JvZHkgfHwgIWRvY3VtZW50RWxlbWVu
dCgpIHx8ICFuZXdCb2R5LT5oYXNUYWdOYW1lKGJvZHlUYWcpKSB7IAogICAgICAgICBlYyA9IEhJ
RVJBUkNIWV9SRVFVRVNUX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0Miw3ICsyNTUzLDcg
QEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkU2NoZWR1bGVMYXlvdXQoKQogICAgIC8vICAgIChiKSBP
bmx5IHNjaGVkdWxlIGxheW91dCBvbmNlIHdlIGhhdmUgYSBib2R5IGVsZW1lbnQuCiAKICAgICBy
ZXR1cm4gKGhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmIGJvZHlPckZyYW1lc2V0KCkpCi0gICAg
ICAgIHx8IChkb2N1bWVudEVsZW1lbnQoKSAmJiAhZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05h
bWUoaHRtbFRhZykpOworICAgICAgICB8fCAoZG9jdW1lbnRFbGVtZW50KCkgJiYgIWlzPEhUTUxI
dG1sRWxlbWVudD4oKmRvY3VtZW50RWxlbWVudCgpKSk7CiB9CiAgICAgCiBib29sIERvY3VtZW50
Ojppc0xheW91dFRpbWVyQWN0aXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTU3OGI0Mjgz
ZDA5MzBhNzhkY2ZlM2UwNmJhNGEwNDdlMzE5NjQ4Yy4uZjQ3MzQ5NGQ3YWI1ZjZlNWQ0YjlhNzBi
MzgzZTZmZjRlM2NjMzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwMSw5ICsxMDEsMTAg
QEAgY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRm9ybUNvbnRyb2xsZXI7CiBjbGFzcyBGcmFtZTsK
IGNsYXNzIEZyYW1lVmlldzsKK2NsYXNzIEhUTUxBbGxDb2xsZWN0aW9uOworY2xhc3MgSFRNTEJv
ZHlFbGVtZW50OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MQ29sbGVjdGlv
bjsKLWNsYXNzIEhUTUxBbGxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTERvY3VtZW50OwogY2xhc3Mg
SFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBAIC05MzcsNiArOTM4
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxlbWVu
dHMoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHN0YXRpYyBib29sIGhhc1ZhbGlkTmFtZXNw
YWNlRm9yQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICBIVE1MQm9keUVs
ZW1lbnQqIGJvZHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MRWxlbWVudCogYm9k
eU9yRnJhbWVzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldEJvZHlPckZyYW1lc2V0KFBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+LCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggM2UwZTg5OTUzYzhiYzY4M2JmNjY1NzM1YTI0MTA3
NWJmZDdmZWQ3YS4uNGQxMWY1ODIzZDI4Y2NjMWE1Mzg0YWQ2YmQxMmMwM2I0Y2IwNjAxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIxMDgsMTAgKzIx
MDgsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1l
bnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgaWYgKGF1dG8gYm9keSA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxCb2R5RWxl
bWVudD4oKmRvY3VtZW50RWxlbWVudCkuZmlyc3QoKSkKKyAgICBpZiAoYXV0byogYm9keSA9IGRv
Y3VtZW50LT5ib2R5KCkpCiAgICAgICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGZp
cnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShib2R5KSwgRE9XTlNUUkVBTSkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZmZhZmZjNDBjMjJl
ZTYyMDFlZmQ5OGFmZjYwODFiZmJjMTdlMzM5ZC4uNGI3NDY1YjYyMDI2M2I1Y2UyYWNjNzkxYzE5
NDFhZGE4ZmE5NDhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
UG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9u
LmNwcApAQCAtNTM2LDggKzUzNiwxMSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNhbm9u
aWNhbFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwYXNzZWRQb3NpdGlvbikKIAogICAgIC8vIFRo
ZSBuZXcgcG9zaXRpb24gbXVzdCBiZSBpbiB0aGUgc2FtZSBlZGl0YWJsZSBlbGVtZW50LiBFbmZv
cmNlIHRoYXQgZmlyc3QuCiAgICAgLy8gVW5sZXNzIHRoZSBkZXNjZW50IGlzIGZyb20gYSBub24t
ZWRpdGFibGUgaHRtbCBlbGVtZW50IHRvIGFuIGVkaXRhYmxlIGJvZHkuCi0gICAgaWYgKG5vZGUg
JiYgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSAmJiAhbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgp
ICYmIG5vZGUtPmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKSAmJiBub2RlLT5kb2N1bWVudCgp
LmJvZHlPckZyYW1lc2V0KCktPmhhc0VkaXRhYmxlU3R5bGUoKSkKLSAgICAgICAgcmV0dXJuIG5l
eHQuaXNOb3ROdWxsKCkgPyBuZXh0IDogcHJldjsKKyAgICBpZiAoaXM8SFRNTEh0bWxFbGVtZW50
Pihub2RlKSAmJiAhbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKSB7CisgICAgICAgIGF1dG8qIGJv
ZHkgPSBub2RlLT5kb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCk7CisgICAgICAgIGlmIChib2R5
ICYmIGJvZHktPmhhc0VkaXRhYmxlU3R5bGUoKSkKKyAgICAgICAgICAgIHJldHVybiBuZXh0Lmlz
Tm90TnVsbCgpID8gbmV4dCA6IHByZXY7CisgICAgfQogCiAgICAgTm9kZSogZWRpdGluZ1Jvb3Qg
PSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IGEzZDA1MjFiYzUzZWQ2NWZhYzgwZTQxZDBjOWRh
NTJhMTJlZThiZTkuLmMwNWUxYWRhMDM1YzAwYjUxMGY2OTUwZDU1MGE1MDJlMDdlYWI3NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNs
dWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50VHlwZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC0xMDcsNiArMTA4LDkgQEAgaW50IEhUTUxEb2N1bWVudDo6aGVp
Z2h0KCkKIAogU3RyaW5nIEhUTUxEb2N1bWVudDo6ZGlyKCkKIHsKKyAgICAvLyBGSVhNRTogVGhl
IEhUTUwgc3BlY2lmaWNhdGlvbiBzYXlzIHRoaXMgaXMgc3VwcG9zZWQgdG8gcmVmbGVjdCB0aGUg
J2RpcicKKyAgICAvLyBjb250ZW50IGF0dHJpYnV0ZSBvZiB0aGUgPGh0bWw+IGVsZW1lbnQsIG5v
dCB0aGUgYm9keToKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9kb20uaHRtbCNkb20tZG9jdW1lbnQtZGlyCiAgICAgaWYgKGF1dG8qIGJvZHkgPSBib2R5T3JG
cmFtZXNldCgpKQogICAgICAgICByZXR1cm4gYm9keS0+ZmFzdEdldEF0dHJpYnV0ZShkaXJBdHRy
KTsKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMTQsNiArMTE4LDkgQEAgU3RyaW5nIEhUTUxE
b2N1bWVudDo6ZGlyKCkKIAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldERpcihjb25zdCBTdHJpbmcm
IHZhbHVlKQogeworICAgIC8vIEZJWE1FOiBUaGUgSFRNTCBzcGVjaWZpY2F0aW9uIHNheXMgdGhp
cyBpcyBzdXBwb3NlZCB0byByZWZsZWN0IHRoZSAnZGlyJworICAgIC8vIGNvbnRlbnQgYXR0cmli
dXRlIG9mIHRoZSA8aHRtbD4gZWxlbWVudCwgbm90IHRoZSBib2R5OgorICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI2RvbS1kb2N1bWVudC1kaXIK
ICAgICBpZiAoYXV0byogYm9keSA9IGJvZHlPckZyYW1lc2V0KCkpCiAgICAgICAgIGJvZHktPnNl
dEF0dHJpYnV0ZShkaXJBdHRyLCB2YWx1ZSk7CiB9CkBAIC0xMzcsODIgKzE0NCw3MiBAQCB2b2lk
IEhUTUxEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBjb25z
dCBBdG9taWNTdHJpbmcmIEhUTUxEb2N1bWVudDo6YmdDb2xvcigpIGNvbnN0CiB7Ci0gICAgSFRN
TEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhU
TUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQorICAgIGF1dG8qIGJvZHlFbGVtZW50ID0gYm9k
eSgpOworICAgIGlmICghYm9keUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAg
ICAgcmV0dXJuIGJvZHlFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGJnY29sb3JBdHRyKTsKIH0K
IAogdm9pZCBIVE1MRG9jdW1lbnQ6OnNldEJnQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlm
ICghaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGJnY29sb3JBdHRyLCB2YWx1ZSk7CisgICAgaWYg
KGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpKQorICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0
cmlidXRlKGJnY29sb3JBdHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRN
TERvY3VtZW50OjpmZ0NvbG9yKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogYm9keUVsZW1l
bnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlmICghaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5
RWxlbWVudCkpCisgICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCk7CisgICAgaWYgKCFib2R5
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUodGV4dEF0dHIpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6
c2V0RmdDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEhUTUxFbGVtZW50KiBib2R5
RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+
KGJvZHlFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGJvZHlFbGVtZW50LT5zZXRBdHRy
aWJ1dGUodGV4dEF0dHIsIHZhbHVlKTsKKyAgICBpZiAoYXV0byogYm9keUVsZW1lbnQgPSBib2R5
KCkpCisgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodGV4dEF0dHIsIHZhbHVlKTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBjb25z
dAogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0g
ICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKKyAgICBhdXRvKiBib2R5
RWxlbWVudCA9IGJvZHkoKTsKKyAgICBpZiAoIWJvZHlFbGVtZW50KQogICAgICAgICByZXR1cm4g
ZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhbGlu
a0F0dHIpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0QWxpbmtDb2xvcihjb25zdCBTdHJp
bmcmIHZhbHVlKQogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1l
c2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYWxpbmtBdHRyLCB2YWx1
ZSk7CisgICAgaWYgKGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpKQorICAgICAgICBib2R5RWxl
bWVudC0+c2V0QXR0cmlidXRlKGFsaW5rQXR0ciwgdmFsdWUpOwogfQogCiBjb25zdCBBdG9taWNT
dHJpbmcmIEhUTUxEb2N1bWVudDo6bGlua0NvbG9yKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVu
dCogYm9keUVsZW1lbnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlmICghaXM8SFRNTEJvZHlF
bGVtZW50Pihib2R5RWxlbWVudCkpCisgICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCk7Cisg
ICAgaWYgKCFib2R5RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1
cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRBdHRyaWJ1dGUobGlua0F0dHIpOwogfQogCiB2b2lkIEhU
TUxEb2N1bWVudDo6c2V0TGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSFRN
TEVsZW1lbnQqIGJvZHlFbGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhU
TUxCb2R5RWxlbWVudD4oYm9keUVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJu
IGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUobGlua0F0dHIsIHZhbHVlKTsKKyAgICBpZiAoYXV0
byogYm9keUVsZW1lbnQgPSBib2R5KCkpCisgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1
dGUobGlua0F0dHIsIHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1l
bnQ6OnZsaW5rQ29sb3IoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9
IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVt
ZW50KSkKKyAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKKyAgICBpZiAoIWJvZHlFbGVt
ZW50KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+
ZmFzdEdldEF0dHJpYnV0ZSh2bGlua0F0dHIpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0
VmxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEhUTUxFbGVtZW50KiBib2R5
RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+
KGJvZHlFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJldHVybiBib2R5RWxlbWVudC0+
c2V0QXR0cmlidXRlKHZsaW5rQXR0ciwgdmFsdWUpOworICAgIGlmIChhdXRvKiBib2R5RWxlbWVu
dCA9IGJvZHkoKSkKKyAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh2bGlua0F0dHIs
IHZhbHVlKTsKIH0KIAogdm9pZCBIVE1MRG9jdW1lbnQ6OmNhcHR1cmVFdmVudHMoKQpAQCAtMzM4
LDcgKzMzNSw5IEBAIHZvaWQgSFRNTERvY3VtZW50OjpjbGVhcigpCiAKIGJvb2wgSFRNTERvY3Vt
ZW50Ojppc0ZyYW1lU2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXM8SFRNTEZyYW1lU2V0RWxl
bWVudD4oYm9keU9yRnJhbWVzZXQoKSk7CisgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhIWNoaWxkcmVuT2ZUeXBlPEhUTUxGcmFt
ZVNldEVsZW1lbnQ+KCpkb2N1bWVudEVsZW1lbnQoKSkuZmlyc3QoKTsKIH0KIAogUmVmPERvY3Vt
ZW50PiBIVE1MRG9jdW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXgg
NDc5MThkMzIyOTE3NDQ0YjI1MjA3NWM0NzlhZTViZWQyZDliYzFlZS4uZWEzZWUyYzdkNDUyNWFh
OGI0NzYyMzNiMTk2NjI0YTE3YjMzMzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC05NTgsMTAgKzk1OCwxMCBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1
bWVudCogZG9jdW1lbgogICAgIGlmICghZWMpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogdGFy
Z2V0Tm9kZTsKICAgICAgICAgLy8gSEVBRCBpcyBhYnNlbnQgaW4gSW1hZ2VEb2N1bWVudHMsIGZv
ciBleGFtcGxlLgotICAgICAgICBpZiAoZG9jdW1lbnQtPmhlYWQoKSkKLSAgICAgICAgICAgIHRh
cmdldE5vZGUgPSBkb2N1bWVudC0+aGVhZCgpOwotICAgICAgICBlbHNlIGlmIChkb2N1bWVudC0+
Ym9keU9yRnJhbWVzZXQoKSkKLSAgICAgICAgICAgIHRhcmdldE5vZGUgPSBkb2N1bWVudC0+Ym9k
eU9yRnJhbWVzZXQoKTsKKyAgICAgICAgaWYgKGF1dG8qIGhlYWQgPSBkb2N1bWVudC0+aGVhZCgp
KQorICAgICAgICAgICAgdGFyZ2V0Tm9kZSA9IGhlYWQ7CisgICAgICAgIGVsc2UgaWYgKGF1dG8q
IGJvZHkgPSBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKSkKKyAgICAgICAgICAgIHRhcmdldE5v
ZGUgPSBib2R5OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggOTAyZmIxODRlMjEwYjE5M2RhZWVhMTIzNDhlZjY0OTAxNGRhYTRkOC4uNTI0
YTRlNzU0ZTEyODViZWQ1ODUxODhkM2E3MDQ1MmJmNTE0MDVjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05MTIs
NyArOTEyLDEwIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1CiAKIHZvaWQgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNoZWNrRm9yUGVuZGluZ1ByZWxvYWRzKCkgCiB7Ci0gICAgaWYgKG1fcGVuZGlu
Z1ByZWxvYWRzLmlzRW1wdHkoKSB8fCAhbV9kb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKSB8fCAh
bV9kb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAobV9wZW5k
aW5nUHJlbG9hZHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byogYm9keSA9
IG1fZG9jdW1lbnQtPmJvZHlPckZyYW1lc2V0KCk7CisgICAgaWYgKCFib2R5IHx8ICFib2R5LT5y
ZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdl
IGFsd2F5cyBwcmVsb2FkIHJlc291cmNlcyBvbiBpT1MuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjc2Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApp
bmRleCA5ODU0OTE2MzRlOTAwYTI5ZmY5Y2ZjMDkzN2VjNDAwNWRmNTI0YzFiLi4xZWE3MjBkYzFi
YTRmM2M3YzA3NzVmOTFiNjc4Y2JiMTJmMzkwODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNs
dWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgpA
QCAtNTM5LDEyICs1NDAsMTIgQEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IEZyYW1lVmlldzo6Y3Jl
YXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW8KICAgICBEb2N1bWVu
dCogZG9jID0gZnJhbWUoKS5kb2N1bWVudCgpOwogCiAgICAgLy8gVHJ5IHRoZSA8Ym9keT4gZWxl
bWVudCBmaXJzdCBhcyBhIHNjcm9sbGJhciBzb3VyY2UuCi0gICAgRWxlbWVudCogYm9keSA9IGRv
YyA/IGRvYy0+Ym9keU9yRnJhbWVzZXQoKSA6IDA7CisgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBk
b2MgPyBkb2MtPmJvZHlPckZyYW1lc2V0KCkgOiBudWxscHRyOwogICAgIGlmIChib2R5ICYmIGJv
ZHktPnJlbmRlcmVyKCkgJiYgYm9keS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHls
ZShTQ1JPTExCQVIpKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0
b21TY3JvbGxiYXIodGhpcywgb3JpZW50YXRpb24sIGJvZHkpOwogICAgIAogICAgIC8vIElmIHRo
ZSA8Ym9keT4gZGlkbid0IGhhdmUgYSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3QgZWxlbWVu
dCBtaWdodC4KLSAgICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9jID8gZG9jLT5kb2N1bWVudEVs
ZW1lbnQoKSA6IDA7CisgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRvYy0+ZG9jdW1l
bnRFbGVtZW50KCkgOiBudWxscHRyOwogICAgIGlmIChkb2NFbGVtZW50ICYmIGRvY0VsZW1lbnQt
PnJlbmRlcmVyKCkgJiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9T
dHlsZShTQ1JPTExCQVIpKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVD
dXN0b21TY3JvbGxiYXIodGhpcywgb3JpZW50YXRpb24sIGRvY0VsZW1lbnQpOwogICAgICAgICAK
QEAgLTY3MCwxMSArNjcxLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmFwcGx5UGFnaW5hdGlvblRvVmll
d3BvcnQoKQogICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxl
bWVudCgpOwogICAgIFJlbmRlckVsZW1lbnQqIGRvY3VtZW50UmVuZGVyZXIgPSBkb2N1bWVudEVs
ZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIFJlbmRl
ckVsZW1lbnQqIGRvY3VtZW50T3JCb2R5UmVuZGVyZXIgPSBkb2N1bWVudFJlbmRlcmVyOwotICAg
IGF1dG8gYm9keSA9IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpOwotICAgIGlmIChib2R5ICYm
IGJvZHktPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRh
ZykpCi0gICAgICAgICAgICBkb2N1bWVudE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJl
ci0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBkb2N1bWVudEVsZW1lbnQtPmhh
c1RhZ05hbWUoaHRtbFRhZykgPyBib2R5LT5yZW5kZXJlcigpIDogZG9jdW1lbnRSZW5kZXJlcjsK
LSAgICB9CisgICAgYXV0byogYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7CisgICAgaWYgKGJvZHkg
JiYgYm9keS0+cmVuZGVyZXIoKSkKKyAgICAgICAgZG9jdW1lbnRPckJvZHlSZW5kZXJlciA9IGRv
Y3VtZW50UmVuZGVyZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgJiYgaXM8SFRN
TEh0bWxFbGVtZW50PigqZG9jdW1lbnRFbGVtZW50KSA/IGJvZHktPnJlbmRlcmVyKCkgOiBkb2N1
bWVudFJlbmRlcmVyOwogCiAgICAgUGFnaW5hdGlvbiBwYWdpbmF0aW9uOwogCkBAIC03MTUsMTUg
KzcxNCwxNSBAQCB2b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlv
dXQoU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogICAgICAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50
ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBSZW5kZXJFbGVtZW50KiBy
b290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlcmVy
KCkgOiBudWxscHRyOwotICAgICAgICBhdXRvIGJvZHkgPSBkb2N1bWVudC0+Ym9keU9yRnJhbWVz
ZXQoKTsKKyAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpOwog
ICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAo
Ym9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykgJiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQo
KSkgeworICAgICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZVNldEVsZW1lbnQ+KCpib2R5KSAmJiAh
ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgdk1vZGUgPSBTY3Jv
bGxiYXJBbHdheXNPZmY7CiAgICAgICAgICAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBbHdheXNP
ZmY7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTEJvZHlFbGVtZW50PigqYm9keSkpIHsKICAg
ICAgICAgICAgICAgICAvLyBJdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBjaGVjayB0aGUgWCBvdmVy
ZmxvdywKICAgICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGlsbGVnYWwgdG8gaGF2ZSB2aXNp
YmxlIGluIG9ubHkgb25lIGRpcmVjdGlvbi4KLSAgICAgICAgICAgICAgICBSZW5kZXJFbGVtZW50
KiBvID0gcm9vdFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFICYmIGRv
Y3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFnKSA/IGJvZHktPnJl
bmRlcmVyKCkgOiByb290UmVuZGVyZXI7CisgICAgICAgICAgICAgICAgUmVuZGVyRWxlbWVudCog
byA9IHJvb3RSZW5kZXJlci0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBpczxI
VE1MSHRtbEVsZW1lbnQ+KCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpID8gYm9keS0+cmVu
ZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKICAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9W
aWV3cG9ydChvLCBoTW9kZSwgdk1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2Ug
aWYgKHJvb3RSZW5kZXJlcikKQEAgLTEyMjksMTEgKzEyMjgsMTEgQEAgdm9pZCBGcmFtZVZpZXc6
OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+
IGNoYW5nZVNjaGVkdWxpbmdFbmFibGVkKG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQsIGZhbHNl
KTsKIAogICAgICAgICBpZiAoIW1fbGF5b3V0Um9vdCkgewotICAgICAgICAgICAgSFRNTEVsZW1l
bnQqIGJvZHkgPSBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpOworICAgICAgICAgICAgYXV0byog
Ym9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCk7CiAgICAgICAgICAgICBpZiAoYm9keSAm
JiBib2R5LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJvZHktPmhhc1RhZ05h
bWUoZnJhbWVzZXRUYWcpICYmICFmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmJvZHkpICYmICFmcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIoKS0+
c2V0Q2hpbGROZWVkc0xheW91dCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keS0+
aGFzVGFnTmFtZShib2R5VGFnKSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRN
TEJvZHlFbGVtZW50PigqYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2ZpcnN0
TGF5b3V0ICYmIG1fc2l6ZS5oZWlnaHQoKSAhPSBsYXlvdXRIZWlnaHQoKSAmJiBib2R5LT5yZW5k
ZXJlcigpLT5lbmNsb3NpbmdCb3goKS5zdHJldGNoZXNUb1ZpZXdwb3J0KCkpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBib2R5LT5yZW5kZXJlcigpLT5zZXRDaGlsZE5lZWRzTGF5b3V0KCk7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMTI4Myw4ICsxMjgyLDkgQEAgdm9pZCBGcmFtZVZpZXc6Omxh
eW91dChib29sIGFsbG93U3VidHJlZSkKICAgICAgICAgICAgIGlmIChvbGRTaXplICE9IG1fc2l6
ZSkgewogICAgICAgICAgICAgICAgIG1fbmVlZHNGdWxsUmVwYWludCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgaWYgKCFtX2ZpcnN0TGF5b3V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRl
ckJveCogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyQm94KCkgOiAwOwotICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJCb3gqIGJvZHlSZW5kZXJlciA9IHJvb3RSZW5kZXJlciAmJiBkb2N1bWVudC5ib2R5
T3JGcmFtZXNldCgpID8gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKS0+cmVuZGVyQm94KCkgOiAw
OworICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3gqIHJvb3RSZW5kZXJlciA9IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCgpID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlckJv
eCgpIDogbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50
LmJvZHlPckZyYW1lc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlckJveCogYm9keVJl
bmRlcmVyID0gcm9vdFJlbmRlcmVyICYmIGJvZHkgPyBib2R5LT5yZW5kZXJCb3goKSA6IG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5UmVuZGVyZXIgJiYgYm9keVJlbmRlcmVy
LT5zdHJldGNoZXNUb1ZpZXdwb3J0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5UmVu
ZGVyZXItPnNldENoaWxkTmVlZHNMYXlvdXQoKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBp
ZiAocm9vdFJlbmRlcmVyICYmIHJvb3RSZW5kZXJlci0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKQpA
QCAtMzUxNCwxNCArMzUxNCwxNCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlQW5ub3RhdGVkUmVn
aW9ucygpCiAKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewotICAgIFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9
IG51bGxwdHI7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBjb3JuZXJTdHlsZTsKICAgICBJbnRS
ZWN0IGNvcm5lclJlY3QgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgCiAgICAgaWYgKCFjb3Ju
ZXJSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAvLyBUcnkgdGhlIDxib2R5PiBlbGVtZW50IGZp
cnN0IGFzIGEgc2Nyb2xsIGNvcm5lciBzb3VyY2UuCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBm
cmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJv
ZHlPckZyYW1lc2V0KCkgOiAwOworICAgICAgICBFbGVtZW50KiBib2R5ID0gZG9jID8gZG9jLT5i
b2R5T3JGcmFtZXNldCgpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+cmVu
ZGVyZXIoKSkgewogICAgICAgICAgICAgcmVuZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpOwogICAg
ICAgICAgICAgY29ybmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQ
c2V1ZG9TdHlsZVJlcXVlc3QoU0NST0xMQkFSX0NPUk5FUiksICZyZW5kZXJlci0+c3R5bGUoKSk7
CkBAIC0zNTI5LDcgKzM1MjksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVy
KCkKICAgICAgICAgCiAgICAgICAgIGlmICghY29ybmVyU3R5bGUpIHsKICAgICAgICAgICAgIC8v
IElmIHRoZSA8Ym9keT4gZGlkbid0IGhhdmUgYSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3Qg
ZWxlbWVudCBtaWdodC4KLSAgICAgICAgICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2MgPyBk
b2MtPmRvY3VtZW50RWxlbWVudCgpIDogMDsKKyAgICAgICAgICAgIEVsZW1lbnQqIGRvY0VsZW1l
bnQgPSBkb2MgPyBkb2MtPmRvY3VtZW50RWxlbWVudCgpIDogbnVsbHB0cjsKICAgICAgICAgICAg
IGlmIChkb2NFbGVtZW50ICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAg
ICAgICByZW5kZXJlciA9IGRvY0VsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAg
Y29ybmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHls
ZVJlcXVlc3QoU0NST0xMQkFSX0NPUk5FUiksICZyZW5kZXJlci0+c3R5bGUoKSk7CkBAIC0zNTk1
LDggKzM1OTUsOCBAQCBDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkg
Y29uc3QKICAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIENvbG9y
KCk7CiAKLSAgICBFbGVtZW50KiBodG1sRWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogYm9keUVsZW1lbnQgPSBmcmFtZSgpLmRvY3Vt
ZW50KCktPmJvZHlPckZyYW1lc2V0KCk7CisgICAgYXV0byogaHRtbEVsZW1lbnQgPSBmcmFtZSgp
LmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIGF1dG8qIGJvZHlFbGVtZW50ID0g
ZnJhbWUoKS5kb2N1bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpOwogCiAgICAgLy8gU3RhcnQgd2l0
aCBpbnZhbGlkIGNvbG9ycy4KICAgICBDb2xvciBodG1sQmFja2dyb3VuZENvbG9yOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBkYjYyNTAxMzJiOGU1NTUyN2NkNTI2
MjIxZWI3YzhhZDY4YWM3ODk3Li4zZjUwN2UwN2RiNDM4MmQzNjNhY2ZmN2Q3YmMyZGQwMDg3MTkx
YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEJ1dHRvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpAQCAtNDY3LDggKzQ2OCw4IEBAIHZvaWQg
UmVuZGVyQm94Ojp1cGRhdGVGcm9tU3R5bGUoKQogICAgICAgICAgICAgLy8gKDEpIFRoZSByb290
IGVsZW1lbnQgaXMgPGh0bWw+LgogICAgICAgICAgICAgLy8gKDIpIFdlIGFyZSB0aGUgcHJpbWFy
eSA8Ym9keT4gKGNhbiBiZSBjaGVja2VkIGJ5IGxvb2tpbmcgYXQgZG9jdW1lbnQuYm9keSkuCiAg
ICAgICAgICAgICAvLyAoMykgVGhlIHJvb3QgZWxlbWVudCBoYXMgdmlzaWJsZSBvdmVyZmxvdy4K
LSAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1l
KGh0bWxUYWcpCi0gICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgp
ID09IGVsZW1lbnQoKQorICAgICAgICAgICAgaWYgKGlzPEhUTUxIdG1sRWxlbWVudD4oKmRvY3Vt
ZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5i
b2R5KCkgPT0gZWxlbWVudCgpCiAgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5kb2N1bWVu
dEVsZW1lbnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSkg
ewogICAgICAgICAgICAgICAgIGJveEhhc092ZXJmbG93Q2xpcCA9IGZhbHNlOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKaW5kZXggOWQ1ZGFlYzE2OWI4OWM5MTBiZjIwMWY0ZjgzYzgzMjQxNTIxNGFjNi4uNTI3
NWEyNzExNzEwYTg5M2E0MTNiMDc2MWQxNTgxMzdhMTQwNWRhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC03OTAsMTAgKzc5
MCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAgICAgIC8vIHRv
IGNyYXdsIGFyb3VuZCBhIHJlbmRlciB0cmVlIHdpdGggcG90ZW50aWFsIDpiZWZvcmUvOmFmdGVy
IGNvbnRlbnQgYW5kCiAgICAgICAgICAgICAgICAgICAgIC8vIGFub255bW91cyBibG9ja3MgY3Jl
YXRlZCBieSBpbmxpbmUgPGJvZHk+IHRhZ3MgZXRjLiAgV2UgY2FuIGxvY2F0ZSB0aGUgPGJvZHk+
CiAgICAgICAgICAgICAgICAgICAgIC8vIHJlbmRlciBvYmplY3QgdmVyeSBlYXNpbHkgdmlhIHRo
ZSBET00uCi0gICAgICAgICAgICAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0gZG9jdW1lbnQo
KS5ib2R5T3JGcmFtZXNldCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYm9keSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2N1bWVudCgpLmJvZHlP
ckZyYW1lc2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IHNjcm9sbCBh
IGZyYW1lc2V0IGRvY3VtZW50IGFueXdheS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlzT3Bh
cXVlUm9vdCA9IGJvZHktPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaXNPcGFxdWVSb290ID0gaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmJvZHkpOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U1ZHIGRvY3VtZW50cyBhbmQgWE1MIGRvY3VtZW50cyB3aXRoIFNWRyByb290IG5vZGVzIGFyZSB0
cmFuc3BhcmVudC4KICAgICAgICAgICAgICAgICAgICAgICAgIGlzT3BhcXVlUm9vdCA9ICFkb2N1
bWVudCgpLmhhc1NWR1Jvb3ROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAKaW5kZXggMGE3NTUyMjQwNDA5YjAzZDBlZjAxY2ViZmEwMGNjNDE1NzcwNmI0
OS4uNjg2ZjZmZmE1Njg3ZjQwOWRhZjA4NDM3YTlmYjk2ZjU4NzlhMTY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAg
UmVuZGVyRWxlbWVudCYgUmVuZGVyRWxlbWVudDo6cmVuZGVyZXJGb3JSb290QmFja2dyb3VuZCgp
CiAgICAgICAgIC8vIHRvIGNyYXdsIGFyb3VuZCBhIHJlbmRlciB0cmVlIHdpdGggcG90ZW50aWFs
IDpiZWZvcmUvOmFmdGVyIGNvbnRlbnQgYW5kCiAgICAgICAgIC8vIGFub255bW91cyBibG9ja3Mg
Y3JlYXRlZCBieSBpbmxpbmUgPGJvZHk+IHRhZ3MgZXRjLiBXZSBjYW4gbG9jYXRlIHRoZSA8Ym9k
eT4KICAgICAgICAgLy8gcmVuZGVyIG9iamVjdCB2ZXJ5IGVhc2lseSB2aWEgdGhlIERPTS4KLSAg
ICAgICAgaWYgKGF1dG8qIGJvZHkgPSBjaGlsZHJlbk9mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KCpl
bGVtZW50KCkpLmZpcnN0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGJvZHkgPSBkb2N1bWVudCgp
LmJvZHkoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gYm9keS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gKnJlbmRlcmVyOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDA1
ZGVjOGFhMzViODE4YjllNzIyMTI2NDUwMmUzMTg3MTE1Y2MwYmMuLjgwNTJmMTYzN2FlZWIyOTBm
OTBiYjI0ZjhlZDI4NTc1MDE0N2Q1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NMYXllci5oIgorI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxD
YW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTWVkaWFFbGVtZW50LmgiCkBAIC0xNzg5LDcgKzE3OTAsNyBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKCkgY29uc3QKIAog
ICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgIC8vIExvb2sgdG8g
c2VlIGlmIHRoZSByb290IG9iamVjdCBoYXMgYSBub24tc2ltcGxlIGJhY2tncm91bmQKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiByb290T2JqZWN0ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpID8gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5y
ZW5kZXJlcigpIDogMDsKKyAgICAgICAgYXV0byogcm9vdE9iamVjdCA9IHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSA/IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kb2N1bWVu
dEVsZW1lbnQoKS0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghcm9vdE9iamVj
dCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0xNzk5LDEyICsxODAw
LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0
aW5nTGF5ZXIoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAg
ICAgICAgLy8gTm93IGxvb2sgYXQgdGhlIGJvZHkncyByZW5kZXJlci4KLSAgICAgICAgSFRNTEVs
ZW1lbnQqIGJvZHkgPSByZW5kZXJlcigpLmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKTsKLSAg
ICAgICAgUmVuZGVyT2JqZWN0KiBib2R5T2JqZWN0ID0gKGJvZHkgJiYgYm9keS0+aGFzVGFnTmFt
ZShib2R5VGFnKSkgPyBib2R5LT5yZW5kZXJlcigpIDogMDsKLSAgICAgICAgaWYgKCFib2R5T2Jq
ZWN0KQorICAgICAgICBhdXRvKiBib2R5ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmJvZHkoKTsK
KyAgICAgICAgaWYgKCFib2R5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBh
dXRvKiBib2R5UmVuZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIWJvZHlS
ZW5kZXJlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlm
IChoYXNCb3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZEltYWdlKGJvZHlPYmplY3QtPnN0eWxlKCkp
KQorICAgICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmRJbWFnZShib2R5UmVu
ZGVyZXItPnN0eWxlKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwNDU0MzNjMjRhNDE4
NWUyMDViNzM0ZTllMDhiM2Y4MjQxZDU5ZjA0Li5lYjcyNmQzNTE4YjZiMTQ1NDNmMGUxNDg5NTU5
N2I4MGVkZDMyM2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cApAQCAtMjI5NSw4ICsyMjk1LDEwIEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmpl
Y3Q6Om9mZnNldFBhcmVudCgpIGNvbnN0CiAgICAgfQogICAgIAogICAgIC8vIENTUyByZWdpb25z
IHNwZWNpZmljYXRpb24gc2F5cyB0aGF0IHJlZ2lvbiBmbG93cyBzaG91bGQgcmV0dXJuIHRoZSBi
b2R5IGVsZW1lbnQgYXMgdGhlaXIgb2Zmc2V0UGFyZW50LgotICAgIGlmIChpczxSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ+KGN1cnJlbnQpKQotICAgICAgICBjdXJyZW50ID0gZG9jdW1lbnQoKS5ib2R5
T3JGcmFtZXNldCgpID8gZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpLT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKKyAgICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihjdXJyZW50KSkgewor
ICAgICAgICBhdXRvKiBib2R5ID0gZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpOworICAgICAg
ICBjdXJyZW50ID0gYm9keSA/IGJvZHktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIH0KICAg
ICAKICAgICByZXR1cm4gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnJlbnQpID8gZG93bmNh
c3Q8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnJlbnQpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA3NGY5ZmU4NmJl
YWIwNTRlYmM1MjVlNTEwODQ0YWUxNDVhYjAzN2Q3Li45ODdkOTRjYjEyMDY0OGRhYzVmZDk4YmM5
MjIyMWM4YTg5ZmMwZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwCkBAIC04MTAsNyArODEwLDcgQEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRp
b24oTm9kZSogbm9kZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAotICAgIEVsZW1l
bnQqIGJvZHkgPSBub2RlLT5kb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCk7CisgICAgYXV0byog
Ym9keSA9IG5vZGUtPmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKTsKICAgICBOb2RlKiBwYXJl
bnQ7CiAgICAgZm9yIChOb2RlKiBuID0gbm9kZTsgbjsgbiA9IHBhcmVudCkgewogICAgICAgICBw
YXJlbnQgPSBuLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggYTM3MmQyY2Q2MGQzOTMy
YTgyMWYwMDI3Nzc4MWJmNzRiNjk5ZDAwZS4uYTAyYzQ5ZWNmM2M5NjFmNmU4NDM0YTE0NTFkOTY5
ZjA3MGIyZWQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZl
Rm9yRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmNwcApAQCAtNjksMTIgKzY5LDEzIEBAIFJlZjxSZW5kZXJTdHlsZT4gcmVzb2x2
ZUZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgogCiAgICAgRWxl
bWVudCogZG9jRWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwotICAgIFJlbmRl
ck9iamVjdCogZG9jRWxlbWVudFJlbmRlcmVyID0gZG9jRWxlbWVudCA/IGRvY0VsZW1lbnQtPnJl
bmRlcmVyKCkgOiAwOworICAgIFJlbmRlck9iamVjdCogZG9jRWxlbWVudFJlbmRlcmVyID0gZG9j
RWxlbWVudCA/IGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIGlmIChkb2NF
bGVtZW50UmVuZGVyZXIpIHsKICAgICAgICAgLy8gVXNlIHRoZSBkaXJlY3Rpb24gYW5kIHdyaXRp
bmctbW9kZSBvZiB0aGUgYm9keSB0byBzZXQgdGhlCiAgICAgICAgIC8vIHZpZXdwb3J0J3MgZGly
ZWN0aW9uIGFuZCB3cml0aW5nLW1vZGUgdW5sZXNzIHRoZSBwcm9wZXJ0eSBpcyBzZXQgb24gdGhl
IGRvY3VtZW50IGVsZW1lbnQuCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGJvZHksIHRoZW4g
dXNlIHRoZSBkb2N1bWVudCBlbGVtZW50LgotICAgICAgICBSZW5kZXJPYmplY3QqIGJvZHlSZW5k
ZXJlciA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCkgPyBkb2N1bWVudC5ib2R5T3JGcmFtZXNl
dCgpLT5yZW5kZXJlcigpIDogMDsKKyAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50LmJvZHlP
ckZyYW1lc2V0KCk7CisgICAgICAgIFJlbmRlck9iamVjdCogYm9keVJlbmRlcmVyID0gYm9keSA/
IGJvZHktPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgICAgICBpZiAoYm9keVJlbmRlcmVyICYm
ICFkb2N1bWVudC53cml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAg
ICBkb2N1bWVudFN0eWxlLmdldCgpLnNldFdyaXRpbmdNb2RlKGJvZHlSZW5kZXJlci0+c3R5bGUo
KS53cml0aW5nTW9kZSgpKTsKICAgICAgICAgZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245419</attachid>
            <date>2015-01-26 21:56:16 -0800</date>
            <delta_ts>2015-01-26 23:05:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140920-20150126215619.patch</filename>
            <type>text/plain</type>
            <size>26753</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDc3OGY0ZmMzZjhjY2I3
ZDZkOGM5ZjZhYzhiMzZkYTU2NDE1MjAwNy4uYWM3NTQzNDExMDliZDQwNzZkMDE3OTA4NTBjNjFh
OGQwYTQyMTIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIyIEBACiAyMDE1LTAxLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgSW50cm9kdWNlIERvY3VtZW50
Ojpib2R5KCkgZm9yIGNhbGwgc2l0ZXMgaW50ZXJlc3RlZCBpbiB0aGUgPGJvZHk+IGVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDkyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEludHJvZHVjZSBE
b2N1bWVudDo6Ym9keSgpIG1ldGhvZCBmb3IgY2FsbCBzaXRlcyBpbnRlcmVzdGVkIG9ubHkgaW4g
dGhlCisgICAgICAgIGRvY3VtZW50J3MgPGJvZHk+IGVsZW1lbnQgKG5vdCB0aGUgPGZyYW1lc2V0
PikuIEFsc28gY2xlYW4gdXAgdGhlIGNhbGwKKyAgICAgICAgc2l0ZXMgb2YgRG9jdW1lbnQ6OmJv
ZHlPckZyYW1lc2V0KCkgdG8gY2FjaGUgdGhlIHJldHVybiB2YWx1ZSB3aGVuCisgICAgICAgIHN1
aXRhYmxlIGFzIHRoaXMgbWV0aG9kIGRvZXMgYSB0cmVlIHRyYXZlcnNhbC4KKworICAgICAgICBU
aGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSBiZWhhdmlvciwgaXQgbWVyZWx5IHBvcnRzIGNhbGxz
IHNpdGVzIHRoYXQKKyAgICAgICAgd2VyZSBjYWxsaW5nIERvY3VtZW50Ojpib2R5T3JGcmFtZXNl
dCgpIHRoZW4gY2hlY2tpbmcgaWYgdGhlIHRhZyB3YXMKKyAgICAgICAgPGJvZHk+LCB0byBjYWxs
IERvY3VtZW50Ojpib2R5KCkgaW5zdGVhZC4gRG9pbmcgc28gaXMgbW9yZSBlZmZpY2llbnQKKyAg
ICAgICAgYW5kIGNsZWFyZXIuCisKKzIwMTUtMDEtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBEb2N1bWVudC5kaXIgc2hvdWxkIHJlZmxlY3QgdGhlICdkaXIn
IGF0dHJpYnV0ZSBvZiB0aGUgcm9vdCBodG1sIGVsZW1lbnQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDkyMgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAzZWJkMmI3MmE1MmExNDMyY2JiN2MyZjY3OWVkNTYwMTI5MjVkNGNkLi5mNjUwNDJm
OGNlNGJlMzVmMzIwZDk3MTZiNmNjZTViMDAzYmMzZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTIzMjQsMTMgKzIzMjQsMjEgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRPcGVuKCkK
ICAgICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogfQogCitIVE1MQm9keUVsZW1lbnQqIERvY3Vt
ZW50Ojpib2R5KCkgY29uc3QKK3sKKyAgICBhdXRvKiBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50
KCk7CisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gY2hpbGRyZW5PZlR5cGU8SFRNTEJvZHlFbGVtZW50PigqZWxlbWVudCkuZmlyc3QoKTsKK30K
KwogSFRNTEVsZW1lbnQqIERvY3VtZW50Ojpib2R5T3JGcmFtZXNldCgpIGNvbnN0CiB7CiAgICAg
Ly8gSWYgdGhlIGRvY3VtZW50IGVsZW1lbnQgY29udGFpbnMgYm90aCBhIGZyYW1lc2V0IGFuZCBh
IGJvZHksIHRoZSBmcmFtZXNldCB3aW5zLgotICAgIGF1dG8gZWxlbWVudCA9IGRvY3VtZW50RWxl
bWVudCgpOworICAgIGF1dG8qIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAo
IWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmIChhdXRvIGZyYW1lc2V0
ID0gY2hpbGRyZW5PZlR5cGU8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmVsZW1lbnQpLmZpcnN0KCkp
CisgICAgaWYgKGF1dG8qIGZyYW1lc2V0ID0gY2hpbGRyZW5PZlR5cGU8SFRNTEZyYW1lU2V0RWxl
bWVudD4oKmVsZW1lbnQpLmZpcnN0KCkpCiAgICAgICAgIHJldHVybiBmcmFtZXNldDsKICAgICBy
ZXR1cm4gY2hpbGRyZW5PZlR5cGU8SFRNTEJvZHlFbGVtZW50PigqZWxlbWVudCkuZmlyc3QoKTsK
IH0KQEAgLTIzMzksNiArMjM0Nyw5IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEJvZHlPckZyYW1lc2V0
KFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IHBycE5ld0JvZHksIEV4Y2VwdGlvbkNvCiB7CiAgICAg
UmVmUHRyPEhUTUxFbGVtZW50PiBuZXdCb2R5ID0gcHJwTmV3Qm9keTsKIAorICAgIC8vIEZJWE1F
OiBUaGlzIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyBhIDxmcmFtZXNldD4gRWxlbWVudCwgb25s
eSBhIDxib2R5Pi4gVGhpcyBkb2VzCisgICAgLy8gbm90IG1hdGNoIHRoZSBIVE1MIHNwZWNpZmlj
YXRpb246CisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZG9t
Lmh0bWwjZG9tLWRvY3VtZW50LWJvZHkKICAgICBpZiAoIW5ld0JvZHkgfHwgIWRvY3VtZW50RWxl
bWVudCgpIHx8ICFuZXdCb2R5LT5oYXNUYWdOYW1lKGJvZHlUYWcpKSB7IAogICAgICAgICBlYyA9
IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0Miw3ICsyNTUz
LDcgQEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkU2NoZWR1bGVMYXlvdXQoKQogICAgIC8vICAgIChi
KSBPbmx5IHNjaGVkdWxlIGxheW91dCBvbmNlIHdlIGhhdmUgYSBib2R5IGVsZW1lbnQuCiAKICAg
ICByZXR1cm4gKGhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpICYmIGJvZHlPckZyYW1lc2V0KCkpCi0g
ICAgICAgIHx8IChkb2N1bWVudEVsZW1lbnQoKSAmJiAhZG9jdW1lbnRFbGVtZW50KCktPmhhc1Rh
Z05hbWUoaHRtbFRhZykpOworICAgICAgICB8fCAoZG9jdW1lbnRFbGVtZW50KCkgJiYgIWlzPEhU
TUxIdG1sRWxlbWVudD4oKmRvY3VtZW50RWxlbWVudCgpKSk7CiB9CiAgICAgCiBib29sIERvY3Vt
ZW50Ojppc0xheW91dFRpbWVyQWN0aXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggOTU3OGI0
MjgzZDA5MzBhNzhkY2ZlM2UwNmJhNGEwNDdlMzE5NjQ4Yy4uZjQ3MzQ5NGQ3YWI1ZjZlNWQ0Yjlh
NzBiMzgzZTZmZjRlM2NjMzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwMSw5ICsxMDEs
MTAgQEAgY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRm9ybUNvbnRyb2xsZXI7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIEZyYW1lVmlldzsKK2NsYXNzIEhUTUxBbGxDb2xsZWN0aW9uOworY2xhc3MgSFRN
TEJvZHlFbGVtZW50OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MQ29sbGVj
dGlvbjsKLWNsYXNzIEhUTUxBbGxDb2xsZWN0aW9uOwogY2xhc3MgSFRNTERvY3VtZW50OwogY2xh
c3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CkBAIC05MzcsNiAr
OTM4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGhhc1ZhbGlkTmFtZXNwYWNlRm9yRWxl
bWVudHMoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHN0YXRpYyBib29sIGhhc1ZhbGlkTmFt
ZXNwYWNlRm9yQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKKyAgICBIVE1MQm9k
eUVsZW1lbnQqIGJvZHkoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1MRWxlbWVudCog
Ym9keU9yRnJhbWVzZXQoKSBjb25zdDsKICAgICB2b2lkIHNldEJvZHlPckZyYW1lc2V0KFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+LCBFeGNlcHRpb25Db2RlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggM2UwZTg5OTUzYzhiYzY4M2JmNjY1NzM1YTI0
MTA3NWJmZDdmZWQ3YS4uNGQxMWY1ODIzZDI4Y2NjMWE1Mzg0YWQ2YmQxMmMwM2I0Y2IwNjAxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTIxMDgsMTAg
KzIxMDgsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgYXV0byogZG9jdW1lbnRFbGVtZW50ID0gZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQotICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKGF1dG8gYm9keSA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxCb2R5
RWxlbWVudD4oKmRvY3VtZW50RWxlbWVudCkuZmlyc3QoKSkKKyAgICBpZiAoYXV0byogYm9keSA9
IGRvY3VtZW50LT5ib2R5KCkpCiAgICAgICAgIHNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShib2R5KSwgRE9XTlNUUkVBTSkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAKaW5kZXggZmZhZmZjNDBj
MjJlZTYyMDFlZmQ5OGFmZjYwODFiZmJjMTdlMzM5ZC4uNGI3NDY1YjYyMDI2M2I1Y2UyYWNjNzkx
YzE5NDFhZGE4ZmE5NDhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNp
YmxlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0
aW9uLmNwcApAQCAtNTM2LDggKzUzNiwxMSBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmNh
bm9uaWNhbFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwYXNzZWRQb3NpdGlvbikKIAogICAgIC8v
IFRoZSBuZXcgcG9zaXRpb24gbXVzdCBiZSBpbiB0aGUgc2FtZSBlZGl0YWJsZSBlbGVtZW50LiBF
bmZvcmNlIHRoYXQgZmlyc3QuCiAgICAgLy8gVW5sZXNzIHRoZSBkZXNjZW50IGlzIGZyb20gYSBu
b24tZWRpdGFibGUgaHRtbCBlbGVtZW50IHRvIGFuIGVkaXRhYmxlIGJvZHkuCi0gICAgaWYgKG5v
ZGUgJiYgbm9kZS0+aGFzVGFnTmFtZShodG1sVGFnKSAmJiAhbm9kZS0+aGFzRWRpdGFibGVTdHls
ZSgpICYmIG5vZGUtPmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKSAmJiBub2RlLT5kb2N1bWVu
dCgpLmJvZHlPckZyYW1lc2V0KCktPmhhc0VkaXRhYmxlU3R5bGUoKSkKLSAgICAgICAgcmV0dXJu
IG5leHQuaXNOb3ROdWxsKCkgPyBuZXh0IDogcHJldjsKKyAgICBpZiAoaXM8SFRNTEh0bWxFbGVt
ZW50Pihub2RlKSAmJiAhbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKSB7CisgICAgICAgIGF1dG8q
IGJvZHkgPSBub2RlLT5kb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCk7CisgICAgICAgIGlmIChi
b2R5ICYmIGJvZHktPmhhc0VkaXRhYmxlU3R5bGUoKSkKKyAgICAgICAgICAgIHJldHVybiBuZXh0
LmlzTm90TnVsbCgpID8gbmV4dCA6IHByZXY7CisgICAgfQogCiAgICAgTm9kZSogZWRpdGluZ1Jv
b3QgPSBlZGl0YWJsZVJvb3RGb3JQb3NpdGlvbihwb3NpdGlvbik7CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRG9jdW1lbnQuY3BwCmluZGV4IDU0MDBlNDlhZGIzODNmMWYzMGJmZTZiOTA3
Zjg1NTVkNWJjNWMyMGQuLjRhMzE5OGUwYjFmYzJiYjRiOGIyZjUyMWMwYjI3ZjM5MmI3ZTEzMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTU3LDYgKzU3LDcgQEAKICNp
bmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50VHlwZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xMzksODIgKzE0MCw3MiBAQCB2b2lkIEhUTUxEb2N1bWVu
dDo6c2V0RGVzaWduTW9kZShjb25zdCBTdHJpbmcmIHZhbHVlKQogCiBjb25zdCBBdG9taWNTdHJp
bmcmIEhUTUxEb2N1bWVudDo6YmdDb2xvcigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJv
ZHlFbGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVu
dD4oYm9keUVsZW1lbnQpKQorICAgIGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpOworICAgIGlm
ICghYm9keUVsZW1lbnQpCiAgICAgICAgIHJldHVybiBlbXB0eUF0b207CiAgICAgcmV0dXJuIGJv
ZHlFbGVtZW50LT5mYXN0R2V0QXR0cmlidXRlKGJnY29sb3JBdHRyKTsKIH0KIAogdm9pZCBIVE1M
RG9jdW1lbnQ6OnNldEJnQ29sb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBIVE1MRWxl
bWVudCogYm9keUVsZW1lbnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlmICghaXM8SFRNTEJv
ZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLSAgICBib2R5RWxlbWVu
dC0+c2V0QXR0cmlidXRlKGJnY29sb3JBdHRyLCB2YWx1ZSk7CisgICAgaWYgKGF1dG8qIGJvZHlF
bGVtZW50ID0gYm9keSgpKQorICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRlKGJnY29s
b3JBdHRyLCB2YWx1ZSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTERvY3VtZW50Ojpm
Z0NvbG9yKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogYm9keUVsZW1lbnQgPSBib2R5T3JG
cmFtZXNldCgpOwotICAgIGlmICghaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5RWxlbWVudCkpCisg
ICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCk7CisgICAgaWYgKCFib2R5RWxlbWVudCkKICAg
ICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1lbnQtPmZhc3RHZXRB
dHRyaWJ1dGUodGV4dEF0dHIpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0RmdDb2xvcihj
b25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJv
ZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodGV4dEF0
dHIsIHZhbHVlKTsKKyAgICBpZiAoYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCkpCisgICAgICAg
IGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUodGV4dEF0dHIsIHZhbHVlKTsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OmFsaW5rQ29sb3IoKSBjb25zdAogewotICAgIEhU
TUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxI
VE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKKyAgICBhdXRvKiBib2R5RWxlbWVudCA9IGJv
ZHkoKTsKKyAgICBpZiAoIWJvZHlFbGVtZW50KQogICAgICAgICByZXR1cm4gZW1wdHlBdG9tOwog
ICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdldEF0dHJpYnV0ZShhbGlua0F0dHIpOwogfQog
CiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0QWxpbmtDb2xvcihjb25zdCBTdHJpbmcmIHZhbHVlKQog
ewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1lc2V0KCk7Ci0gICAg
aWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUoYWxpbmtBdHRyLCB2YWx1ZSk7CisgICAgaWYg
KGF1dG8qIGJvZHlFbGVtZW50ID0gYm9keSgpKQorICAgICAgICBib2R5RWxlbWVudC0+c2V0QXR0
cmlidXRlKGFsaW5rQXR0ciwgdmFsdWUpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxE
b2N1bWVudDo6bGlua0NvbG9yKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogYm9keUVsZW1l
bnQgPSBib2R5T3JGcmFtZXNldCgpOwotICAgIGlmICghaXM8SFRNTEJvZHlFbGVtZW50Pihib2R5
RWxlbWVudCkpCisgICAgYXV0byogYm9keUVsZW1lbnQgPSBib2R5KCk7CisgICAgaWYgKCFib2R5
RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGVtcHR5QXRvbTsKICAgICByZXR1cm4gYm9keUVsZW1l
bnQtPmZhc3RHZXRBdHRyaWJ1dGUobGlua0F0dHIpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6
c2V0TGlua0NvbG9yKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgSFRNTEVsZW1lbnQqIGJv
ZHlFbGVtZW50ID0gYm9keU9yRnJhbWVzZXQoKTsKLSAgICBpZiAoIWlzPEhUTUxCb2R5RWxlbWVu
dD4oYm9keUVsZW1lbnQpKQotICAgICAgICByZXR1cm47Ci0gICAgcmV0dXJuIGJvZHlFbGVtZW50
LT5zZXRBdHRyaWJ1dGUobGlua0F0dHIsIHZhbHVlKTsKKyAgICBpZiAoYXV0byogYm9keUVsZW1l
bnQgPSBib2R5KCkpCisgICAgICAgIGJvZHlFbGVtZW50LT5zZXRBdHRyaWJ1dGUobGlua0F0dHIs
IHZhbHVlKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MRG9jdW1lbnQ6OnZsaW5rQ29s
b3IoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJvZHlPckZyYW1l
c2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50KSkKKyAgICBh
dXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKTsKKyAgICBpZiAoIWJvZHlFbGVtZW50KQogICAgICAg
ICByZXR1cm4gZW1wdHlBdG9tOwogICAgIHJldHVybiBib2R5RWxlbWVudC0+ZmFzdEdldEF0dHJp
YnV0ZSh2bGlua0F0dHIpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudDo6c2V0VmxpbmtDb2xvcihj
b25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIEhUTUxFbGVtZW50KiBib2R5RWxlbWVudCA9IGJv
ZHlPckZyYW1lc2V0KCk7Ci0gICAgaWYgKCFpczxIVE1MQm9keUVsZW1lbnQ+KGJvZHlFbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHJldHVybiBib2R5RWxlbWVudC0+c2V0QXR0cmlidXRl
KHZsaW5rQXR0ciwgdmFsdWUpOworICAgIGlmIChhdXRvKiBib2R5RWxlbWVudCA9IGJvZHkoKSkK
KyAgICAgICAgYm9keUVsZW1lbnQtPnNldEF0dHJpYnV0ZSh2bGlua0F0dHIsIHZhbHVlKTsKIH0K
IAogdm9pZCBIVE1MRG9jdW1lbnQ6OmNhcHR1cmVFdmVudHMoKQpAQCAtMzQwLDcgKzMzMSw5IEBA
IHZvaWQgSFRNTERvY3VtZW50OjpjbGVhcigpCiAKIGJvb2wgSFRNTERvY3VtZW50Ojppc0ZyYW1l
U2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oYm9keU9y
RnJhbWVzZXQoKSk7CisgICAgaWYgKCFkb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiAhIWNoaWxkcmVuT2ZUeXBlPEhUTUxGcmFtZVNldEVsZW1lbnQ+
KCpkb2N1bWVudEVsZW1lbnQoKSkuZmlyc3QoKTsKIH0KIAogUmVmPERvY3VtZW50PiBIVE1MRG9j
dW1lbnQ6OmNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNDc5MThkMzIyOTE3
NDQ0YjI1MjA3NWM0NzlhZTViZWQyZDliYzFlZS4uZWEzZWUyYzdkNDUyNWFhOGI0NzYyMzNiMTk2
NjI0YTE3YjMzMzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCkBAIC05NTgsMTAgKzk1OCwxMCBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJ
bnNwZWN0b3JDU1NBZ2VudDo6dmlhSW5zcGVjdG9yU3R5bGVTaGVldChEb2N1bWVudCogZG9jdW1l
bgogICAgIGlmICghZWMpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogdGFyZ2V0Tm9kZTsKICAg
ICAgICAgLy8gSEVBRCBpcyBhYnNlbnQgaW4gSW1hZ2VEb2N1bWVudHMsIGZvciBleGFtcGxlLgot
ICAgICAgICBpZiAoZG9jdW1lbnQtPmhlYWQoKSkKLSAgICAgICAgICAgIHRhcmdldE5vZGUgPSBk
b2N1bWVudC0+aGVhZCgpOwotICAgICAgICBlbHNlIGlmIChkb2N1bWVudC0+Ym9keU9yRnJhbWVz
ZXQoKSkKLSAgICAgICAgICAgIHRhcmdldE5vZGUgPSBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQo
KTsKKyAgICAgICAgaWYgKGF1dG8qIGhlYWQgPSBkb2N1bWVudC0+aGVhZCgpKQorICAgICAgICAg
ICAgdGFyZ2V0Tm9kZSA9IGhlYWQ7CisgICAgICAgIGVsc2UgaWYgKGF1dG8qIGJvZHkgPSBkb2N1
bWVudC0+Ym9keU9yRnJhbWVzZXQoKSkKKyAgICAgICAgICAgIHRhcmdldE5vZGUgPSBib2R5Owog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
OTAyZmIxODRlMjEwYjE5M2RhZWVhMTIzNDhlZjY0OTAxNGRhYTRkOC4uNTI0YTRlNzU0ZTEyODVi
ZWQ1ODUxODhkM2E3MDQ1MmJmNTE0MDVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05MTIsNyArOTEyLDEwIEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByZWxvYWQoQ2FjaGVkUmVzb3VyY2U6OlR5cGUg
dHlwZSwgQ2FjaGVkUmVzb3VyY2VSZXF1CiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNo
ZWNrRm9yUGVuZGluZ1ByZWxvYWRzKCkgCiB7Ci0gICAgaWYgKG1fcGVuZGluZ1ByZWxvYWRzLmlz
RW1wdHkoKSB8fCAhbV9kb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKSB8fCAhbV9kb2N1bWVudC0+
Ym9keU9yRnJhbWVzZXQoKS0+cmVuZGVyZXIoKSkKKyAgICBpZiAobV9wZW5kaW5nUHJlbG9hZHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byogYm9keSA9IG1fZG9jdW1lbnQt
PmJvZHlPckZyYW1lc2V0KCk7CisgICAgaWYgKCFib2R5IHx8ICFib2R5LT5yZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm47CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIFdlIGFsd2F5cyBwcmVs
b2FkIHJlc291cmNlcyBvbiBpT1MuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMjc2Pi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCA5ODU0OTE2
MzRlOTAwYTI5ZmY5Y2ZjMDkzN2VjNDAwNWRmNTI0YzFiLi4xZWE3MjBkYzFiYTRmM2M3YzA3NzVm
OTFiNjc4Y2JiMTJmMzkwODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJIVE1MQm9keUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgpAQCAtNTM5LDEyICs1
NDAsMTIgQEAgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IEZyYW1lVmlldzo6Y3JlYXRlU2Nyb2xsYmFy
KFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW8KICAgICBEb2N1bWVudCogZG9jID0gZnJh
bWUoKS5kb2N1bWVudCgpOwogCiAgICAgLy8gVHJ5IHRoZSA8Ym9keT4gZWxlbWVudCBmaXJzdCBh
cyBhIHNjcm9sbGJhciBzb3VyY2UuCi0gICAgRWxlbWVudCogYm9keSA9IGRvYyA/IGRvYy0+Ym9k
eU9yRnJhbWVzZXQoKSA6IDA7CisgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJv
ZHlPckZyYW1lc2V0KCkgOiBudWxscHRyOwogICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVy
KCkgJiYgYm9keS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExCQVIp
KQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxiYXIo
dGhpcywgb3JpZW50YXRpb24sIGJvZHkpOwogICAgIAogICAgIC8vIElmIHRoZSA8Ym9keT4gZGlk
bid0IGhhdmUgYSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3QgZWxlbWVudCBtaWdodC4KLSAg
ICBFbGVtZW50KiBkb2NFbGVtZW50ID0gZG9jID8gZG9jLT5kb2N1bWVudEVsZW1lbnQoKSA6IDA7
CisgICAgRWxlbWVudCogZG9jRWxlbWVudCA9IGRvYyA/IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCkg
OiBudWxscHRyOwogICAgIGlmIChkb2NFbGVtZW50ICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkg
JiYgZG9jRWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS5oYXNQc2V1ZG9TdHlsZShTQ1JPTExC
QVIpKQogICAgICAgICByZXR1cm4gUmVuZGVyU2Nyb2xsYmFyOjpjcmVhdGVDdXN0b21TY3JvbGxi
YXIodGhpcywgb3JpZW50YXRpb24sIGRvY0VsZW1lbnQpOwogICAgICAgICAKQEAgLTY3MCwxMSAr
NjcxLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmFwcGx5UGFnaW5hdGlvblRvVmlld3BvcnQoKQogICAg
IGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwogICAg
IFJlbmRlckVsZW1lbnQqIGRvY3VtZW50UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1
bWVudEVsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIFJlbmRlckVsZW1lbnQqIGRv
Y3VtZW50T3JCb2R5UmVuZGVyZXIgPSBkb2N1bWVudFJlbmRlcmVyOwotICAgIGF1dG8gYm9keSA9
IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpOwotICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpCi0gICAgICAg
ICAgICBkb2N1bWVudE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJlci0+c3R5bGUoKS5v
dmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBkb2N1bWVudEVsZW1lbnQtPmhhc1RhZ05hbWUoaHRt
bFRhZykgPyBib2R5LT5yZW5kZXJlcigpIDogZG9jdW1lbnRSZW5kZXJlcjsKLSAgICB9CisgICAg
YXV0byogYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7CisgICAgaWYgKGJvZHkgJiYgYm9keS0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgZG9jdW1lbnRPckJvZHlSZW5kZXJlciA9IGRvY3VtZW50UmVuZGVy
ZXItPnN0eWxlKCkub3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUgJiYgaXM8SFRNTEh0bWxFbGVtZW50
PigqZG9jdW1lbnRFbGVtZW50KSA/IGJvZHktPnJlbmRlcmVyKCkgOiBkb2N1bWVudFJlbmRlcmVy
OwogCiAgICAgUGFnaW5hdGlvbiBwYWdpbmF0aW9uOwogCkBAIC03MTUsMTUgKzcxNCwxNSBAQCB2
b2lkIEZyYW1lVmlldzo6Y2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Nyb2xsYmFy
TW9kZSYgaE1vZGUsIFNjcm9sbGJhcgogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZSgpLmRvY3VtZW50KCk7CiAgICAgICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQt
PmRvY3VtZW50RWxlbWVudCgpOwogICAgICAgICBSZW5kZXJFbGVtZW50KiByb290UmVuZGVyZXIg
PSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRy
OwotICAgICAgICBhdXRvIGJvZHkgPSBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKTsKKyAgICAg
ICAgYXV0byogYm9keSA9IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpOwogICAgICAgICBpZiAo
Ym9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFn
TmFtZShmcmFtZXNldFRhZykgJiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgeworICAgICAg
ICAgICAgaWYgKGlzPEhUTUxGcmFtZVNldEVsZW1lbnQ+KCpib2R5KSAmJiAhZnJhbWVGbGF0dGVu
aW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAgdk1vZGUgPSBTY3JvbGxiYXJBbHdheXNP
ZmY7CiAgICAgICAgICAgICAgICAgaE1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXM8SFRNTEJvZHlFbGVtZW50PigqYm9keSkpIHsKICAgICAgICAgICAgICAg
ICAvLyBJdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBjaGVjayB0aGUgWCBvdmVyZmxvdywKICAgICAg
ICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGlsbGVnYWwgdG8gaGF2ZSB2aXNpYmxlIGluIG9ubHkg
b25lIGRpcmVjdGlvbi4KLSAgICAgICAgICAgICAgICBSZW5kZXJFbGVtZW50KiBvID0gcm9vdFJl
bmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFICYmIGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFnKSA/IGJvZHktPnJlbmRlcmVyKCkgOiBy
b290UmVuZGVyZXI7CisgICAgICAgICAgICAgICAgUmVuZGVyRWxlbWVudCogbyA9IHJvb3RSZW5k
ZXJlci0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBpczxIVE1MSHRtbEVsZW1l
bnQ+KCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkpID8gYm9keS0+cmVuZGVyZXIoKSA6IHJv
b3RSZW5kZXJlcjsKICAgICAgICAgICAgICAgICBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChvLCBo
TW9kZSwgdk1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKHJvb3RSZW5k
ZXJlcikKQEAgLTEyMjksMTEgKzEyMjgsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29s
IGFsbG93U3VidHJlZSkKICAgICAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZVNjaGVk
dWxpbmdFbmFibGVkKG1fbGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQsIGZhbHNlKTsKIAogICAgICAg
ICBpZiAoIW1fbGF5b3V0Um9vdCkgewotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBk
b2N1bWVudC5ib2R5T3JGcmFtZXNldCgpOworICAgICAgICAgICAgYXV0byogYm9keSA9IGRvY3Vt
ZW50LmJvZHlPckZyYW1lc2V0KCk7CiAgICAgICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoZnJhbWVzZXRU
YWcpICYmICFmcmFtZUZsYXR0ZW5pbmdFbmFibGVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmJvZHkpICYmICFmcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgYm9keS0+cmVuZGVyZXIoKS0+c2V0Q2hpbGROZWVk
c0xheW91dCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keS0+aGFzVGFnTmFtZShi
b2R5VGFnKSkgeworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXM8SFRNTEJvZHlFbGVtZW50
PigqYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2ZpcnN0TGF5b3V0ICYmIG1f
c2l6ZS5oZWlnaHQoKSAhPSBsYXlvdXRIZWlnaHQoKSAmJiBib2R5LT5yZW5kZXJlcigpLT5lbmNs
b3NpbmdCb3goKS5zdHJldGNoZXNUb1ZpZXdwb3J0KCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBib2R5LT5yZW5kZXJlcigpLT5zZXRDaGlsZE5lZWRzTGF5b3V0KCk7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtMTI4Myw4ICsxMjgyLDkgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFs
bG93U3VidHJlZSkKICAgICAgICAgICAgIGlmIChvbGRTaXplICE9IG1fc2l6ZSkgewogICAgICAg
ICAgICAgICAgIG1fbmVlZHNGdWxsUmVwYWludCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2ZpcnN0TGF5b3V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlckJveCogcm9vdFJl
bmRlcmVyID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQoKS0+cmVuZGVyQm94KCkgOiAwOwotICAgICAgICAgICAgICAgICAgICBSZW5kZXJCb3gq
IGJvZHlSZW5kZXJlciA9IHJvb3RSZW5kZXJlciAmJiBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgp
ID8gZG9jdW1lbnQuYm9keU9yRnJhbWVzZXQoKS0+cmVuZGVyQm94KCkgOiAwOworICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJCb3gqIHJvb3RSZW5kZXJlciA9IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCgpID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlckJveCgpIDogbnVsbHB0
cjsKKyAgICAgICAgICAgICAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1l
c2V0KCk7CisgICAgICAgICAgICAgICAgICAgIFJlbmRlckJveCogYm9keVJlbmRlcmVyID0gcm9v
dFJlbmRlcmVyICYmIGJvZHkgPyBib2R5LT5yZW5kZXJCb3goKSA6IG51bGxwdHI7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChib2R5UmVuZGVyZXIgJiYgYm9keVJlbmRlcmVyLT5zdHJldGNoZXNU
b1ZpZXdwb3J0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5UmVuZGVyZXItPnNldENo
aWxkTmVlZHNMYXlvdXQoKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocm9vdFJlbmRl
cmVyICYmIHJvb3RSZW5kZXJlci0+c3RyZXRjaGVzVG9WaWV3cG9ydCgpKQpAQCAtMzUxNCwxNCAr
MzUxNCwxNCBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlQW5ub3RhdGVkUmVnaW9ucygpCiAKIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIoKQogewotICAgIFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBjb3JuZXJTdHlsZTsKICAgICBJbnRSZWN0IGNvcm5lclJl
Y3QgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgCiAgICAgaWYgKCFjb3JuZXJSZWN0LmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBUcnkgdGhlIDxib2R5PiBlbGVtZW50IGZpcnN0IGFzIGEgc2Ny
b2xsIGNvcm5lciBzb3VyY2UuCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZSgpLmRvY3Vt
ZW50KCk7Ci0gICAgICAgIEVsZW1lbnQqIGJvZHkgPSBkb2MgPyBkb2MtPmJvZHlPckZyYW1lc2V0
KCkgOiAwOworICAgICAgICBFbGVtZW50KiBib2R5ID0gZG9jID8gZG9jLT5ib2R5T3JGcmFtZXNl
dCgpIDogbnVsbHB0cjsKICAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+cmVuZGVyZXIoKSkgewog
ICAgICAgICAgICAgcmVuZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpOwogICAgICAgICAgICAgY29y
bmVyU3R5bGUgPSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJl
cXVlc3QoU0NST0xMQkFSX0NPUk5FUiksICZyZW5kZXJlci0+c3R5bGUoKSk7CkBAIC0zNTI5LDcg
KzM1MjksNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKICAgICAgICAg
CiAgICAgICAgIGlmICghY29ybmVyU3R5bGUpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSA8Ym9k
eT4gZGlkbid0IGhhdmUgYSBjdXN0b20gc3R5bGUsIHRoZW4gdGhlIHJvb3QgZWxlbWVudCBtaWdo
dC4KLSAgICAgICAgICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2MgPyBkb2MtPmRvY3VtZW50
RWxlbWVudCgpIDogMDsKKyAgICAgICAgICAgIEVsZW1lbnQqIGRvY0VsZW1lbnQgPSBkb2MgPyBk
b2MtPmRvY3VtZW50RWxlbWVudCgpIDogbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChkb2NFbGVt
ZW50ICYmIGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICByZW5kZXJl
ciA9IGRvY0VsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgY29ybmVyU3R5bGUg
PSByZW5kZXJlci0+Z2V0VW5jYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9TdHlsZVJlcXVlc3QoU0NS
T0xMQkFSX0NPUk5FUiksICZyZW5kZXJlci0+c3R5bGUoKSk7CkBAIC0zNTk1LDggKzM1OTUsOCBA
QCBDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAgICBp
ZiAoIWZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAgICBF
bGVtZW50KiBodG1sRWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50
KCk7Ci0gICAgRWxlbWVudCogYm9keUVsZW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCktPmJvZHlP
ckZyYW1lc2V0KCk7CisgICAgYXV0byogaHRtbEVsZW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpOworICAgIGF1dG8qIGJvZHlFbGVtZW50ID0gZnJhbWUoKS5kb2N1
bWVudCgpLT5ib2R5T3JGcmFtZXNldCgpOwogCiAgICAgLy8gU3RhcnQgd2l0aCBpbnZhbGlkIGNv
bG9ycy4KICAgICBDb2xvciBodG1sQmFja2dyb3VuZENvbG9yOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAppbmRleCBkYjYyNTAxMzJiOGU1NTUyN2NkNTI2MjIxZWI3YzhhZDY4
YWM3ODk3Li4zZjUwN2UwN2RiNDM4MmQzNjNhY2ZmN2Q3YmMyZGQwMDg3MTkxYzUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJ1
dHRvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZU93bmVyRWxlbWVudC5oIgpAQCAtNDY3LDggKzQ2OCw4IEBAIHZvaWQgUmVuZGVyQm94Ojp1
cGRhdGVGcm9tU3R5bGUoKQogICAgICAgICAgICAgLy8gKDEpIFRoZSByb290IGVsZW1lbnQgaXMg
PGh0bWw+LgogICAgICAgICAgICAgLy8gKDIpIFdlIGFyZSB0aGUgcHJpbWFyeSA8Ym9keT4gKGNh
biBiZSBjaGVja2VkIGJ5IGxvb2tpbmcgYXQgZG9jdW1lbnQuYm9keSkuCiAgICAgICAgICAgICAv
LyAoMykgVGhlIHJvb3QgZWxlbWVudCBoYXMgdmlzaWJsZSBvdmVyZmxvdy4KLSAgICAgICAgICAg
IGlmIChkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGh0bWxUYWcpCi0g
ICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpID09IGVsZW1lbnQo
KQorICAgICAgICAgICAgaWYgKGlzPEhUTUxIdG1sRWxlbWVudD4oKmRvY3VtZW50KCkuZG9jdW1l
bnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5ib2R5KCkgPT0gZWxl
bWVudCgpCiAgICAgICAgICAgICAgICAgJiYgZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSkgewogICAgICAgICAg
ICAgICAgIGJveEhhc092ZXJmbG93Q2xpcCA9IGZhbHNlOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXgg
OWQ1ZGFlYzE2OWI4OWM5MTBiZjIwMWY0ZjgzYzgzMjQxNTIxNGFjNi4uNTI3NWEyNzExNzEwYTg5
M2E0MTNiMDc2MWQxNTgxMzdhMTQwNWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC03OTAsMTAgKzc5MCw5IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGNyYXdsIGFyb3Vu
ZCBhIHJlbmRlciB0cmVlIHdpdGggcG90ZW50aWFsIDpiZWZvcmUvOmFmdGVyIGNvbnRlbnQgYW5k
CiAgICAgICAgICAgICAgICAgICAgIC8vIGFub255bW91cyBibG9ja3MgY3JlYXRlZCBieSBpbmxp
bmUgPGJvZHk+IHRhZ3MgZXRjLiAgV2UgY2FuIGxvY2F0ZSB0aGUgPGJvZHk+CiAgICAgICAgICAg
ICAgICAgICAgIC8vIHJlbmRlciBvYmplY3QgdmVyeSBlYXNpbHkgdmlhIHRoZSBET00uCi0gICAg
ICAgICAgICAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0gZG9jdW1lbnQoKS5ib2R5T3JGcmFt
ZXNldCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYm9keSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IHNjcm9sbCBhIGZyYW1lc2V0IGRv
Y3VtZW50IGFueXdheS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlzT3BhcXVlUm9vdCA9IGJv
ZHktPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpOworICAgICAgICAgICAgICAgICAgICAgICAgaXNP
cGFxdWVSb290ID0gaXM8SFRNTEZyYW1lU2V0RWxlbWVudD4oKmJvZHkpOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU1ZHIGRvY3VtZW50
cyBhbmQgWE1MIGRvY3VtZW50cyB3aXRoIFNWRyByb290IG5vZGVzIGFyZSB0cmFuc3BhcmVudC4K
ICAgICAgICAgICAgICAgICAgICAgICAgIGlzT3BhcXVlUm9vdCA9ICFkb2N1bWVudCgpLmhhc1NW
R1Jvb3ROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAK
aW5kZXggMGE3NTUyMjQwNDA5YjAzZDBlZjAxY2ViZmEwMGNjNDE1NzcwNmI0OS4uNjg2ZjZmZmE1
Njg3ZjQwOWRhZjA4NDM3YTlmYjk2ZjU4NzlhMTY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTEyMCw3ICsxMTIwLDcgQEAgUmVuZGVyRWxlbWVu
dCYgUmVuZGVyRWxlbWVudDo6cmVuZGVyZXJGb3JSb290QmFja2dyb3VuZCgpCiAgICAgICAgIC8v
IHRvIGNyYXdsIGFyb3VuZCBhIHJlbmRlciB0cmVlIHdpdGggcG90ZW50aWFsIDpiZWZvcmUvOmFm
dGVyIGNvbnRlbnQgYW5kCiAgICAgICAgIC8vIGFub255bW91cyBibG9ja3MgY3JlYXRlZCBieSBp
bmxpbmUgPGJvZHk+IHRhZ3MgZXRjLiBXZSBjYW4gbG9jYXRlIHRoZSA8Ym9keT4KICAgICAgICAg
Ly8gcmVuZGVyIG9iamVjdCB2ZXJ5IGVhc2lseSB2aWEgdGhlIERPTS4KLSAgICAgICAgaWYgKGF1
dG8qIGJvZHkgPSBjaGlsZHJlbk9mVHlwZTxIVE1MQm9keUVsZW1lbnQ+KCplbGVtZW50KCkpLmZp
cnN0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGJvZHkgPSBkb2N1bWVudCgpLmJvZHkoKSkgewog
ICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gYm9keS0+cmVuZGVyZXIoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gKnJlbmRlcmVyOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDA1ZGVjOGFhMzViODE4
YjllNzIyMTI2NDUwMmUzMTg3MTE1Y2MwYmMuLjgwNTJmMTYzN2FlZWIyOTBmOTBiYjI0ZjhlZDI4
NTc1MDE0N2Q1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgor
I2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFF
bGVtZW50LmgiCkBAIC0xNzg5LDcgKzE3OTAsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6
aXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKCkgY29uc3QKIAogICAgIGlmIChyZW5k
ZXJlcigpLmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgIC8vIExvb2sgdG8gc2VlIGlmIHRoZSBy
b290IG9iamVjdCBoYXMgYSBub24tc2ltcGxlIGJhY2tncm91bmQKLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiByb290T2JqZWN0ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgp
ID8gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpIDog
MDsKKyAgICAgICAgYXV0byogcm9vdE9iamVjdCA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKSA/IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+
cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICghcm9vdE9iamVjdCkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC0xNzk5LDEyICsxODAwLDE0IEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBj
b25zdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgLy8gTm93
IGxvb2sgYXQgdGhlIGJvZHkncyByZW5kZXJlci4KLSAgICAgICAgSFRNTEVsZW1lbnQqIGJvZHkg
PSByZW5kZXJlcigpLmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKTsKLSAgICAgICAgUmVuZGVy
T2JqZWN0KiBib2R5T2JqZWN0ID0gKGJvZHkgJiYgYm9keS0+aGFzVGFnTmFtZShib2R5VGFnKSkg
PyBib2R5LT5yZW5kZXJlcigpIDogMDsKLSAgICAgICAgaWYgKCFib2R5T2JqZWN0KQorICAgICAg
ICBhdXRvKiBib2R5ID0gcmVuZGVyZXIoKS5kb2N1bWVudCgpLmJvZHkoKTsKKyAgICAgICAgaWYg
KCFib2R5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvKiBib2R5UmVu
ZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIWJvZHlSZW5kZXJlcikKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmIChoYXNCb3hEZWNv
cmF0aW9uc09yQmFja2dyb3VuZEltYWdlKGJvZHlPYmplY3QtPnN0eWxlKCkpKQorICAgICAgICBp
ZiAoaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmRJbWFnZShib2R5UmVuZGVyZXItPnN0eWxl
KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwNDU0MzNjMjRhNDE4NWUyMDViNzM0ZTll
MDhiM2Y4MjQxZDU5ZjA0Li5lYjcyNmQzNTE4YjZiMTQ1NDNmMGUxNDg5NTU5N2I4MGVkZDMyM2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjI5NSw4
ICsyMjk1LDEwIEBAIFJlbmRlckJveE1vZGVsT2JqZWN0KiBSZW5kZXJPYmplY3Q6Om9mZnNldFBh
cmVudCgpIGNvbnN0CiAgICAgfQogICAgIAogICAgIC8vIENTUyByZWdpb25zIHNwZWNpZmljYXRp
b24gc2F5cyB0aGF0IHJlZ2lvbiBmbG93cyBzaG91bGQgcmV0dXJuIHRoZSBib2R5IGVsZW1lbnQg
YXMgdGhlaXIgb2Zmc2V0UGFyZW50LgotICAgIGlmIChpczxSZW5kZXJOYW1lZEZsb3dUaHJlYWQ+
KGN1cnJlbnQpKQotICAgICAgICBjdXJyZW50ID0gZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgp
ID8gZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpLT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAg
ICBpZiAoaXM8UmVuZGVyTmFtZWRGbG93VGhyZWFkPihjdXJyZW50KSkgeworICAgICAgICBhdXRv
KiBib2R5ID0gZG9jdW1lbnQoKS5ib2R5T3JGcmFtZXNldCgpOworICAgICAgICBjdXJyZW50ID0g
Ym9keSA/IGJvZHktPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgIH0KICAgICAKICAgICByZXR1
cm4gaXM8UmVuZGVyQm94TW9kZWxPYmplY3Q+KGN1cnJlbnQpID8gZG93bmNhc3Q8UmVuZGVyQm94
TW9kZWxPYmplY3Q+KGN1cnJlbnQpIDogbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA3NGY5ZmU4NmJlYWIwNTRlYmM1MjVl
NTEwODQ0YWUxNDVhYjAzN2Q3Li45ODdkOTRjYjEyMDY0OGRhYzVmZDk4YmM5MjIyMWM4YTg5ZmMw
ZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3Bw
CkBAIC04MTAsNyArODEwLDcgQEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9k
ZSkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAotICAgIEVsZW1lbnQqIGJvZHkgPSBu
b2RlLT5kb2N1bWVudCgpLmJvZHlPckZyYW1lc2V0KCk7CisgICAgYXV0byogYm9keSA9IG5vZGUt
PmRvY3VtZW50KCkuYm9keU9yRnJhbWVzZXQoKTsKICAgICBOb2RlKiBwYXJlbnQ7CiAgICAgZm9y
IChOb2RlKiBuID0gbm9kZTsgbjsgbiA9IHBhcmVudCkgewogICAgICAgICBwYXJlbnQgPSBuLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXggYTM3MmQyY2Q2MGQzOTMyYTgyMWYwMDI3Nzc4
MWJmNzRiNjk5ZDAwZS4uYTAyYzQ5ZWNmM2M5NjFmNmU4NDM0YTE0NTFkOTY5ZjA3MGIyZWQyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNw
cApAQCAtNjksMTIgKzY5LDEzIEBAIFJlZjxSZW5kZXJTdHlsZT4gcmVzb2x2ZUZvckRvY3VtZW50
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICNlbmRpZgogCiAgICAgRWxlbWVudCogZG9jRWxl
bWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwotICAgIFJlbmRlck9iamVjdCogZG9j
RWxlbWVudFJlbmRlcmVyID0gZG9jRWxlbWVudCA/IGRvY0VsZW1lbnQtPnJlbmRlcmVyKCkgOiAw
OworICAgIFJlbmRlck9iamVjdCogZG9jRWxlbWVudFJlbmRlcmVyID0gZG9jRWxlbWVudCA/IGRv
Y0VsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIGlmIChkb2NFbGVtZW50UmVuZGVy
ZXIpIHsKICAgICAgICAgLy8gVXNlIHRoZSBkaXJlY3Rpb24gYW5kIHdyaXRpbmctbW9kZSBvZiB0
aGUgYm9keSB0byBzZXQgdGhlCiAgICAgICAgIC8vIHZpZXdwb3J0J3MgZGlyZWN0aW9uIGFuZCB3
cml0aW5nLW1vZGUgdW5sZXNzIHRoZSBwcm9wZXJ0eSBpcyBzZXQgb24gdGhlIGRvY3VtZW50IGVs
ZW1lbnQuCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGJvZHksIHRoZW4gdXNlIHRoZSBkb2N1
bWVudCBlbGVtZW50LgotICAgICAgICBSZW5kZXJPYmplY3QqIGJvZHlSZW5kZXJlciA9IGRvY3Vt
ZW50LmJvZHlPckZyYW1lc2V0KCkgPyBkb2N1bWVudC5ib2R5T3JGcmFtZXNldCgpLT5yZW5kZXJl
cigpIDogMDsKKyAgICAgICAgYXV0byogYm9keSA9IGRvY3VtZW50LmJvZHlPckZyYW1lc2V0KCk7
CisgICAgICAgIFJlbmRlck9iamVjdCogYm9keVJlbmRlcmVyID0gYm9keSA/IGJvZHktPnJlbmRl
cmVyKCkgOiBudWxscHRyOwogICAgICAgICBpZiAoYm9keVJlbmRlcmVyICYmICFkb2N1bWVudC53
cml0aW5nTW9kZVNldE9uRG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudFN0
eWxlLmdldCgpLnNldFdyaXRpbmdNb2RlKGJvZHlSZW5kZXJlci0+c3R5bGUoKS53cml0aW5nTW9k
ZSgpKTsKICAgICAgICAgZWxzZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>