<?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>136826</bug_id>
          
          <creation_ts>2014-09-15 09:47:19 -0700</creation_ts>
          <short_desc>Rename Node::nodeIndex() to computeNodeIndex() for clarity</short_desc>
          <delta_ts>2014-09-16 11:29:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035266</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 09:47:19 -0700</bug_when>
    <thetext>Rename Node::nodeIndex() to computeNodeIndex() to make it clearer that the node index is actually computed and thus calling this method is potentially expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035270</commentid>
    <comment_count>1</comment_count>
      <attachid>238132</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-15 10:52:06 -0700</bug_when>
    <thetext>Created attachment 238132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035391</commentid>
    <comment_count>2</comment_count>
      <attachid>238132</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-09-16 00:35:37 -0700</bug_when>
    <thetext>Comment on attachment 238132
Patch

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

I did not check the surrounding code, no need to change the type when the fix is non obvious.

&gt; Source/WebCore/dom/Range.cpp:603
&gt; +    int nodeIndex = refNode-&gt;computeNodeIndex();

int -&gt; unsigned?

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1294
&gt; +        int startOffsetAdjustment = startChild-&gt;computeNodeIndex();

ditto?

&gt; Source/WebCore/editing/ApplyStyleCommand.cpp:1328
&gt; +        int endOffset = nextChild ? nextChild-&gt;computeNodeIndex() : nextElement-&gt;countChildNodes();

ditto?

&gt; Source/WebCore/editing/DeleteSelectionCommand.cpp:563
&gt; +                            offset = n-&gt;computeNodeIndex() + 1;

ditto?

&gt; Source/WebCore/editing/Editor.cpp:166
&gt; +        startOffset = element-&gt;computeNodeIndex();

ditto?

&gt; Source/WebCore/editing/Editor.cpp:171
&gt; +        endOffset = element-&gt;computeNodeIndex();

ditto?

&gt; Source/WebCore/editing/TextIterator.cpp:1098
&gt; +        int index = m_positionOffsetBaseNode-&gt;computeNodeIndex();

ditto?

&gt; Source/WebCore/html/HTMLTextFormControlElement.cpp:427
&gt; +        offsetInContainer = node-&gt;computeNodeIndex() + offset;

ditto?

&gt; Source/WebCore/page/DOMSelection.cpp:367
&gt; +        int offset = shadowAncestor-&gt;computeNodeIndex();

ditto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035479</commentid>
    <comment_count>3</comment_count>
      <attachid>238183</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-16 09:02:55 -0700</bug_when>
    <thetext>Created attachment 238183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035515</commentid>
    <comment_count>4</comment_count>
      <attachid>238183</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-16 11:29:04 -0700</bug_when>
    <thetext>Comment on attachment 238183
Patch

Clearing flags on attachment: 238183

Committed r173665: &lt;http://trac.webkit.org/changeset/173665&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035516</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-16 11:29:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238132</attachid>
            <date>2014-09-15 10:52:06 -0700</date>
            <delta_ts>2014-09-16 09:02:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136826-20140915105203.patch</filename>
            <type>text/plain</type>
            <size>29131</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTI1MjE4OWU3YmRlNWVm
Y2RjMWQzZGE4YWY3MzE5OTBlN2IzMzYyZi4uMTAyMTMyM2M1OWU5OWNlZGU2NmM2MDlmZGE5MWQw
YzIwYjIzMDkxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgxIEBACiAyMDE0LTA5LTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVuYW1lIE5vZGU6Om5vZGVJ
bmRleCgpIHRvIGNvbXB1dGVOb2RlSW5kZXgoKSBmb3IgY2xhcml0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODI2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIE5vZGU6Om5vZGVJbmRleCgp
IHRvIGNvbXB1dGVOb2RlSW5kZXgoKSB0byBtYWtlIGl0IGNsZWFyIHRoYXQKKyAgICAgICAgaW5k
ZXggaXMgYmVpbmcgY29tcHV0ZWQgYW5kIHRoYXQgY2FsbGluZyB0aGlzIG1ldGhvZCBpcyBwb3Rl
bnRpYWxseQorICAgICAgICBleHBlbnNpdmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBi
ZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBX
ZWJDb3JlLm9yZGVyOgorICAgICAgICBSZW5hbWUgZXhwb3J0ZWQgc3ltYm9sIGZvciBOb2RlOjpu
b2RlSW5kZXgoKSBhcyB3ZWxsLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYXJldFJhbmdlRnJvbVBvaW50KToKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjb21wdXRlTm9kZUluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5vZGVJbmRleCk6IERlbGV0ZWQuCisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKiBkb20vTm9kZVdpdGhJbmRleC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVdpdGhJbmRleDo6aW5kZXgpOgorICAgICAgICBDbGVhbiB1cCBpbXBsZW1lbnRh
dGlvbiB0byByZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSBOb2RlIHZhcmlhYmxlIGFuZAorICAgICAg
ICB0byBmb2xsb3cgY29kaW5nIHN0eWxlICh2YXJpYWJsZSBuYW1pbmcsIHNwYWNpbmcsIHN0YXIg
cGxhY2VtZW50KS4KKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQb3NpdGlvbjo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246
Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnVwc3RyZWFtKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjpkb3duc3RyZWFtKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBvc2l0aW9uSW5QYXJlbnRBZnRlck5vZGUpOgorICAgICAgICAqIGRvbS9S
YW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6Y29tcGFyZU5vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFuZ2U6OmludGVyc2VjdHNOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
bmdlOjpwcm9jZXNzQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6Omluc2VydE5v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNldFN0YXJ0QWZ0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmFuZ2U6OnNldEVuZEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6
c2V0RW5kQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnNldFN0YXJ0QmVmb3JlKToK
KyAgICAgICAgKiBkb20vUmFuZ2VCb3VuZGFyeVBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
YW5nZUJvdW5kYXJ5UG9pbnQ6OmVuc3VyZU9mZnNldElzVmFsaWQpOgorICAgICAgICAqIGVkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNv
bW1hbmQ6Om1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VFbmRXaXRoTmV4dElmSWRlbnRpY2FsKToKKyAg
ICAgICAgKiBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphdm9p
ZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKToKKyAgICAgICAgKiBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpzZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxlY3RlZCk6CisgICAgICAgICog
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVS
ZXBsYWNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxpZmllZEJhY2t3YXJkc1Rl
eHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlUG9zaXRpb25Gb3JOb2RlUmVtb3Zh
bCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRDb250YWluZXJBbmRPZmZzZXRGb3JSYW5nZSk6CisgICAgICAgICog
cGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpn
ZXRSYW5nZUF0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6Y29udGFpbnNOb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6c2hhZG93QWRqdXN0ZWRPZmZzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2Rl
UG9zaXRpb24pOgorCisyMDE0LTA5LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKICAgICAgICAgQXZvaWQgcmVkdW5kYW50IGlzRWxlbWVudE5vZGUoKSBjaGVja3MgaW4gVHJh
dmVyc2FsPEhUTUwqRWxlbWVudD4gLyBUcmF2ZXJzYWw8U1ZHKkVsZW1lbnQ+CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY3MTkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCA5NGQ5YjUzOWVkNDFjZmRiNTE3NzE0ZDE0MDhiMDJjNDQ1YzYzYWIyLi4x
YWE4NmNmMjkyZTcwNjZlNzgyODk4MzVhZTkyYmMxZGM1ZjhiZmJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTg4Nyw4ICsxODg3LDggQEAgX19aTks3V2ViQ29yZTRGb250ZXFFUktTMF8KIF9f
Wk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgogX19aTks3V2ViQ29yZTROb2RlMTNvd25l
ckRvY3VtZW50RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNjZW5kYW50T2ZFUEtTMF8KK19f
Wk5LN1dlYkNvcmU0Tm9kZTE2Y29tcHV0ZU5vZGVJbmRleEV2CiBfX1pOSzdXZWJDb3JlNE5vZGUy
OGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGVFdgotX19aTks3V2ViQ29yZTROb2RlOW5vZGVJ
bmRleEV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5dGV4dFJlY3RzRVJOM1dURjZWZWN0b3JJTlNfN0lu
dFJlY3RFTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTks3V2ViQ29yZTRQYWdlMTBw
bHVnaW5EYXRhRXYKIF9fWk5LN1dlYkNvcmU0UGFnZTE0cmVuZGVyVHJlZVNpemVFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUub3JkZXIKaW5kZXggMGIxNzc5NjAyMTZhMmUzZDRlODFkMGNiNTFjZTVkNzY4OGI0Mjg0OC4u
ZDFiMTMyZWU3YTFlYzMxYzQ5YzZlZGM2NzA1MDQ0OTJlNmY1NzI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCkBAIC04MTMyLDcgKzgxMzIsNyBAQCBfX1pOM1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTVS
YW5nZUVTM19OU18xN0lkZW50aXR5RXh0cmFjdG9yRU5TXzdQdHJIYXNoSVMzX0VFTgogX19aTjNX
VEY5SGFzaFRhYmxlSVBON1dlYkNvcmU1UmFuZ2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvckVO
U183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM4X0U2cmVoYXNoRWkKIF9fWk43
V2ViQ29yZTVSYW5nZTEwc2VsZWN0Tm9kZUVQTlNfNE5vZGVFUmkKIF9fWk43V2ViQ29yZTVSYW5n
ZTE0c2V0U3RhcnRCZWZvcmVFUE5TXzROb2RlRVJpCi1fX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUlu
ZGV4RXYKK19fWk5LN1dlYkNvcmU0Tm9kZTE2Y29tcHV0ZU5vZGVJbmRleEV2CiBfX1pON1dlYkNv
cmU1UmFuZ2U4c2V0U3RhcnRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUVpUmkKIF9fWk5L
N1dlYkNvcmUxM0NvbnRhaW5lck5vZGU5Y2hpbGROb2RlRWoKIF9fWk43V2ViQ29yZUwzMGNoZWNr
Rm9yRGlmZmVyZW50Um9vdENvbnRhaW5lckVSS05TXzE4UmFuZ2VCb3VuZGFyeVBvaW50RVMyXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDQ1MTYwNmRjZDI0YWI0MGVhNzE1OWRmNTQyMmM0
YmYwNWY5MGEzMy4uY2UyNTdhYjdmZWZiNTdjOTRlMmYxOWEzYzgxNDQxM2UxZDg2NjMzMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBQYXNzUmVmUHRyPFJh
bmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpCiAKICAgICBO
b2RlKiBzaGFkb3dBbmNlc3Rvck5vZGUgPSBhbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOwogICAg
IGlmIChzaGFkb3dBbmNlc3Rvck5vZGUgIT0gbm9kZSkgewotICAgICAgICB1bnNpZ25lZCBvZmZz
ZXQgPSBzaGFkb3dBbmNlc3Rvck5vZGUtPm5vZGVJbmRleCgpOworICAgICAgICB1bnNpZ25lZCBv
ZmZzZXQgPSBzaGFkb3dBbmNlc3Rvck5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICAgICAg
Q29udGFpbmVyTm9kZSogY29udGFpbmVyID0gc2hhZG93QW5jZXN0b3JOb2RlLT5wYXJlbnROb2Rl
KCk7CiAgICAgICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKCp0aGlzLCBjb250YWluZXIsIG9mZnNl
dCwgY29udGFpbmVyLCBvZmZzZXQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2ZTA4Zjcz
NmI2YjI0MzI5ZGNhNmNlMmM2OTkxM2Q3NmMwZDJlYjQ1Li4zZjdlOWJjZTAwN2IzMmFiZDBjYTk3
MGQzYmYzNDVhMDVjZjZiNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC02NzcsMTIgKzY3NywxMSBA
QCB2b2lkIE5vZGU6OnNldE5lZWRzU3R5bGVSZWNhbGMoU3R5bGVDaGFuZ2VUeXBlIGNoYW5nZVR5
cGUpCiAgICAgICAgIG1hcmtBbmNlc3RvcnNXaXRoQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCp0aGlz
KTsKIH0KIAotdW5zaWduZWQgTm9kZTo6bm9kZUluZGV4KCkgY29uc3QKK3Vuc2lnbmVkIE5vZGU6
OmNvbXB1dGVOb2RlSW5kZXgoKSBjb25zdAogewotICAgIE5vZGUgKl90ZW1wTm9kZSA9IHByZXZp
b3VzU2libGluZygpOwotICAgIHVuc2lnbmVkIGNvdW50PTA7Ci0gICAgZm9yICggY291bnQ9MDsg
X3RlbXBOb2RlOyBjb3VudCsrICkKLSAgICAgICAgX3RlbXBOb2RlID0gX3RlbXBOb2RlLT5wcmV2
aW91c1NpYmxpbmcoKTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChOb2RlKiBz
aWJsaW5nID0gcHJldmlvdXNTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5w
cmV2aW91c1NpYmxpbmcoKSkKKyAgICAgICAgKytjb3VudDsKICAgICByZXR1cm4gY291bnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oCmluZGV4IGY0NzdmZjNhMGEyZDgxODJmNDEwYjU1NmJkZmY3YjYzOTQ1Njcz
NTUuLjUxYjZmY2VlOTdkMjFmZDYzZWFkMGQyOWIxY2U0M2Q4MmM2OWVhZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aApAQCAtMzgzLDcgKzM4Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBMYXlvdXRS
ZWN0IHJlbmRlclJlY3QoYm9vbCogaXNSZXBsYWNlZCk7CiAgICAgSW50UmVjdCBwaXhlbFNuYXBw
ZWRSZW5kZXJSZWN0KGJvb2wqIGlzUmVwbGFjZWQpIHsgcmV0dXJuIHNuYXBwZWRJbnRSZWN0KHJl
bmRlclJlY3QoaXNSZXBsYWNlZCkpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBu
b2RlSW5kZXgoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjb21wdXRlTm9k
ZUluZGV4KCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBET00gb3duZXJEb2N1bWVudCBh
dHRyaWJ1dGUuIFRoaXMgbWV0aG9kIG5ldmVyIHJldHVybnMgbnVsbCwgZXhjZXB0IGluIHRoZSBj
YXNlCiAgICAgLy8gb2YgYSBEb2N1bWVudCBub2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVXaXRoSW5kZXguaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlV2l0aEluZGV4
LmgKaW5kZXggMDc3YjY0MDQ3NzUzY2E3ZjJhNTBkYzlhMWQ2MmFlNjdlOTJjN2MyYy4uNGRlODg5
MTdlZjdjOTk1Njk2ZTgyODZhOGMwZjM3MTZiYjFiZWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVXaXRoSW5kZXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdp
dGhJbmRleC5oCkBAIC00NiwxMCArNDYsMTAgQEAgcHVibGljOgogICAgIGludCBpbmRleCgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAoIW1faGF2ZUluZGV4KSB7Ci0gICAgICAgICAgICBtX2lu
ZGV4ID0gbV9ub2RlLT5ub2RlSW5kZXgoKTsKKyAgICAgICAgICAgIG1faW5kZXggPSBtX25vZGUt
PmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICAgICAgICAgIG1faGF2ZUluZGV4ID0gdHJ1ZTsKICAg
ICAgICAgfQotICAgICAgICBBU1NFUlQobV9pbmRleCA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fbm9k
ZS0+bm9kZUluZGV4KCkpKTsKKyAgICAgICAgQVNTRVJUKG1faW5kZXggPT0gc3RhdGljX2Nhc3Q8
aW50PihtX25vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSkpOwogICAgICAgICByZXR1cm4gbV9pbmRl
eDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGYyYzY5MWUzYjBiYzUwYTM3
MDlmNTEyZTNkMmY3MzExZjhiMjcwOWYuLjcyY2Q2ZDU2YmMwNzI2YzI2MmViYjk2NDkxMWM2ZjQ2
ZmE5ZWNiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcApAQCAtMTk2LDkgKzE5Niw5IEBAIGlu
dCBQb3NpdGlvbjo6Y29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpIGNvbnN0CiAgICAgY2Fz
ZSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I6CiAgICAgICAgIHJldHVybiBtaW5PZmZzZXRGb3JO
b2RlKG1fYW5jaG9yTm9kZS5nZXQoKSwgbV9vZmZzZXQpOwogICAgIGNhc2UgUG9zaXRpb25Jc0Jl
Zm9yZUFuY2hvcjoKLSAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS0+bm9kZUluZGV4KCk7Cisg
ICAgICAgIHJldHVybiBtX2FuY2hvck5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICBjYXNl
IFBvc2l0aW9uSXNBZnRlckFuY2hvcjoKLSAgICAgICAgcmV0dXJuIG1fYW5jaG9yTm9kZS0+bm9k
ZUluZGV4KCkgKyAxOworICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLT5jb21wdXRlTm9kZUlu
ZGV4KCkgKyAxOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
MDsKQEAgLTMzMCw3ICszMzAsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6cHJldmlvdXMoUG9zaXRp
b25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuICp0aGlzOwogCi0gICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihwYXJl
bnQsIG4tPm5vZGVJbmRleCgpKTsKKyAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0
aW9uKHBhcmVudCwgbi0+Y29tcHV0ZU5vZGVJbmRleCgpKTsKIH0KIAogUG9zaXRpb24gUG9zaXRp
b246Om5leHQoUG9zaXRpb25Nb3ZlVHlwZSBtb3ZlVHlwZSkgY29uc3QKQEAgLTM2Miw3ICszNjIs
NyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBj
b25zdAogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICByZXR1
cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBhcmVudCwgbi0+bm9kZUluZGV4KCkgKyAx
KTsKKyAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBhcmVudCwgbi0+Y29t
cHV0ZU5vZGVJbmRleCgpICsgMSk7CiB9CiAKIGludCBQb3NpdGlvbjo6dW5jaGVja2VkUHJldmlv
dXNPZmZzZXQoY29uc3QgTm9kZSogbiwgaW50IGN1cnJlbnQpCkBAIC02MTQsNyArNjE0LDcgQEAg
UG9zaXRpb24gUG9zaXRpb246OnVwc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBy
dWxlKSBjb25zdAogICAgICAgICAgICAgbGFzdFZpc2libGUgPSBjdXJyZW50UG9zOwogICAgICAg
ICAKICAgICAgICAgLy8gRG9uJ3QgbW92ZSBwYXN0IGEgcG9zaXRpb24gdGhhdCBpcyB2aXN1YWxs
eSBkaXN0aW5jdC4gIFdlIGNvdWxkIHJlbHkgb24gY29kZSBhYm92ZSB0byB0ZXJtaW5hdGUgYW5k
IAotICAgICAgICAvLyByZXR1cm4gbGFzdFZpc2libGUgb24gdGhlIG5leHQgaXRlcmF0aW9uLCBi
dXQgd2UgdGVybWluYXRlIGVhcmx5IHRvIGF2b2lkIGRvaW5nIGEgbm9kZUluZGV4KCkgY2FsbC4K
KyAgICAgICAgLy8gcmV0dXJuIGxhc3RWaXNpYmxlIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiwgYnV0
IHdlIHRlcm1pbmF0ZSBlYXJseSB0byBhdm9pZCBkb2luZyBhIGNvbXB1dGVOb2RlSW5kZXgoKSBj
YWxsLgogICAgICAgICBpZiAoZW5kc09mTm9kZUFyZVZpc3VhbGx5RGlzdGluY3RQb3NpdGlvbnMo
Y3VycmVudE5vZGUpICYmIGN1cnJlbnRQb3MuYXRTdGFydE9mTm9kZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGxhc3RWaXNpYmxlOwogCkBAIC03MzIsNyArNzMyLDcgQEAgUG9zaXRpb24gUG9zaXRp
b246OmRvd25zdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAg
ICAgICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CiAgICAgICAgIC8vIERvIG5vdCBtb3ZlIHBh
c3QgYSB2aXN1YWxseSBkaXNpbmN0IHBvc2l0aW9uLgogICAgICAgICAvLyBOb3RlOiBUaGUgZmly
c3QgcG9zaXRpb24gYWZ0ZXIgdGhlIGxhc3QgaW4gYSBub2RlIHdob3NlIGVuZHMgYXJlIHZpc3Vh
bGx5IGRpc3RpbmN0Ci0gICAgICAgIC8vIHBvc2l0aW9ucyB3aWxsIGJlIFtib3VuZGFyeS0+cGFy
ZW50Tm9kZSgpLCBvcmlnaW5hbEJsb2NrLT5ub2RlSW5kZXgoKSArIDFdLgorICAgICAgICAvLyBw
b3NpdGlvbnMgd2lsbCBiZSBbYm91bmRhcnktPnBhcmVudE5vZGUoKSwgb3JpZ2luYWxCbG9jay0+
Y29tcHV0ZU5vZGVJbmRleCgpICsgMV0uCiAgICAgICAgIGlmIChib3VuZGFyeSAmJiBib3VuZGFy
eS0+cGFyZW50Tm9kZSgpID09IGN1cnJlbnROb2RlKQogICAgICAgICAgICAgcmV0dXJuIGxhc3RW
aXNpYmxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCmluZGV4IDUxYmY0NzI2MmJiMzk1ZjY1OTUyMWMy
Mjc2N2U2YmIwODRhOTAxYzAuLmFlYzFlYTQzZDE4MjhmMGFmZDJlNDU0ZTQ0YjNmNzQ0NDcyZjQ3
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyKCkgeyBtX2FuY2hvck5vZGUuY2xlYXIoKTsgbV9vZmZzZXQgPSAwOyBtX2FuY2hv
clR5cGUgPSBQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3I7IG1faXNMZWdhY3lFZGl0aW5nUG9zaXRp
b24gPSBmYWxzZTsgfQogCiAgICAgLy8gVGhlc2UgYXJlIGFsd2F5cyBET00gY29tcGxpYW50IHZh
bHVlcy4gIEVkaXRpbmcgcG9zaXRpb25zIGxpa2UgW2ltZywgMF0gKGFrYSBbaW1nLCBiZWZvcmVd
KQotICAgIC8vIHdpbGwgcmV0dXJuIGltZy0+cGFyZW50Tm9kZSgpIGFuZCBpbWctPm5vZGVJbmRl
eCgpIGZyb20gdGhlc2UgZnVuY3Rpb25zLgorICAgIC8vIHdpbGwgcmV0dXJuIGltZy0+cGFyZW50
Tm9kZSgpIGFuZCBpbWctPmNvbXB1dGVOb2RlSW5kZXgoKSBmcm9tIHRoZXNlIGZ1bmN0aW9ucy4K
ICAgICBXRUJDT1JFX0VYUE9SVCBOb2RlKiBjb250YWluZXJOb2RlKCkgY29uc3Q7IC8vIG51bGwg
Zm9yIGEgYmVmb3JlL2FmdGVyIHBvc2l0aW9uIGFuY2hvcmVkIHRvIGEgbm9kZSB3aXRoIG5vIHBh
cmVudAogICAgIFRleHQqIGNvbnRhaW5lclRleHQoKSBjb25zdDsKIApAQCAtMjczLDEzICsyNzMs
MTMgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBQb3NpdGlvbiYgYSwgY29uc3QgUG9z
aXRpb24mIGIpCiBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoY29u
c3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+cGFyZW50Tm9kZSgpKTsKLSAgICBy
ZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5ub2RlSW5kZXgoKSwgUG9z
aXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgcmV0dXJuIFBvc2l0aW9uKG5v
ZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpLCBQb3NpdGlvbjo6UG9z
aXRpb25Jc09mZnNldEluQW5jaG9yKTsKIH0KIAogaW5saW5lIFBvc2l0aW9uIHBvc2l0aW9uSW5Q
YXJlbnRBZnRlck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+cGFy
ZW50Tm9kZSgpKTsKLSAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2Rl
LT5ub2RlSW5kZXgoKSArIDEsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwor
ICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPmNvbXB1dGVOb2Rl
SW5kZXgoKSArIDEsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogfQogCiAv
LyBwb3NpdGlvbkJlZm9yZU5vZGUgYW5kIHBvc2l0aW9uQWZ0ZXJOb2RlIHJldHVybiBuZWlnaGJv
ci1hbmNob3JlZCBwb3NpdGlvbnMsIGNvbnN0cnVjdGlvbiBpcyBPKDEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAppbmRleCBkNjg0ODRmY2YxN2NiODdjNTE0MDljNGNkZTE3MzExYzlhOTgwZDk4Li4zZGU4NzQy
ODY3YmM1ZjY4YWZhZWVmODI5NjkyZTZlNmQ2ZjJhYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAg
LTM5NSw3ICszOTUsNyBAQCBSYW5nZTo6Q29tcGFyZVJlc3VsdHMgUmFuZ2U6OmNvbXBhcmVOb2Rl
KE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgIH0KIAogICAgIENv
bnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSByZWZOb2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgaW50
IG5vZGVJbmRleCA9IHJlZk5vZGUtPm5vZGVJbmRleCgpOworICAgIGludCBub2RlSW5kZXggPSBy
ZWZOb2RlLT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgCiAgICAgaWYgKCFwYXJlbnROb2RlKSB7
CiAgICAgICAgIC8vIGlmIHRoZSBub2RlIGlzIHRoZSB0b3AgZG9jdW1lbnQgd2Ugc2hvdWxkIHJl
dHVybiBOT0RFX0JFRk9SRV9BTkRfQUZURVIKQEAgLTYwMCw3ICs2MDAsNyBAQCBib29sIFJhbmdl
OjppbnRlcnNlY3RzTm9kZShOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICB9
CiAKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0gcmVmTm9kZS0+cGFyZW50Tm9kZSgp
OwotICAgIGludCBub2RlSW5kZXggPSByZWZOb2RlLT5ub2RlSW5kZXgoKTsKKyAgICBpbnQgbm9k
ZUluZGV4ID0gcmVmTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgIAogICAgIGlmICghcGFy
ZW50Tm9kZSkgewogICAgICAgICAvLyBpZiB0aGUgbm9kZSBpcyB0aGUgdG9wIGRvY3VtZW50IHdl
IHNob3VsZCByZXR1cm4gTk9ERV9CRUZPUkVfQU5EX0FGVEVSCkBAIC03NTEsOSArNzUxLDkgQEAg
UGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzKEFjdGlv
blR5cGUgYWN0aW9uLCBFeGNlcHRpb24KICAgICAvLyBDb2xsYXBzZSB0aGUgcmFuZ2UsIG1ha2lu
ZyBzdXJlIHRoYXQgdGhlIHJlc3VsdCBpcyBub3Qgd2l0aGluIGEgbm9kZSB0aGF0IHdhcyBwYXJ0
aWFsbHkgc2VsZWN0ZWQuCiAgICAgaWYgKGFjdGlvbiA9PSBFeHRyYWN0IHx8IGFjdGlvbiA9PSBE
ZWxldGUpIHsKICAgICAgICAgaWYgKHBhcnRpYWxTdGFydCAmJiBjb21tb25Sb290LT5jb250YWlu
cyhwYXJ0aWFsU3RhcnQuZ2V0KCkpKQotICAgICAgICAgICAgc2V0U3RhcnQocGFydGlhbFN0YXJ0
LT5wYXJlbnROb2RlKCksIHBhcnRpYWxTdGFydC0+bm9kZUluZGV4KCkgKyAxLCBlYyk7CisgICAg
ICAgICAgICBzZXRTdGFydChwYXJ0aWFsU3RhcnQtPnBhcmVudE5vZGUoKSwgcGFydGlhbFN0YXJ0
LT5jb21wdXRlTm9kZUluZGV4KCkgKyAxLCBlYyk7CiAgICAgICAgIGVsc2UgaWYgKHBhcnRpYWxF
bmQgJiYgY29tbW9uUm9vdC0+Y29udGFpbnMocGFydGlhbEVuZC5nZXQoKSkpCi0gICAgICAgICAg
ICBzZXRTdGFydChwYXJ0aWFsRW5kLT5wYXJlbnROb2RlKCksIHBhcnRpYWxFbmQtPm5vZGVJbmRl
eCgpLCBlYyk7CisgICAgICAgICAgICBzZXRTdGFydChwYXJ0aWFsRW5kLT5wYXJlbnROb2RlKCks
IHBhcnRpYWxFbmQtPmNvbXB1dGVOb2RlSW5kZXgoKSwgZWMpOwogICAgICAgICBpZiAoZWMpCiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgbV9lbmQgPSBtX3N0YXJ0OwpAQCAtMTA2NSw3
ICsxMDY1LDcgQEAgdm9pZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5l
d05vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgaWYgKGZpcnN0SW5zZXJ0ZWRD
aGlsZC0+cGFyZW50Tm9kZSgpID09IGNvbnRhaW5lcikKICAgICAgICAgICAgICAgICBtX3N0YXJ0
LnNldFRvQmVmb3JlQ2hpbGQoZmlyc3RJbnNlcnRlZENoaWxkLmdldCgpKTsKICAgICAgICAgICAg
IGlmIChsYXN0SW5zZXJ0ZWRDaGlsZC0+cGFyZW50Tm9kZSgpID09IGNvbnRhaW5lcikKLSAgICAg
ICAgICAgICAgICBtX2VuZC5zZXQoY29udGFpbmVyLCBsYXN0SW5zZXJ0ZWRDaGlsZC0+bm9kZUlu
ZGV4KCkgKyAxLCBsYXN0SW5zZXJ0ZWRDaGlsZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9l
bmQuc2V0KGNvbnRhaW5lciwgbGFzdEluc2VydGVkQ2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSAr
IDEsIGxhc3RJbnNlcnRlZENoaWxkLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEy
NTcsNyArMTI1Nyw3IEBAIHZvaWQgUmFuZ2U6OnNldFN0YXJ0QWZ0ZXIoTm9kZSogcmVmTm9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
ZXRTdGFydChyZWZOb2RlLT5wYXJlbnROb2RlKCksIHJlZk5vZGUtPm5vZGVJbmRleCgpICsgMSwg
ZWMpOworICAgIHNldFN0YXJ0KHJlZk5vZGUtPnBhcmVudE5vZGUoKSwgcmVmTm9kZS0+Y29tcHV0
ZU5vZGVJbmRleCgpICsgMSwgZWMpOwogfQogCiB2b2lkIFJhbmdlOjpzZXRFbmRCZWZvcmUoTm9k
ZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjc3LDcgKzEyNzcsNyBAQCB2b2lk
IFJhbmdlOjpzZXRFbmRCZWZvcmUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRFbmQocmVmTm9kZS0+cGFyZW50
Tm9kZSgpLCByZWZOb2RlLT5ub2RlSW5kZXgoKSwgZWMpOworICAgIHNldEVuZChyZWZOb2RlLT5w
YXJlbnROb2RlKCksIHJlZk5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSwgZWMpOwogfQogCiB2b2lk
IFJhbmdlOjpzZXRFbmRBZnRlcihOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTEyOTcsNyArMTI5Nyw3IEBAIHZvaWQgUmFuZ2U6OnNldEVuZEFmdGVyKE5vZGUqIHJlZk5vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c2V0RW5kKHJlZk5vZGUtPnBhcmVudE5vZGUoKSwgcmVmTm9kZS0+bm9kZUluZGV4KCkgKyAxLCBl
Yyk7CisgICAgc2V0RW5kKHJlZk5vZGUtPnBhcmVudE5vZGUoKSwgcmVmTm9kZS0+Y29tcHV0ZU5v
ZGVJbmRleCgpICsgMSwgZWMpOwogfQogCiB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJl
Zk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgdm9pZCBSYW5n
ZTo6c2V0U3RhcnRCZWZvcmUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTdGFydChyZWZOb2RlLT5wYXJlbnRO
b2RlKCksIHJlZk5vZGUtPm5vZGVJbmRleCgpLCBlYyk7CisgICAgc2V0U3RhcnQocmVmTm9kZS0+
cGFyZW50Tm9kZSgpLCByZWZOb2RlLT5jb21wdXRlTm9kZUluZGV4KCksIGVjKTsKIH0KIAogdm9p
ZCBSYW5nZTo6Y2hlY2tEZWxldGVFeHRyYWN0KEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oCmluZGV4IDk5MjUwMTk4YWYwZjdjYzQ5NWVkODE0
OGQ5Y2UyMjM4MmE0NWZkOTYuLjgwOTIxZDJlNmE2OWNhNjg3NDkwYjlmZDQ1ZmY5ZjliZjY2NDE5
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKQEAgLTk1LDcgKzk1
LDcgQEAgaW5saW5lIHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjplbnN1cmVPZmZzZXRJc1ZhbGlk
KCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fY2hpbGRCZWZvcmVCb3Vu
ZGFyeSk7Ci0gICAgbV9vZmZzZXRJbkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVCb3VuZGFyeS0+
bm9kZUluZGV4KCkgKyAxOworICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3Jl
Qm91bmRhcnktPmNvbXB1dGVOb2RlSW5kZXgoKSArIDE7CiB9CiAKIGlubGluZSBjb25zdCBQb3Np
dGlvbiBSYW5nZUJvdW5kYXJ5UG9pbnQ6OnRvUG9zaXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA0ZDY3ZGM5M2MzYmUyOGVh
ZjkzMGIyMzE4MTRlODZjMzQ1ZThjODk3Li5lZGJhMTY1OTkzY2E3ZDRkZDcxYmUxZDhlN2Q5NDFl
Y2E5ZTY5YzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmNwcApAQCAtMTI5MSw3ICsxMjkxLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VT
dGFydFdpdGhQcmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwKICAgICAg
ICAgQVNTRVJUKHN0YXJ0Q2hpbGQpOwogICAgICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKHBy
ZXZpb3VzRWxlbWVudCwgZWxlbWVudCk7CiAKLSAgICAgICAgaW50IHN0YXJ0T2Zmc2V0QWRqdXN0
bWVudCA9IHN0YXJ0Q2hpbGQtPm5vZGVJbmRleCgpOworICAgICAgICBpbnQgc3RhcnRPZmZzZXRB
ZGp1c3RtZW50ID0gc3RhcnRDaGlsZC0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgICAgICBpbnQg
ZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Tm9kZSA9PSBlbmQuZGVwcmVjYXRlZE5vZGUoKSA/
IHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCA6IDA7CiAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0
aW9uKHN0YXJ0Tm9kZSwgc3RhcnRPZmZzZXRBZGp1c3RtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25J
c09mZnNldEluQW5jaG9yKSwKICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24oZW5kLmRl
cHJlY2F0ZWROb2RlKCksIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICsgZW5kT2Zmc2V0
QWRqdXN0bWVudCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikpOyAKQEAgLTEz
MjUsNyArMTMyNSw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6Om1lcmdlRW5kV2l0aE5leHRJ
ZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0CiAgICAgICAgIG1lcmdlSWRl
bnRpY2FsRWxlbWVudHMoZWxlbWVudCwgbmV4dEVsZW1lbnQpOwogCiAgICAgICAgIGJvb2wgc2hv
dWxkVXBkYXRlU3RhcnQgPSBzdGFydC5jb250YWluZXJOb2RlKCkgPT0gZW5kTm9kZTsKLSAgICAg
ICAgaW50IGVuZE9mZnNldCA9IG5leHRDaGlsZCA/IG5leHRDaGlsZC0+bm9kZUluZGV4KCkgOiBu
ZXh0RWxlbWVudC0+Y291bnRDaGlsZE5vZGVzKCk7CisgICAgICAgIGludCBlbmRPZmZzZXQgPSBu
ZXh0Q2hpbGQgPyBuZXh0Q2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSA6IG5leHRFbGVtZW50LT5j
b3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc2hvdWxkVXBkYXRlU3Rh
cnQgPyBQb3NpdGlvbihuZXh0RWxlbWVudCwgc3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpIDogc3RhcnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFBvc2l0aW9uKG5leHRFbGVtZW50LCBlbmRPZmZzZXQsIFBvc2l0aW9uOjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA3
NDA1YjAxNDFlOTU3NDJmMzM0YmIyODQwMzgyNGRhODMxMjJhZjNjLi5jNmFlNTZmMmU3OTMzYTNm
M2JhYmZjMmJlZjZmZDk5YTE1Y2ZkMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTU2MCw3ICs1NjAsNyBAQCB2b2lkIERl
bGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZUdlbmVyYWxEZWxldGUoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKG4gJiYgbi0+cGFyZW50Tm9kZSgpICE9IG1fZG93bnN0cmVhbUVu
ZC5kZXByZWNhdGVkTm9kZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBuLT5w
YXJlbnROb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBuLT5ub2RlSW5kZXgoKSArIDE7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gbi0+Y29tcHV0ZU5vZGVJbmRleCgpICsgMTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICByZW1vdmVDaGlsZHJlbklu
UmFuZ2UobV9kb3duc3RyZWFtRW5kLmRlcHJlY2F0ZWROb2RlKCksIG9mZnNldCwgbV9kb3duc3Ry
ZWFtRW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBt
X2Rvd25zdHJlYW1FbmQgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9kb3duc3RyZWFt
RW5kLmRlcHJlY2F0ZWROb2RlKCksIG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
aW5kZXggOGM4ZGFkYzRjNjExNzA2ZDU5Y2Q0MDA5ZTg2YmQ3MGZkNTExODFjMi4uMjBmODIxOTNm
NzMyYmZlMWMzNTIwOTlmN2VhYmY0ODQ1ZmE5OTJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcApAQCAtMTYzLDEyICsxNjMsMTIgQEAgUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjphdm9p
ZEludGVyc2VjdGlvbldpdGhEZWxldGVCdXR0b25Db250cm9sbGVyKGNvbnN0IFJhbmcKICAgICBp
ZiAoc3RhcnRDb250YWluZXIgPT0gZWxlbWVudCB8fCBzdGFydENvbnRhaW5lci0+aXNEZXNjZW5k
YW50T2YoZWxlbWVudCkpIHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnBhcmVudE5vZGUoKSk7
CiAgICAgICAgIHN0YXJ0Q29udGFpbmVyID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgICAg
ICBzdGFydE9mZnNldCA9IGVsZW1lbnQtPm5vZGVJbmRleCgpOworICAgICAgICBzdGFydE9mZnNl
dCA9IGVsZW1lbnQtPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICB9CiAgICAgaWYgKGVuZENvbnRh
aW5lciA9PSBlbGVtZW50IHx8IGVuZENvbnRhaW5lci0+aXNEZXNjZW5kYW50T2YoZWxlbWVudCkp
IHsKICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPnBhcmVudE5vZGUoKSk7CiAgICAgICAgIGVuZENv
bnRhaW5lciA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgZW5kT2Zmc2V0ID0gZWxl
bWVudC0+bm9kZUluZGV4KCk7CisgICAgICAgIGVuZE9mZnNldCA9IGVsZW1lbnQtPmNvbXB1dGVO
b2RlSW5kZXgoKTsKICAgICB9CiAKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShyYW5nZS0+b3du
ZXJEb2N1bWVudCgpLCBzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwg
ZW5kT2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5k
ZXggZjhmMjQwZGUxOTdkZDliYzgxMjUwMTA0OTIzYjRlOWZiYTIxMjNjYy4uZmE2ZWJmYTM1NmMx
NTc5ODQxN2M5MWY1NjhlMTlmYjdhNGMwY2IwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHAKQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OnNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxseVNlbGVjdGVkKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gQ3JlYXRlIGNvbXB1dGUgcG9zaXRpb25zIGJlZm9yZSBhbmQgYWZ0
ZXIgdGhlIGVsZW1lbnQuCi0gICAgdW5zaWduZWQgb3duZXJFbGVtZW50Tm9kZUluZGV4ID0gb3du
ZXJFbGVtZW50LT5ub2RlSW5kZXgoKTsKKyAgICB1bnNpZ25lZCBvd25lckVsZW1lbnROb2RlSW5k
ZXggPSBvd25lckVsZW1lbnQtPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gYmVmb3JlT3duZXJFbGVtZW50KFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihvd25lckVsZW1l
bnRQYXJlbnQsIG93bmVyRWxlbWVudE5vZGVJbmRleCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZz
ZXRJbkFuY2hvcikpKTsKICAgICBWaXNpYmxlUG9zaXRpb24gYWZ0ZXJPd25lckVsZW1lbnQoVmlz
aWJsZVBvc2l0aW9uKFBvc2l0aW9uKG93bmVyRWxlbWVudFBhcmVudCwgb3duZXJFbGVtZW50Tm9k
ZUluZGV4ICsgMSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciksIFZQX1VQU1RS
RUFNX0lGX1BPU1NJQkxFKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggYjQ1YmU1ZGI0NWNlNmI0ZTNmMTJiYjBlNzc1
NWY3MTlhZTliZmU5MC4uMGIwMjQ2MjcyZDk1NTcyZTI0MmU2MDBlYmU0N2RmYTdhNjc1MTQ5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OmRvQXBwbHkoKQogCiAgICAgLy8gV2UgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBpbnNlcnRpb25CbG9j
ayB0byBwcmV2ZW50IG5lc3RpbmcsIGFuZCB0aGUgY29udGVudCBiZWZvcmUgdGhlIGluc2VydGlv
bkJsb2NrIHdhc24ndCBpbiBpdHMgb3duIGJsb2NrIGFuZAogICAgIC8vIGRpZG4ndCBoYXZlIGEg
YnIgYWZ0ZXIgaXQsIHNvIHRoZSBpbnNlcnRlZCBjb250ZW50IGVuZGVkIHVwIGluIHRoZSBzYW1l
IHBhcmFncmFwaC4KLSAgICBpZiAoaW5zZXJ0aW9uQmxvY2sgJiYgaW5zZXJ0aW9uUG9zLmRlcHJl
Y2F0ZWROb2RlKCkgPT0gaW5zZXJ0aW9uQmxvY2stPnBhcmVudE5vZGUoKSAmJiAodW5zaWduZWQp
aW5zZXJ0aW9uUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBpbnNlcnRpb25CbG9jay0+
bm9kZUluZGV4KCkgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mSW5zZXJ0ZWRDb250ZW50
KSkKKyAgICBpZiAoaW5zZXJ0aW9uQmxvY2sgJiYgaW5zZXJ0aW9uUG9zLmRlcHJlY2F0ZWROb2Rl
KCkgPT0gaW5zZXJ0aW9uQmxvY2stPnBhcmVudE5vZGUoKSAmJiAodW5zaWduZWQpaW5zZXJ0aW9u
UG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBpbnNlcnRpb25CbG9jay0+Y29tcHV0ZU5v
ZGVJbmRleCgpICYmICFpc1N0YXJ0T2ZQYXJhZ3JhcGgoc3RhcnRPZkluc2VydGVkQ29udGVudCkp
CiAgICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIHN0
YXJ0T2ZJbnNlcnRlZENvbnRlbnQuZGVlcEVxdWl2YWxlbnQoKSk7CiAKICAgICBpZiAoZW5kQlIg
JiYgKHBsYWluVGV4dEZyYWdtZW50IHx8IHNob3VsZFJlbW92ZUVuZEJSKGVuZEJSLmdldCgpLCBv
cmlnaW5hbFZpc1Bvc0JlZm9yZUVuZEJSKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcAppbmRleCAwOTNjNTQ4ZjMyMDI2Y2QzZDUxODYwNGQ5NDAwZjEzNTJmOTE2MWZj
Li5lYmYzMmM4N2Q3ZjU3ZWFmN2YwNGQxODRhNmI1MWY3NDNjNjViYjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBQYXNzUmVm
UHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKIAogICAgIC8vIHVzZSB0aGUg
Y3VycmVudCBydW4gaW5mb3JtYXRpb24sIGlmIHdlIGhhdmUgaXQKICAgICBpZiAobV9wb3NpdGlv
bk9mZnNldEJhc2VOb2RlKSB7Ci0gICAgICAgIGludCBpbmRleCA9IG1fcG9zaXRpb25PZmZzZXRC
YXNlTm9kZS0+bm9kZUluZGV4KCk7CisgICAgICAgIGludCBpbmRleCA9IG1fcG9zaXRpb25PZmZz
ZXRCYXNlTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgICAgICBtX3Bvc2l0aW9uU3RhcnRP
ZmZzZXQgKz0gaW5kZXg7CiAgICAgICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgKz0gaW5kZXg7CiAg
ICAgICAgIG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSA9IG51bGxwdHI7CkBAIC0xMzI3LDcgKzEz
MjcsNyBAQCBSZW5kZXJUZXh0KiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5k
bGVGaXJzdExldHRlcihpbnQmIHN0YXJ0T2Zmc2V0LAogCiBib29sIFNpbXBsaWZpZWRCYWNrd2Fy
ZHNUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiB7Ci0gICAgdW5zaWduZWQg
aW5kZXggPSBtX25vZGUtPm5vZGVJbmRleCgpOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ub2Rl
LT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgLy8gV2Ugd2FudCByZXBsYWNlZCBlbGVtZW50cyB0
byBiZWhhdmUgbGlrZSBwdW5jdHVhdGlvbiBmb3IgYm91bmRhcnkgCiAgICAgLy8gZmluZGluZywg
YW5kIHRvIHNpbXBseSB0YWtlIHVwIHNwYWNlIGZvciB0aGUgc2VsZWN0aW9uIHByZXNlcnZhdGlv
biAKICAgICAvLyBjb2RlIGluIG1vdmVQYXJhZ3JhcGhzLCBzbyB3ZSB1c2UgYSBjb21tYS4gVW5j
b25kaXRpb25hbGx5IGVtaXQKQEAgLTEzNDEsNyArMTM0MSw3IEBAIGJvb2wgU2ltcGxpZmllZEJh
Y2t3YXJkc1RleHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUoKQogICAgIC8vIFdlIGNhbiB1
c2UgYSBsaW5lZmVlZCBpbiBwbGFjZSBvZiBhIHRhYiBiZWNhdXNlIHRoaXMgc2ltcGxlIGl0ZXJh
dG9yIGlzIG9ubHkgdXNlZCB0bwogICAgIC8vIGZpbmQgYm91bmRhcmllcywgbm90IGFjdHVhbCBj
b250ZW50LiBBIGxpbmVmZWVkIGJyZWFrcyB3b3Jkcywgc2VudGVuY2VzLCBhbmQgcGFyYWdyYXBo
cy4KICAgICBpZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvciAm
IFRleHRJdGVyYXRvckVtaXRzT3JpZ2luYWxUZXh0KSB8fCBzaG91bGRFbWl0TmV3bGluZUFmdGVy
Tm9kZSgqbV9ub2RlKSB8fCBzaG91bGRFbWl0VGFiQmVmb3JlTm9kZSgqbV9ub2RlKSkgewotICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IG1fbm9kZS0+bm9kZUluZGV4KCk7CisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gbV9ub2RlLT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgICAgIC8vIFRoZSBz
dGFydCBvZiB0aGlzIGVtaXR0ZWQgcmFuZ2UgaXMgd3JvbmcuIEVuc3VyaW5nIGNvcnJlY3RuZXNz
IHdvdWxkIHJlcXVpcmUKICAgICAgICAgLy8gVmlzaWJsZVBvc2l0aW9ucyBhbmQgc28gd291bGQg
YmUgc2xvdy4gcHJldmlvdXNCb3VuZGFyeSBleHBlY3RzIHRoaXMuCiAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJ1xuJywgKm1fbm9kZS0+cGFyZW50Tm9kZSgpLCBpbmRleCArIDEsIGluZGV4ICsgMSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4IGNhM2UzMjQzYmNiNjZk
N2NmOGY5NzU4YjlkZDY0OTI2OTkxMDY3NGYuLmU4YzYwOGJiOTUxYThlY2UxMWE5MGRlMTllNDRm
OWUzYTIxZWEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRp
bmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC05
OTcsNyArOTk3LDcgQEAgdm9pZCB1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKFBvc2l0aW9u
JiBwb3NpdGlvbiwgTm9kZSogbm9kZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25J
blBhcmVudEJlZm9yZU5vZGUobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUG9zaXRp
b246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjoKLSAgICAgICAgaWYgKHBvc2l0aW9uLmNvbnRh
aW5lck5vZGUoKSA9PSBub2RlLT5wYXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKSA+IG5vZGUtPm5vZGVJbmRleCgpKQor
ICAgICAgICBpZiAocG9zaXRpb24uY29udGFpbmVyTm9kZSgpID09IG5vZGUtPnBhcmVudE5vZGUo
KSAmJiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2Rl
KCkpID4gbm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpKQogICAgICAgICAgICAgcG9zaXRpb24ubW92
ZVRvT2Zmc2V0KHBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpIC0gMSk7CiAgICAgICAg
IGVsc2UgaWYgKG5vZGUtPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKHBvc2l0aW9uLmNvbnRh
aW5lck5vZGUoKSkpCiAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uSW5QYXJlbnRCZWZv
cmVOb2RlKG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmNwcAppbmRleCA3ZDkxOTFiOTljZDU4ZWY2OWY5MWFlNDBhYmNmNTM1ZTcy
MTRjMGE2Li44Y2IxNTFiYTI5ZmNjN2U5OTlkYjRhM2Q0NjIwMmFkNWY1YWZmYzAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApA
QCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRDb250YWluZXJBbmRPZmZz
ZXRGb3JSYW5nZShOb2RlKiBub2RlLCBpbnQgb2Zmc2V0LCBOb2RlKiYKICAgICAgICAgb2Zmc2V0
SW5Db250YWluZXIgPSBvZmZzZXQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29udGFpbmVyTm9k
ZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgb2Zmc2V0SW5Db250YWluZXIgPSBub2Rl
LT5ub2RlSW5kZXgoKSArIG9mZnNldDsKKyAgICAgICAgb2Zmc2V0SW5Db250YWluZXIgPSBub2Rl
LT5jb21wdXRlTm9kZUluZGV4KCkgKyBvZmZzZXQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggNzNkOTc5NTlkY2YyMmNjZmVjYzkzYWE3NWJkMTg1ZjZj
ZmY5MjBkZS4uMGU1YTJkZTA1OWQ2YTg0YzQ2Mjk2YTJiNDhiYTgwOTQzODM2ZmYwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIFBhc3NSZWZQ
dHI8UmFuZ2U+IERPTVNlbGVjdGlvbjo6Z2V0UmFuZ2VBdChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiAgICAgaWYgKE5vZGUqIHNoYWRvd0FuY2VzdG9yID0gc2VsZWN0aW9uU2hhZG93
QW5jZXN0b3IobV9mcmFtZSkpIHsKICAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0g
c2hhZG93QW5jZXN0b3ItPnBhcmVudE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKTsKLSAgICAgICAg
aW50IG9mZnNldCA9IHNoYWRvd0FuY2VzdG9yLT5ub2RlSW5kZXgoKTsKKyAgICAgICAgaW50IG9m
ZnNldCA9IHNoYWRvd0FuY2VzdG9yLT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgICAgIHJldHVy
biBSYW5nZTo6Y3JlYXRlKHNoYWRvd0FuY2VzdG9yLT5kb2N1bWVudCgpLCBjb250YWluZXIsIG9m
ZnNldCwgY29udGFpbmVyLCBvZmZzZXQpOwogICAgIH0KIApAQCAtNDU3LDcgKzQ1Nyw3IEBAIGJv
b2wgRE9NU2VsZWN0aW9uOjpjb250YWluc05vZGUoTm9kZSogbiwgYm9vbCBhbGxvd1BhcnRpYWwp
IGNvbnN0CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKICAgICBpZiAoIXBhcmVudE5vZGUgfHwgIXBhcmVudE5vZGUtPmluRG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9IG5vZGUtPm5vZGVJ
bmRleCgpOworICAgIHVuc2lnbmVkIG5vZGVJbmRleCA9IG5vZGUtPmNvbXB1dGVOb2RlSW5kZXgo
KTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgbm9kZUZ1bGx5U2VsZWN0
ZWQgPSBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHBhcmVudE5vZGUsIG5vZGVJbmRleCwg
c2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZz
ZXQoKSwgZWMpID49IDAgJiYgIWVjCkBAIC01MjMsNyArNTIzLDcgQEAgaW50IERPTVNlbGVjdGlv
bjo6c2hhZG93QWRqdXN0ZWRPZmZzZXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdAog
ICAgIGlmIChjb250YWluZXJOb2RlID09IGFkanVzdGVkTm9kZSkKICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKIAotICAgIHJldHVybiBhZGp1
c3RlZE5vZGUtPm5vZGVJbmRleCgpOworICAgIHJldHVybiBhZGp1c3RlZE5vZGUtPmNvbXB1dGVO
b2RlSW5kZXgoKTsKIH0KIAogYm9vbCBET01TZWxlY3Rpb246OmlzVmFsaWRGb3JQb3NpdGlvbihO
b2RlKiBub2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
aW5kZXggMWYzMTI0MmJmNTZiNTA1ODQ1MDRjYjRmMjczNTgyMzlmMmQ2ZDFmZi4uZTQ5NWMxODM3
ZjcyMTc1OGExNWVhNzI0MmY0OTNlZTBjMmQ1NTNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNjYwLDggKzI2NjAsOCBAQCBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyhSZW5kZXJCbG9jayYg
cGFyZW50LAogICAgIExheW91dFVuaXQgY2hpbGRNaWRkbGUgPSBwYXJlbnQubG9naWNhbFdpZHRo
Rm9yQ2hpbGQoY2hpbGQpIC8gMjsKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gcGFyZW50
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludEluQ2hpbGRDb29yZGluYXRlcy54KCkg
OiBwb2ludEluQ2hpbGRDb29yZGluYXRlcy55KCk7CiAgICAgaWYgKGxvZ2ljYWxMZWZ0IDwgY2hp
bGRNaWRkbGUpCi0gICAgICAgIHJldHVybiBhbmNlc3Rvci0+Y3JlYXRlVmlzaWJsZVBvc2l0aW9u
KGNoaWxkRWxlbWVudC0+bm9kZUluZGV4KCksIERPV05TVFJFQU0pOwotICAgIHJldHVybiBhbmNl
c3Rvci0+Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNoaWxkRWxlbWVudC0+bm9kZUluZGV4KCkgKyAx
LCBVUFNUUkVBTSk7CisgICAgICAgIHJldHVybiBhbmNlc3Rvci0+Y3JlYXRlVmlzaWJsZVBvc2l0
aW9uKGNoaWxkRWxlbWVudC0+Y29tcHV0ZU5vZGVJbmRleCgpLCBET1dOU1RSRUFNKTsKKyAgICBy
ZXR1cm4gYW5jZXN0b3ItPmNyZWF0ZVZpc2libGVQb3NpdGlvbihjaGlsZEVsZW1lbnQtPmNvbXB1
dGVOb2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIFJlbmRl
ckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCA2Njg4ZTk2Nzc5OWMyM2IzOTVmMTA1MDU4YjBhYTZj
ZDBlZTFkMzA5Li5lZWFjZWI4NzgyNGU3ODAxN2NkM2MyMWY4NmYwMTcxZGFlMjUyMTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04Mjgs
NyArODI4LDcgQEAgc3RhdGljIFN0cmluZyBub2RlUG9zaXRpb24oTm9kZSogbm9kZSkKICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9Jyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjaGlsZCAiKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKG4tPm5vZGVJbmRleCgpKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTnVtYmVyKG4tPmNvbXB1dGVOb2RlSW5kZXgoKSk7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiB7Iik7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChnZXRUYWdOYW1lKG4pKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCd9
Jyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238183</attachid>
            <date>2014-09-16 09:02:55 -0700</date>
            <delta_ts>2014-09-16 11:29:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136826-20140916090252.patch</filename>
            <type>text/plain</type>
            <size>29742</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwMTA3MWIzZTZjODcx
MmU5OTM2MmI2ZjgyMDk0ZDhmMzk3NTNhYS4uYzM3MjRmZWMwYzVmNjVhMGNmZjI5NzdkNTVhYzYz
ZTM3ZjJmYjJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDE0LTA5LTE2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIE5vZGU6Om5vZGVJ
bmRleCgpIHRvIGNvbXB1dGVOb2RlSW5kZXgoKSBmb3IgY2xhcml0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODI2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBSZW5hbWUgTm9kZTo6bm9kZUluZGV4
KCkgdG8gY29tcHV0ZU5vZGVJbmRleCgpIHRvIG1ha2UgaXQgY2xlYXIgdGhhdAorICAgICAgICBp
bmRleCBpcyBiZWluZyBjb21wdXRlZCBhbmQgdGhhdCBjYWxsaW5nIHRoaXMgbWV0aG9kIGlzIHBv
dGVudGlhbGx5CisgICAgICAgIGV4cGVuc2l2ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUub3JkZXI6CisgICAgICAgIFJlbmFtZSBleHBvcnRlZCBzeW1ib2wgZm9yIE5vZGU6
Om5vZGVJbmRleCgpIGFzIHdlbGwuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAq
IGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNvbXB1dGVOb2RlSW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bm9kZUluZGV4KTogRGVsZXRlZC4KKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9Ob2RlV2l0aEluZGV4Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlV2l0aEluZGV4OjppbmRleCk6CisgICAgICAgIENsZWFuIHVwIGltcGxlbWVu
dGF0aW9uIHRvIHJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIE5vZGUgdmFyaWFibGUgYW5kCisgICAg
ICAgIHRvIGZvbGxvdyBjb2Rpbmcgc3R5bGUgKHZhcmlhYmxlIG5hbWluZywgc3BhY2luZywgc3Rh
ciBwbGFjZW1lbnQpLgorCisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvc2l0aW9uOjpjb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uOjpwcmV2aW91cyk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlv
bjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbjo6dXBzdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb246OmRvd25zdHJlYW0pOgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6cG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6cG9zaXRpb25JblBhcmVudEFmdGVyTm9kZSk6CisgICAgICAgICogZG9t
L1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpjb21wYXJlTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZTo6aW50ZXJzZWN0c05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2U6OnByb2Nlc3NDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6aW5zZXJ0
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c2V0U3RhcnRBZnRlcik6CisgICAgICAg
IChXZWJDb3JlOjpSYW5nZTo6c2V0RW5kQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdl
OjpzZXRFbmRBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c2V0U3RhcnRCZWZvcmUp
OgorICAgICAgICAqIGRvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlQm91bmRhcnlQb2ludDo6ZW5zdXJlT2Zmc2V0SXNWYWxpZCk6CisgICAgICAgICogZWRp
dGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6bWVyZ2VTdGFydFdpdGhQcmV2aW91c0lmSWRlbnRpY2FsKToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhOZXh0SWZJZGVudGljYWwpOgor
ICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVHZW5lcmFsRGVsZXRlKToKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmF2
b2lkSW50ZXJzZWN0aW9uV2l0aERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIGVk
aXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OnNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50SWZGdWxseVNlbGVjdGVkKToKKyAgICAgICAg
KiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRs
ZVJlcGxhY2VkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGlmaWVkQmFja3dhcmRz
VGV4dEl0ZXJhdG9yOjpoYW5kbGVOb25UZXh0Tm9kZSk6CisgICAgICAgICogZWRpdGluZy9odG1s
ZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1v
dmFsKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnNldENvbnRhaW5lckFuZE9mZnNldEZvclJhbmdlKToKKyAgICAgICAg
KiBwYWdlL0RPTVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01TZWxlY3Rpb246
OmdldFJhbmdlQXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpjb250YWluc05v
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3RlZE9mZnNl
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5v
ZGVQb3NpdGlvbik6CisKIDIwMTQtMDktMTYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0
QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbR1N0cmVhbWVyXSBodHRwL3Rlc3RzL21lZGlhL3Zp
ZGVvLWF1dGguaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDk0ZDliNTM5
ZWQ0MWNmZGI1MTc3MTRkMTQwOGIwMmM0NDVjNjNhYjIuLjFhYTg2Y2YyOTJlNzA2NmU3ODI4OTgz
NWFlOTJiYzFkYzVmOGJmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xODg3LDggKzE4ODcs
OCBAQCBfX1pOSzdXZWJDb3JlNEZvbnRlcUVSS1MwXwogX19aTks3V2ViQ29yZTROb2RlMTF0ZXh0
Q29udGVudEViCiBfX1pOSzdXZWJDb3JlNE5vZGUxM293bmVyRG9jdW1lbnRFdgogX19aTks3V2Vi
Q29yZTROb2RlMTRpc0Rlc2NlbmRhbnRPZkVQS1MwXworX19aTks3V2ViQ29yZTROb2RlMTZjb21w
dXRlTm9kZUluZGV4RXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTI4ZGVwcmVjYXRlZFNoYWRvd0FuY2Vz
dG9yTm9kZUV2Ci1fX1pOSzdXZWJDb3JlNE5vZGU5bm9kZUluZGV4RXYKIF9fWk5LN1dlYkNvcmU0
Tm9kZTl0ZXh0UmVjdHNFUk4zV1RGNlZlY3RvcklOU183SW50UmVjdEVMbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFCiBfX1pOSzdXZWJDb3JlNFBhZ2UxMHBsdWdpbkRhdGFFdgogX19aTks3V2Vi
Q29yZTRQYWdlMTRyZW5kZXJUcmVlU2l6ZUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCA5NDhhMzRm
ZDVlODc3OGEwMzBjNjA5NTEwYTljODVhMWIyNDEyZWJjLi4wYzJlNmIxN2ZkZGY5N2RhMWQzMjg1
YzMyNjZlYTRiNmE3NjQ3MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTgxMzEsNyArODEzMSw3
IEBAIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlNVJhbmdlRVMzX05TXzE3SWRlbnRpdHlF
eHRyYWN0b3JFTlNfN1B0ckhhc2hJUzNfRUVOCiBfX1pOM1dURjlIYXNoVGFibGVJUE43V2ViQ29y
ZTVSYW5nZUVTM19OU18xN0lkZW50aXR5RXh0cmFjdG9yRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBI
YXNoVHJhaXRzSVMzX0VFUzhfRTZyZWhhc2hFaQogX19aTjdXZWJDb3JlNVJhbmdlMTBzZWxlY3RO
b2RlRVBOU180Tm9kZUVSaQogX19aTjdXZWJDb3JlNVJhbmdlMTRzZXRTdGFydEJlZm9yZUVQTlNf
NE5vZGVFUmkKLV9fWk5LN1dlYkNvcmU0Tm9kZTlub2RlSW5kZXhFdgorX19aTks3V2ViQ29yZTRO
b2RlMTZjb21wdXRlTm9kZUluZGV4RXYKIF9fWk43V2ViQ29yZTVSYW5nZThzZXRTdGFydEVOM1dU
RjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWlSaQogX19aTks3V2ViQ29yZTEzQ29udGFpbmVyTm9k
ZTljaGlsZE5vZGVFagogX19aTjdXZWJDb3JlTDMwY2hlY2tGb3JEaWZmZXJlbnRSb290Q29udGFp
bmVyRVJLTlNfMThSYW5nZUJvdW5kYXJ5UG9pbnRFUzJfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAwNDUxNjA2ZGNkMjRhYjQwZWE3MTU5ZGY1NDIyYzRiZjA1ZjkwYTMzLi5jZTI1N2FiN2Zl
ZmI1N2M5NGUyZjE5YTNjODE0NDEzZTFkODY2MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTEzOTYsNyArMTM5Niw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3VtZW50OjpjYXJldFJh
bmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSkKIAogICAgIE5vZGUqIHNoYWRvd0FuY2VzdG9yTm9k
ZSA9IGFuY2VzdG9ySW5UaGlzU2NvcGUobm9kZSk7CiAgICAgaWYgKHNoYWRvd0FuY2VzdG9yTm9k
ZSAhPSBub2RlKSB7Ci0gICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNoYWRvd0FuY2VzdG9yTm9k
ZS0+bm9kZUluZGV4KCk7CisgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHNoYWRvd0FuY2VzdG9y
Tm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWlu
ZXIgPSBzaGFkb3dBbmNlc3Rvck5vZGUtPnBhcmVudE5vZGUoKTsKICAgICAgICAgcmV0dXJuIFJh
bmdlOjpjcmVhdGUoKnRoaXMsIGNvbnRhaW5lciwgb2Zmc2V0LCBjb250YWluZXIsIG9mZnNldCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGE2M2YwMWMwOWJjMTk1YWE0MjEyYjU5ZDVjZjNl
ZjZjY2RhZGMwNzYuLjkxYzkzMGI1MTYxNjBiMTIxNzNiNDZmYTdlZmIzNjZjYTQ4NmFhMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKQEAgLTY5MSwxMiArNjkxLDExIEBAIHZvaWQgTm9kZTo6c2V0TmVlZHNT
dHlsZVJlY2FsYyhTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkKICAgICAgICAgbWFya0FuY2Vz
dG9yc1dpdGhDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKnRoaXMpOwogfQogCi11bnNpZ25lZCBOb2Rl
Ojpub2RlSW5kZXgoKSBjb25zdAordW5zaWduZWQgTm9kZTo6Y29tcHV0ZU5vZGVJbmRleCgpIGNv
bnN0CiB7Ci0gICAgTm9kZSAqX3RlbXBOb2RlID0gcHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgdW5z
aWduZWQgY291bnQ9MDsKLSAgICBmb3IgKCBjb3VudD0wOyBfdGVtcE5vZGU7IGNvdW50KysgKQot
ICAgICAgICBfdGVtcE5vZGUgPSBfdGVtcE5vZGUtPnByZXZpb3VzU2libGluZygpOworICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKKyAgICBmb3IgKE5vZGUqIHNpYmxpbmcgPSBwcmV2aW91c1NpYmxp
bmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGluZygpKQorICAg
ICAgICArK2NvdW50OwogICAgIHJldHVybiBjb3VudDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggZjQ3
N2ZmM2EwYTJkODE4MmY0MTBiNTU2YmRmZjdiNjM5NDU2NzM1NS4uNTFiNmZjZWU5N2QyMWZkNjNl
YWQwZDI5YjFjZTQzZDgyYzY5ZWFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zODMsNyArMzgzLDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIExheW91dFJlY3QgcmVuZGVyUmVjdChib29sKiBp
c1JlcGxhY2VkKTsKICAgICBJbnRSZWN0IHBpeGVsU25hcHBlZFJlbmRlclJlY3QoYm9vbCogaXNS
ZXBsYWNlZCkgeyByZXR1cm4gc25hcHBlZEludFJlY3QocmVuZGVyUmVjdChpc1JlcGxhY2VkKSk7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIG5vZGVJbmRleCgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNvbXB1dGVOb2RlSW5kZXgoKSBjb25zdDsKIAogICAg
IC8vIFJldHVybnMgdGhlIERPTSBvd25lckRvY3VtZW50IGF0dHJpYnV0ZS4gVGhpcyBtZXRob2Qg
bmV2ZXIgcmV0dXJucyBudWxsLCBleGNlcHQgaW4gdGhlIGNhc2UKICAgICAvLyBvZiBhIERvY3Vt
ZW50IG5vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdpdGhJbmRleC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVXaXRoSW5kZXguaAppbmRleCAwNzdiNjQwNDc3NTNj
YTdmMmE1MGRjOWExZDYyYWU2N2U5MmM3YzJjLi40ZGU4ODkxN2VmN2M5OTU2OTZlODI4NmE4YzBm
MzcxNmJiMWJlYzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVdpdGhJbmRl
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlV2l0aEluZGV4LmgKQEAgLTQ2LDEwICs0
NiwxMCBAQCBwdWJsaWM6CiAgICAgaW50IGluZGV4KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlm
ICghbV9oYXZlSW5kZXgpIHsKLSAgICAgICAgICAgIG1faW5kZXggPSBtX25vZGUtPm5vZGVJbmRl
eCgpOworICAgICAgICAgICAgbV9pbmRleCA9IG1fbm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwog
ICAgICAgICAgICAgbV9oYXZlSW5kZXggPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VChtX2luZGV4ID09IHN0YXRpY19jYXN0PGludD4obV9ub2RlLT5ub2RlSW5kZXgoKSkpOworICAg
ICAgICBBU1NFUlQobV9pbmRleCA9PSBzdGF0aWNfY2FzdDxpbnQ+KG1fbm9kZS0+Y29tcHV0ZU5v
ZGVJbmRleCgpKSk7CiAgICAgICAgIHJldHVybiBtX2luZGV4OwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
b3NpdGlvbi5jcHAKaW5kZXggZjJjNjkxZTNiMGJjNTBhMzcwOWY1MTJlM2QyZjczMTFmOGIyNzA5
Zi4uNzJjZDZkNTZiYzA3MjZjMjYyZWJiOTY0OTExYzZmNDZmYTllY2JiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCkBAIC0xOTYsOSArMTk2LDkgQEAgaW50IFBvc2l0aW9uOjpjb21wdXRlT2Zm
c2V0SW5Db250YWluZXJOb2RlKCkgY29uc3QKICAgICBjYXNlIFBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvcjoKICAgICAgICAgcmV0dXJuIG1pbk9mZnNldEZvck5vZGUobV9hbmNob3JOb2RlLmdldCgp
LCBtX29mZnNldCk7CiAgICAgY2FzZSBQb3NpdGlvbklzQmVmb3JlQW5jaG9yOgotICAgICAgICBy
ZXR1cm4gbV9hbmNob3JOb2RlLT5ub2RlSW5kZXgoKTsKKyAgICAgICAgcmV0dXJuIG1fYW5jaG9y
Tm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgIGNhc2UgUG9zaXRpb25Jc0FmdGVyQW5jaG9y
OgotICAgICAgICByZXR1cm4gbV9hbmNob3JOb2RlLT5ub2RlSW5kZXgoKSArIDE7CisgICAgICAg
IHJldHVybiBtX2FuY2hvck5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSArIDE7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMzMwLDcgKzMzMCw3IEBA
IFBvc2l0aW9uIFBvc2l0aW9uOjpwcmV2aW91cyhQb3NpdGlvbk1vdmVUeXBlIG1vdmVUeXBlKSBj
b25zdAogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICByZXR1
cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKHBhcmVudCwgbi0+bm9kZUluZGV4KCkpOwor
ICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24ocGFyZW50LCBuLT5jb21wdXRl
Tm9kZUluZGV4KCkpOwogfQogCiBQb3NpdGlvbiBQb3NpdGlvbjo6bmV4dChQb3NpdGlvbk1vdmVU
eXBlIG1vdmVUeXBlKSBjb25zdApAQCAtMzYyLDcgKzM2Miw3IEBAIFBvc2l0aW9uIFBvc2l0aW9u
OjpuZXh0KFBvc2l0aW9uTW92ZVR5cGUgbW92ZVR5cGUpIGNvbnN0CiAgICAgaWYgKCFwYXJlbnQp
CiAgICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIHJldHVybiBjcmVhdGVMZWdhY3lFZGl0aW5n
UG9zaXRpb24ocGFyZW50LCBuLT5ub2RlSW5kZXgoKSArIDEpOworICAgIHJldHVybiBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24ocGFyZW50LCBuLT5jb21wdXRlTm9kZUluZGV4KCkgKyAxKTsK
IH0KIAogaW50IFBvc2l0aW9uOjp1bmNoZWNrZWRQcmV2aW91c09mZnNldChjb25zdCBOb2RlKiBu
LCBpbnQgY3VycmVudCkKQEAgLTYxNCw3ICs2MTQsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6dXBz
dHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAgICAgICAgICAg
ICBsYXN0VmlzaWJsZSA9IGN1cnJlbnRQb3M7CiAgICAgICAgIAogICAgICAgICAvLyBEb24ndCBt
b3ZlIHBhc3QgYSBwb3NpdGlvbiB0aGF0IGlzIHZpc3VhbGx5IGRpc3RpbmN0LiAgV2UgY291bGQg
cmVseSBvbiBjb2RlIGFib3ZlIHRvIHRlcm1pbmF0ZSBhbmQgCi0gICAgICAgIC8vIHJldHVybiBs
YXN0VmlzaWJsZSBvbiB0aGUgbmV4dCBpdGVyYXRpb24sIGJ1dCB3ZSB0ZXJtaW5hdGUgZWFybHkg
dG8gYXZvaWQgZG9pbmcgYSBub2RlSW5kZXgoKSBjYWxsLgorICAgICAgICAvLyByZXR1cm4gbGFz
dFZpc2libGUgb24gdGhlIG5leHQgaXRlcmF0aW9uLCBidXQgd2UgdGVybWluYXRlIGVhcmx5IHRv
IGF2b2lkIGRvaW5nIGEgY29tcHV0ZU5vZGVJbmRleCgpIGNhbGwuCiAgICAgICAgIGlmIChlbmRz
T2ZOb2RlQXJlVmlzdWFsbHlEaXN0aW5jdFBvc2l0aW9ucyhjdXJyZW50Tm9kZSkgJiYgY3VycmVu
dFBvcy5hdFN0YXJ0T2ZOb2RlKCkpCiAgICAgICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CiAK
QEAgLTczMiw3ICs3MzIsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5n
Qm91bmRhcnlDcm9zc2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBsYXN0
VmlzaWJsZTsKICAgICAgICAgLy8gRG8gbm90IG1vdmUgcGFzdCBhIHZpc3VhbGx5IGRpc2luY3Qg
cG9zaXRpb24uCiAgICAgICAgIC8vIE5vdGU6IFRoZSBmaXJzdCBwb3NpdGlvbiBhZnRlciB0aGUg
bGFzdCBpbiBhIG5vZGUgd2hvc2UgZW5kcyBhcmUgdmlzdWFsbHkgZGlzdGluY3QKLSAgICAgICAg
Ly8gcG9zaXRpb25zIHdpbGwgYmUgW2JvdW5kYXJ5LT5wYXJlbnROb2RlKCksIG9yaWdpbmFsQmxv
Y2stPm5vZGVJbmRleCgpICsgMV0uCisgICAgICAgIC8vIHBvc2l0aW9ucyB3aWxsIGJlIFtib3Vu
ZGFyeS0+cGFyZW50Tm9kZSgpLCBvcmlnaW5hbEJsb2NrLT5jb21wdXRlTm9kZUluZGV4KCkgKyAx
XS4KICAgICAgICAgaWYgKGJvdW5kYXJ5ICYmIGJvdW5kYXJ5LT5wYXJlbnROb2RlKCkgPT0gY3Vy
cmVudE5vZGUpCiAgICAgICAgICAgICByZXR1cm4gbGFzdFZpc2libGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0
aW9uLmgKaW5kZXggNTFiZjQ3MjYyYmIzOTVmNjU5NTIxYzIyNzY3ZTZiYjA4NGE5MDFjMC4uYWVj
MWVhNDNkMTgyOGYwYWZkMmU0NTRlNDRiM2Y3NDQ0NzJmNDczZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9u
LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKSB7IG1fYW5jaG9y
Tm9kZS5jbGVhcigpOyBtX29mZnNldCA9IDA7IG1fYW5jaG9yVHlwZSA9IFBvc2l0aW9uSXNPZmZz
ZXRJbkFuY2hvcjsgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbiA9IGZhbHNlOyB9CiAKICAgICAv
LyBUaGVzZSBhcmUgYWx3YXlzIERPTSBjb21wbGlhbnQgdmFsdWVzLiAgRWRpdGluZyBwb3NpdGlv
bnMgbGlrZSBbaW1nLCAwXSAoYWthIFtpbWcsIGJlZm9yZV0pCi0gICAgLy8gd2lsbCByZXR1cm4g
aW1nLT5wYXJlbnROb2RlKCkgYW5kIGltZy0+bm9kZUluZGV4KCkgZnJvbSB0aGVzZSBmdW5jdGlv
bnMuCisgICAgLy8gd2lsbCByZXR1cm4gaW1nLT5wYXJlbnROb2RlKCkgYW5kIGltZy0+Y29tcHV0
ZU5vZGVJbmRleCgpIGZyb20gdGhlc2UgZnVuY3Rpb25zLgogICAgIFdFQkNPUkVfRVhQT1JUIE5v
ZGUqIGNvbnRhaW5lck5vZGUoKSBjb25zdDsgLy8gbnVsbCBmb3IgYSBiZWZvcmUvYWZ0ZXIgcG9z
aXRpb24gYW5jaG9yZWQgdG8gYSBub2RlIHdpdGggbm8gcGFyZW50CiAgICAgVGV4dCogY29udGFp
bmVyVGV4dCgpIGNvbnN0OwogCkBAIC0yNzMsMTMgKzI3MywxMyBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvcjw9KGNvbnN0IFBvc2l0aW9uJiBhLCBjb25zdCBQb3NpdGlvbiYgYikKIGlubGluZSBQb3Np
dGlvbiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShjb25zdCBOb2RlKiBub2RlKQogewogICAg
IEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwotICAgIHJldHVybiBQb3NpdGlvbihub2RlLT5w
YXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNl
dEluQW5jaG9yKTsKKyAgICByZXR1cm4gUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCBub2Rl
LT5jb21wdXRlTm9kZUluZGV4KCksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3Ip
OwogfQogCiBpbmxpbmUgUG9zaXRpb24gcG9zaXRpb25JblBhcmVudEFmdGVyTm9kZShjb25zdCBO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlLT5wYXJlbnROb2RlKCkpOwotICAgIHJldHVy
biBQb3NpdGlvbihub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPm5vZGVJbmRleCgpICsgMSwgUG9z
aXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CisgICAgcmV0dXJuIFBvc2l0aW9uKG5v
ZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpICsgMSwgUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiB9CiAKIC8vIHBvc2l0aW9uQmVmb3JlTm9kZSBh
bmQgcG9zaXRpb25BZnRlck5vZGUgcmV0dXJuIG5laWdoYm9yLWFuY2hvcmVkIHBvc2l0aW9ucywg
Y29uc3RydWN0aW9uIGlzIE8oMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5n
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IGQ2ODQ4NGZjZjE3Y2I4
N2M1MTQwOWM0Y2RlMTczMTFjOWE5ODBkOTguLmRjYTg3NjMzZTczMTMxOGMxYWY0NWM5NWUxZjY3
YjJjMDhlMWEzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMzk1LDcgKzM5NSw3IEBAIFJhbmdl
OjpDb21wYXJlUmVzdWx0cyBSYW5nZTo6Y29tcGFyZU5vZGUoTm9kZSogcmVmTm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgfQogCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9k
ZSA9IHJlZk5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBpbnQgbm9kZUluZGV4ID0gcmVmTm9kZS0+
bm9kZUluZGV4KCk7CisgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gcmVmTm9kZS0+Y29tcHV0ZU5v
ZGVJbmRleCgpOwogICAgIAogICAgIGlmICghcGFyZW50Tm9kZSkgewogICAgICAgICAvLyBpZiB0
aGUgbm9kZSBpcyB0aGUgdG9wIGRvY3VtZW50IHdlIHNob3VsZCByZXR1cm4gTk9ERV9CRUZPUkVf
QU5EX0FGVEVSCkBAIC02MDAsNyArNjAwLDcgQEAgYm9vbCBSYW5nZTo6aW50ZXJzZWN0c05vZGUo
Tm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgfQogCiAgICAgQ29udGFpbmVy
Tm9kZSogcGFyZW50Tm9kZSA9IHJlZk5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBpbnQgbm9kZUlu
ZGV4ID0gcmVmTm9kZS0+bm9kZUluZGV4KCk7CisgICAgdW5zaWduZWQgbm9kZUluZGV4ID0gcmVm
Tm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogICAgIAogICAgIGlmICghcGFyZW50Tm9kZSkgewog
ICAgICAgICAvLyBpZiB0aGUgbm9kZSBpcyB0aGUgdG9wIGRvY3VtZW50IHdlIHNob3VsZCByZXR1
cm4gTk9ERV9CRUZPUkVfQU5EX0FGVEVSCkBAIC03NTEsOSArNzUxLDkgQEAgUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzKEFjdGlvblR5cGUgYWN0aW9u
LCBFeGNlcHRpb24KICAgICAvLyBDb2xsYXBzZSB0aGUgcmFuZ2UsIG1ha2luZyBzdXJlIHRoYXQg
dGhlIHJlc3VsdCBpcyBub3Qgd2l0aGluIGEgbm9kZSB0aGF0IHdhcyBwYXJ0aWFsbHkgc2VsZWN0
ZWQuCiAgICAgaWYgKGFjdGlvbiA9PSBFeHRyYWN0IHx8IGFjdGlvbiA9PSBEZWxldGUpIHsKICAg
ICAgICAgaWYgKHBhcnRpYWxTdGFydCAmJiBjb21tb25Sb290LT5jb250YWlucyhwYXJ0aWFsU3Rh
cnQuZ2V0KCkpKQotICAgICAgICAgICAgc2V0U3RhcnQocGFydGlhbFN0YXJ0LT5wYXJlbnROb2Rl
KCksIHBhcnRpYWxTdGFydC0+bm9kZUluZGV4KCkgKyAxLCBlYyk7CisgICAgICAgICAgICBzZXRT
dGFydChwYXJ0aWFsU3RhcnQtPnBhcmVudE5vZGUoKSwgcGFydGlhbFN0YXJ0LT5jb21wdXRlTm9k
ZUluZGV4KCkgKyAxLCBlYyk7CiAgICAgICAgIGVsc2UgaWYgKHBhcnRpYWxFbmQgJiYgY29tbW9u
Um9vdC0+Y29udGFpbnMocGFydGlhbEVuZC5nZXQoKSkpCi0gICAgICAgICAgICBzZXRTdGFydChw
YXJ0aWFsRW5kLT5wYXJlbnROb2RlKCksIHBhcnRpYWxFbmQtPm5vZGVJbmRleCgpLCBlYyk7Cisg
ICAgICAgICAgICBzZXRTdGFydChwYXJ0aWFsRW5kLT5wYXJlbnROb2RlKCksIHBhcnRpYWxFbmQt
PmNvbXB1dGVOb2RlSW5kZXgoKSwgZWMpOwogICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICAgICAgbV9lbmQgPSBtX3N0YXJ0OwpAQCAtMTA2NSw3ICsxMDY1LDcgQEAg
dm9pZCBSYW5nZTo6aW5zZXJ0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHBycE5ld05vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgaWYgKGZpcnN0SW5zZXJ0ZWRDaGlsZC0+cGFyZW50
Tm9kZSgpID09IGNvbnRhaW5lcikKICAgICAgICAgICAgICAgICBtX3N0YXJ0LnNldFRvQmVmb3Jl
Q2hpbGQoZmlyc3RJbnNlcnRlZENoaWxkLmdldCgpKTsKICAgICAgICAgICAgIGlmIChsYXN0SW5z
ZXJ0ZWRDaGlsZC0+cGFyZW50Tm9kZSgpID09IGNvbnRhaW5lcikKLSAgICAgICAgICAgICAgICBt
X2VuZC5zZXQoY29udGFpbmVyLCBsYXN0SW5zZXJ0ZWRDaGlsZC0+bm9kZUluZGV4KCkgKyAxLCBs
YXN0SW5zZXJ0ZWRDaGlsZC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbV9lbmQuc2V0KGNvbnRh
aW5lciwgbGFzdEluc2VydGVkQ2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSArIDEsIGxhc3RJbnNl
cnRlZENoaWxkLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTEyNTcsNyArMTI1Nyw3
IEBAIHZvaWQgUmFuZ2U6OnNldFN0YXJ0QWZ0ZXIoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTdGFydChyZWZO
b2RlLT5wYXJlbnROb2RlKCksIHJlZk5vZGUtPm5vZGVJbmRleCgpICsgMSwgZWMpOworICAgIHNl
dFN0YXJ0KHJlZk5vZGUtPnBhcmVudE5vZGUoKSwgcmVmTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgp
ICsgMSwgZWMpOwogfQogCiB2b2lkIFJhbmdlOjpzZXRFbmRCZWZvcmUoTm9kZSogcmVmTm9kZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMjc3LDcgKzEyNzcsNyBAQCB2b2lkIFJhbmdlOjpzZXRF
bmRCZWZvcmUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzZXRFbmQocmVmTm9kZS0+cGFyZW50Tm9kZSgpLCByZWZO
b2RlLT5ub2RlSW5kZXgoKSwgZWMpOworICAgIHNldEVuZChyZWZOb2RlLT5wYXJlbnROb2RlKCks
IHJlZk5vZGUtPmNvbXB1dGVOb2RlSW5kZXgoKSwgZWMpOwogfQogCiB2b2lkIFJhbmdlOjpzZXRF
bmRBZnRlcihOb2RlKiByZWZOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTEyOTcsNyArMTI5
Nyw3IEBAIHZvaWQgUmFuZ2U6OnNldEVuZEFmdGVyKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0RW5kKHJlZk5v
ZGUtPnBhcmVudE5vZGUoKSwgcmVmTm9kZS0+bm9kZUluZGV4KCkgKyAxLCBlYyk7CisgICAgc2V0
RW5kKHJlZk5vZGUtPnBhcmVudE5vZGUoKSwgcmVmTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpICsg
MSwgZWMpOwogfQogCiB2b2lkIFJhbmdlOjpzZWxlY3ROb2RlKE5vZGUqIHJlZk5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMTUxNyw3ICsxNTE3LDcgQEAgdm9pZCBSYW5nZTo6c2V0U3RhcnRC
ZWZvcmUoTm9kZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgaWYgKGVjKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzZXRTdGFydChyZWZOb2RlLT5wYXJlbnROb2RlKCksIHJlZk5v
ZGUtPm5vZGVJbmRleCgpLCBlYyk7CisgICAgc2V0U3RhcnQocmVmTm9kZS0+cGFyZW50Tm9kZSgp
LCByZWZOb2RlLT5jb21wdXRlTm9kZUluZGV4KCksIGVjKTsKIH0KIAogdm9pZCBSYW5nZTo6Y2hl
Y2tEZWxldGVFeHRyYWN0KEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1JhbmdlQm91bmRhcnlQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
Qm91bmRhcnlQb2ludC5oCmluZGV4IDk5MjUwMTk4YWYwZjdjYzQ5NWVkODE0OGQ5Y2UyMjM4MmE0
NWZkOTYuLjgwOTIxZDJlNmE2OWNhNjg3NDkwYjlmZDQ1ZmY5ZjliZjY2NDE5MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZUJvdW5kYXJ5UG9pbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2VCb3VuZGFyeVBvaW50LmgKQEAgLTk1LDcgKzk1LDcgQEAgaW5saW5l
IHZvaWQgUmFuZ2VCb3VuZGFyeVBvaW50OjplbnN1cmVPZmZzZXRJc1ZhbGlkKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fY2hpbGRCZWZvcmVCb3VuZGFyeSk7Ci0gICAg
bV9vZmZzZXRJbkNvbnRhaW5lciA9IG1fY2hpbGRCZWZvcmVCb3VuZGFyeS0+bm9kZUluZGV4KCkg
KyAxOworICAgIG1fb2Zmc2V0SW5Db250YWluZXIgPSBtX2NoaWxkQmVmb3JlQm91bmRhcnktPmNv
bXB1dGVOb2RlSW5kZXgoKSArIDE7CiB9CiAKIGlubGluZSBjb25zdCBQb3NpdGlvbiBSYW5nZUJv
dW5kYXJ5UG9pbnQ6OnRvUG9zaXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA0ZDY3ZGM5M2MzYmUyOGVhZjkzMGIyMzE4MTRl
ODZjMzQ1ZThjODk3Li5hMjIwMjdlMzgwZmU1MjZmYmYzZTgxMzRmN2U5YzgxM2NiY2FiZjUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtMTI5
MSw4ICsxMjkxLDggQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6bWVyZ2VTdGFydFdpdGhQcmV2
aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwKICAgICAgICAgQVNTRVJUKHN0
YXJ0Q2hpbGQpOwogICAgICAgICBtZXJnZUlkZW50aWNhbEVsZW1lbnRzKHByZXZpb3VzRWxlbWVu
dCwgZWxlbWVudCk7CiAKLSAgICAgICAgaW50IHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0
Q2hpbGQtPm5vZGVJbmRleCgpOwotICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0
YXJ0Tm9kZSA9PSBlbmQuZGVwcmVjYXRlZE5vZGUoKSA/IHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCA6
IDA7CisgICAgICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Q2hpbGQt
PmNvbXB1dGVOb2RlSW5kZXgoKTsKKyAgICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0QWRqdXN0bWVu
dCA9IHN0YXJ0Tm9kZSA9PSBlbmQuZGVwcmVjYXRlZE5vZGUoKSA/IHN0YXJ0T2Zmc2V0QWRqdXN0
bWVudCA6IDA7CiAgICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3Rh
cnRPZmZzZXRBZGp1c3RtZW50LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24oZW5kLmRlcHJlY2F0ZWROb2RlKCksIGVu
ZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpICsgZW5kT2Zmc2V0QWRqdXN0bWVudCwgUG9zaXRp
b246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikpOyAKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xMzI1LDcgKzEzMjUsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjptZXJnZUVuZFdpdGhO
ZXh0SWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdAogICAgICAgICBtZXJn
ZUlkZW50aWNhbEVsZW1lbnRzKGVsZW1lbnQsIG5leHRFbGVtZW50KTsKIAogICAgICAgICBib29s
IHNob3VsZFVwZGF0ZVN0YXJ0ID0gc3RhcnQuY29udGFpbmVyTm9kZSgpID09IGVuZE5vZGU7Ci0g
ICAgICAgIGludCBlbmRPZmZzZXQgPSBuZXh0Q2hpbGQgPyBuZXh0Q2hpbGQtPm5vZGVJbmRleCgp
IDogbmV4dEVsZW1lbnQtPmNvdW50Q2hpbGROb2RlcygpOworICAgICAgICB1bnNpZ25lZCBlbmRP
ZmZzZXQgPSBuZXh0Q2hpbGQgPyBuZXh0Q2hpbGQtPmNvbXB1dGVOb2RlSW5kZXgoKSA6IG5leHRF
bGVtZW50LT5jb3VudENoaWxkTm9kZXMoKTsKICAgICAgICAgdXBkYXRlU3RhcnRFbmQoc2hvdWxk
VXBkYXRlU3RhcnQgPyBQb3NpdGlvbihuZXh0RWxlbWVudCwgc3RhcnQub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCksIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpIDogc3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uKG5leHRFbGVtZW50LCBlbmRPZmZzZXQsIFBv
c2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNw
cAppbmRleCA3NDA1YjAxNDFlOTU3NDJmMzM0YmIyODQwMzgyNGRhODMxMjJhZjNjLi4zNWFhM2I5
ZjIxMzg0OWNkYTdmZTBhYjAzYTc2ODViZjY4MDFmNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTU1NCwxMyArNTU0LDEz
IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlR2VuZXJhbERlbGV0ZSgpCiAg
ICAgICAgICAgICAgICAgLy8gRklYTUU6IE1ha2UgbV91cHN0cmVhbVN0YXJ0IGEgcG9zaXRpb24g
d2UgdXBkYXRlIGFzIHdlIHJlbW92ZSBjb250ZW50LCB0aGVuIHdlIGNhbgogICAgICAgICAgICAg
ICAgIC8vIGFsd2F5cyBrbm93IHdoaWNoIGNoaWxkcmVuIHRvIHJlbW92ZS4KICAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKCEoc3RhcnROb2RlV2FzRGVzY2VuZGFudE9mRW5kTm9kZSAmJiAhbV91
cHN0cmVhbVN0YXJ0LmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVudCgpKSkgewotICAgICAgICAgICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdXBzdHJlYW1TdGFydC5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUo
KSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBtX3Vwc3RyZWFtU3RhcnQu
ZGVwcmVjYXRlZE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChuICYmIG4t
PnBhcmVudE5vZGUoKSAhPSBtX2Rvd25zdHJlYW1FbmQuZGVwcmVjYXRlZE5vZGUoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBuID0gbi0+cGFyZW50Tm9kZSgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0g
bi0+bm9kZUluZGV4KCkgKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9
IG4tPmNvbXB1dGVOb2RlSW5kZXgoKSArIDE7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgcmVtb3ZlQ2hpbGRyZW5JblJhbmdlKG1fZG93bnN0cmVhbUVuZC5kZXBy
ZWNhdGVkTm9kZSgpLCBvZmZzZXQsIG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9kb3duc3RyZWFtRW5kID0gY3JlYXRlTGVn
YWN5RWRpdGluZ1Bvc2l0aW9uKG1fZG93bnN0cmVhbUVuZC5kZXByZWNhdGVkTm9kZSgpLCBvZmZz
ZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDhjOGRhZGM0YzYxMTcwNmQ1OWNk
NDAwOWU4NmJkNzBmZDUxMTgxYzIuLjIwZjgyMTkzZjczMmJmZTFjMzUyMDk5ZjdlYWJmNDg0NWZh
OTkyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTE2MywxMiArMTYzLDEyIEBA
IFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6YXZvaWRJbnRlcnNlY3Rpb25XaXRoRGVsZXRlQnV0
dG9uQ29udHJvbGxlcihjb25zdCBSYW5nCiAgICAgaWYgKHN0YXJ0Q29udGFpbmVyID09IGVsZW1l
bnQgfHwgc3RhcnRDb250YWluZXItPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQpKSB7CiAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5wYXJlbnROb2RlKCkpOwogICAgICAgICBzdGFydENvbnRhaW5lciA9
IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgc3RhcnRPZmZzZXQgPSBlbGVtZW50LT5u
b2RlSW5kZXgoKTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBlbGVtZW50LT5jb21wdXRlTm9kZUlu
ZGV4KCk7CiAgICAgfQogICAgIGlmIChlbmRDb250YWluZXIgPT0gZWxlbWVudCB8fCBlbmRDb250
YWluZXItPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQpKSB7CiAgICAgICAgIEFTU0VSVChlbGVtZW50
LT5wYXJlbnROb2RlKCkpOwogICAgICAgICBlbmRDb250YWluZXIgPSBlbGVtZW50LT5wYXJlbnRO
b2RlKCk7Ci0gICAgICAgIGVuZE9mZnNldCA9IGVsZW1lbnQtPm5vZGVJbmRleCgpOworICAgICAg
ICBlbmRPZmZzZXQgPSBlbGVtZW50LT5jb21wdXRlTm9kZUluZGV4KCk7CiAgICAgfQogCiAgICAg
cmV0dXJuIFJhbmdlOjpjcmVhdGUocmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgc3RhcnRDb250YWlu
ZXIsIHN0YXJ0T2Zmc2V0LCBlbmRDb250YWluZXIsIGVuZE9mZnNldCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGY4ZjI0MGRlMTk3ZGQ5YmM4MTI1MDEw
NDkyM2I0ZTlmYmEyMTIzY2MuLmZhNmViZmEzNTZjMTU3OTg0MTdjOTFmNTY4ZTE5ZmI3YTRjMGNi
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xNjU0
LDcgKzE2NTQsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RGcmFtZUVsZW1lbnRJblBh
cmVudElmRnVsbHlTZWxlY3RlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIENyZWF0ZSBj
b21wdXRlIHBvc2l0aW9ucyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBlbGVtZW50LgotICAgIHVuc2ln
bmVkIG93bmVyRWxlbWVudE5vZGVJbmRleCA9IG93bmVyRWxlbWVudC0+bm9kZUluZGV4KCk7Cisg
ICAgdW5zaWduZWQgb3duZXJFbGVtZW50Tm9kZUluZGV4ID0gb3duZXJFbGVtZW50LT5jb21wdXRl
Tm9kZUluZGV4KCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGJlZm9yZU93bmVyRWxlbWVudChWaXNp
YmxlUG9zaXRpb24oUG9zaXRpb24ob3duZXJFbGVtZW50UGFyZW50LCBvd25lckVsZW1lbnROb2Rl
SW5kZXgsIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpKSk7CiAgICAgVmlzaWJs
ZVBvc2l0aW9uIGFmdGVyT3duZXJFbGVtZW50KFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihvd25l
ckVsZW1lbnRQYXJlbnQsIG93bmVyRWxlbWVudE5vZGVJbmRleCArIDEsIFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IpLCBWUF9VUFNUUkVBTV9JRl9QT1NTSUJMRSkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IGI0NWJlNWRiNDVjZTZiNGUzZjEyYmIwZTc3NTVmNzE5YWU5YmZlOTAuLjBiMDI0NjI3MmQ5
NTU3MmUyNDJlNjAwZWJlNDdkZmE3YTY3NTE0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xMTQwLDcgKzExNDAsNyBA
QCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKIAogICAgIC8vIFdlIGlu
c2VydGVkIGJlZm9yZSB0aGUgaW5zZXJ0aW9uQmxvY2sgdG8gcHJldmVudCBuZXN0aW5nLCBhbmQg
dGhlIGNvbnRlbnQgYmVmb3JlIHRoZSBpbnNlcnRpb25CbG9jayB3YXNuJ3QgaW4gaXRzIG93biBi
bG9jayBhbmQKICAgICAvLyBkaWRuJ3QgaGF2ZSBhIGJyIGFmdGVyIGl0LCBzbyB0aGUgaW5zZXJ0
ZWQgY29udGVudCBlbmRlZCB1cCBpbiB0aGUgc2FtZSBwYXJhZ3JhcGguCi0gICAgaWYgKGluc2Vy
dGlvbkJsb2NrICYmIGluc2VydGlvblBvcy5kZXByZWNhdGVkTm9kZSgpID09IGluc2VydGlvbkJs
b2NrLT5wYXJlbnROb2RlKCkgJiYgKHVuc2lnbmVkKWluc2VydGlvblBvcy5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpIDwgaW5zZXJ0aW9uQmxvY2stPm5vZGVJbmRleCgpICYmICFpc1N0YXJ0T2ZQ
YXJhZ3JhcGgoc3RhcnRPZkluc2VydGVkQ29udGVudCkpCisgICAgaWYgKGluc2VydGlvbkJsb2Nr
ICYmIGluc2VydGlvblBvcy5kZXByZWNhdGVkTm9kZSgpID09IGluc2VydGlvbkJsb2NrLT5wYXJl
bnROb2RlKCkgJiYgKHVuc2lnbmVkKWluc2VydGlvblBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpIDwgaW5zZXJ0aW9uQmxvY2stPmNvbXB1dGVOb2RlSW5kZXgoKSAmJiAhaXNTdGFydE9mUGFy
YWdyYXBoKHN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQpKQogICAgICAgICBpbnNlcnROb2RlQXQoY3Jl
YXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCBzdGFydE9mSW5zZXJ0ZWRDb250ZW50LmRlZXBF
cXVpdmFsZW50KCkpOwogCiAgICAgaWYgKGVuZEJSICYmIChwbGFpblRleHRGcmFnbWVudCB8fCBz
aG91bGRSZW1vdmVFbmRCUihlbmRCUi5nZXQoKSwgb3JpZ2luYWxWaXNQb3NCZWZvcmVFbmRCUikp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggMDkzYzU0OGYz
MjAyNmNkM2Q1MTg2MDRkOTQwMGYxMzUyZjkxNjFmYy4uZTk3NjNiYzFiMWZiZmZkZDllY2MyMzRj
ODg2YTEwZjAyMDYyODUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNw
cApAQCAtMTA5NSw3ICsxMDk1LDcgQEAgUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpy
YW5nZSgpIGNvbnN0CiAKICAgICAvLyB1c2UgdGhlIGN1cnJlbnQgcnVuIGluZm9ybWF0aW9uLCBp
ZiB3ZSBoYXZlIGl0CiAgICAgaWYgKG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZSkgewotICAgICAg
ICBpbnQgaW5kZXggPSBtX3Bvc2l0aW9uT2Zmc2V0QmFzZU5vZGUtPm5vZGVJbmRleCgpOworICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IG1fcG9zaXRpb25PZmZzZXRCYXNlTm9kZS0+Y29tcHV0ZU5v
ZGVJbmRleCgpOwogICAgICAgICBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgKz0gaW5kZXg7CiAgICAg
ICAgIG1fcG9zaXRpb25FbmRPZmZzZXQgKz0gaW5kZXg7CiAgICAgICAgIG1fcG9zaXRpb25PZmZz
ZXRCYXNlTm9kZSA9IG51bGxwdHI7CkBAIC0xMzI3LDcgKzEzMjcsNyBAQCBSZW5kZXJUZXh0KiBT
aW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVGaXJzdExldHRlcihpbnQmIHN0
YXJ0T2Zmc2V0LAogCiBib29sIFNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRs
ZVJlcGxhY2VkRWxlbWVudCgpCiB7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBtX25vZGUtPm5vZGVJ
bmRleCgpOworICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ub2RlLT5jb21wdXRlTm9kZUluZGV4KCk7
CiAgICAgLy8gV2Ugd2FudCByZXBsYWNlZCBlbGVtZW50cyB0byBiZWhhdmUgbGlrZSBwdW5jdHVh
dGlvbiBmb3IgYm91bmRhcnkgCiAgICAgLy8gZmluZGluZywgYW5kIHRvIHNpbXBseSB0YWtlIHVw
IHNwYWNlIGZvciB0aGUgc2VsZWN0aW9uIHByZXNlcnZhdGlvbiAKICAgICAvLyBjb2RlIGluIG1v
dmVQYXJhZ3JhcGhzLCBzbyB3ZSB1c2UgYSBjb21tYS4gVW5jb25kaXRpb25hbGx5IGVtaXQKQEAg
LTEzNDEsNyArMTM0MSw3IEBAIGJvb2wgU2ltcGxpZmllZEJhY2t3YXJkc1RleHRJdGVyYXRvcjo6
aGFuZGxlTm9uVGV4dE5vZGUoKQogICAgIC8vIFdlIGNhbiB1c2UgYSBsaW5lZmVlZCBpbiBwbGFj
ZSBvZiBhIHRhYiBiZWNhdXNlIHRoaXMgc2ltcGxlIGl0ZXJhdG9yIGlzIG9ubHkgdXNlZCB0bwog
ICAgIC8vIGZpbmQgYm91bmRhcmllcywgbm90IGFjdHVhbCBjb250ZW50LiBBIGxpbmVmZWVkIGJy
ZWFrcyB3b3Jkcywgc2VudGVuY2VzLCBhbmQgcGFyYWdyYXBocy4KICAgICBpZiAoc2hvdWxkRW1p
dE5ld2xpbmVGb3JOb2RlKG1fbm9kZSwgbV9iZWhhdmlvciAmIFRleHRJdGVyYXRvckVtaXRzT3Jp
Z2luYWxUZXh0KSB8fCBzaG91bGRFbWl0TmV3bGluZUFmdGVyTm9kZSgqbV9ub2RlKSB8fCBzaG91
bGRFbWl0VGFiQmVmb3JlTm9kZSgqbV9ub2RlKSkgewotICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IG1fbm9kZS0+bm9kZUluZGV4KCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gbV9ub2RlLT5j
b21wdXRlTm9kZUluZGV4KCk7CiAgICAgICAgIC8vIFRoZSBzdGFydCBvZiB0aGlzIGVtaXR0ZWQg
cmFuZ2UgaXMgd3JvbmcuIEVuc3VyaW5nIGNvcnJlY3RuZXNzIHdvdWxkIHJlcXVpcmUKICAgICAg
ICAgLy8gVmlzaWJsZVBvc2l0aW9ucyBhbmQgc28gd291bGQgYmUgc2xvdy4gcHJldmlvdXNCb3Vu
ZGFyeSBleHBlY3RzIHRoaXMuCiAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJ1xuJywgKm1fbm9kZS0+
cGFyZW50Tm9kZSgpLCBpbmRleCArIDEsIGluZGV4ICsgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwCmluZGV4IGNhM2UzMjQzYmNiNjZkN2NmOGY5NzU4YjlkZDY0OTI2OTkx
MDY3NGYuLmU4YzYwOGJiOTUxYThlY2UxMWE5MGRlMTllNDRmOWUzYTIxZWEzY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC05OTcsNyArOTk3LDcgQEAgdm9pZCB1
cGRhdGVQb3NpdGlvbkZvck5vZGVSZW1vdmFsKFBvc2l0aW9uJiBwb3NpdGlvbiwgTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJ
bkFuY2hvcjoKLSAgICAgICAgaWYgKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSA9PSBub2RlLT5w
YXJlbnROb2RlKCkgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBvc2l0aW9uLm9mZnNldEluQ29u
dGFpbmVyTm9kZSgpKSA+IG5vZGUtPm5vZGVJbmRleCgpKQorICAgICAgICBpZiAocG9zaXRpb24u
Y29udGFpbmVyTm9kZSgpID09IG5vZGUtPnBhcmVudE5vZGUoKSAmJiBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpID4gbm9kZS0+Y29tcHV0ZU5v
ZGVJbmRleCgpKQogICAgICAgICAgICAgcG9zaXRpb24ubW92ZVRvT2Zmc2V0KHBvc2l0aW9uLm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpIC0gMSk7CiAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNvbnRh
aW5zSW5jbHVkaW5nU2hhZG93RE9NKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAg
ICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCA3ZDkxOTFiOTljZDU4ZWY2OWY5MWFlNDBhYmNmNTM1ZTcyMTRjMGE2Li44Y2IxNTFiYTI5ZmNj
N2U5OTlkYjRhM2Q0NjIwMmFkNWY1YWZmYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDI0LDcgKzQyNCw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBzZXRDb250YWluZXJBbmRPZmZzZXRGb3JSYW5nZShOb2RlKiBub2Rl
LCBpbnQgb2Zmc2V0LCBOb2RlKiYKICAgICAgICAgb2Zmc2V0SW5Db250YWluZXIgPSBvZmZzZXQ7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29udGFpbmVyTm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKLSAgICAgICAgb2Zmc2V0SW5Db250YWluZXIgPSBub2RlLT5ub2RlSW5kZXgoKSArIG9mZnNl
dDsKKyAgICAgICAgb2Zmc2V0SW5Db250YWluZXIgPSBub2RlLT5jb21wdXRlTm9kZUluZGV4KCkg
KyBvZmZzZXQ7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5k
ZXggNzNkOTc5NTlkY2YyMmNjZmVjYzkzYWE3NWJkMTg1ZjZjZmY5MjBkZS4uMTFjZThiYzFjM2Jm
MThiMzU2NjAzNzFjYTczNTdkZmMxZjQ5OTBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0
aW9uLmNwcApAQCAtMzY0LDcgKzM2NCw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERPTVNlbGVjdGlv
bjo6Z2V0UmFuZ2VBdChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKE5v
ZGUqIHNoYWRvd0FuY2VzdG9yID0gc2VsZWN0aW9uU2hhZG93QW5jZXN0b3IobV9mcmFtZSkpIHsK
ICAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gc2hhZG93QW5jZXN0b3ItPnBhcmVu
dE5vZGVHdWFyYW50ZWVkSG9zdEZyZWUoKTsKLSAgICAgICAgaW50IG9mZnNldCA9IHNoYWRvd0Fu
Y2VzdG9yLT5ub2RlSW5kZXgoKTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc2hhZG93QW5j
ZXN0b3ItPmNvbXB1dGVOb2RlSW5kZXgoKTsKICAgICAgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUo
c2hhZG93QW5jZXN0b3ItPmRvY3VtZW50KCksIGNvbnRhaW5lciwgb2Zmc2V0LCBjb250YWluZXIs
IG9mZnNldCk7CiAgICAgfQogCkBAIC00NTcsNyArNDU3LDcgQEAgYm9vbCBET01TZWxlY3Rpb246
OmNvbnRhaW5zTm9kZShOb2RlKiBuLCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKICAgICBDb250
YWluZXJOb2RlKiBwYXJlbnROb2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFy
ZW50Tm9kZSB8fCAhcGFyZW50Tm9kZS0+aW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgdW5zaWduZWQgbm9kZUluZGV4ID0gbm9kZS0+bm9kZUluZGV4KCk7CisgICAgdW5z
aWduZWQgbm9kZUluZGV4ID0gbm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgYm9vbCBub2RlRnVsbHlTZWxlY3RlZCA9IFJhbmdlOjpjb21w
YXJlQm91bmRhcnlQb2ludHMocGFyZW50Tm9kZSwgbm9kZUluZGV4LCBzZWxlY3RlZFJhbmdlLT5z
dGFydENvbnRhaW5lcigpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgpLCBlYykgPj0gMCAm
JiAhZWMKQEAgLTUyMyw3ICs1MjMsNyBAQCBpbnQgRE9NU2VsZWN0aW9uOjpzaGFkb3dBZGp1c3Rl
ZE9mZnNldChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CiAgICAgaWYgKGNvbnRhaW5l
ck5vZGUgPT0gYWRqdXN0ZWROb2RlKQogICAgICAgICByZXR1cm4gcG9zaXRpb24uY29tcHV0ZU9m
ZnNldEluQ29udGFpbmVyTm9kZSgpOwogCi0gICAgcmV0dXJuIGFkanVzdGVkTm9kZS0+bm9kZUlu
ZGV4KCk7CisgICAgcmV0dXJuIGFkanVzdGVkTm9kZS0+Y29tcHV0ZU5vZGVJbmRleCgpOwogfQog
CiBib29sIERPTVNlbGVjdGlvbjo6aXNWYWxpZEZvclBvc2l0aW9uKE5vZGUqIG5vZGUpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCAxZjMxMjQyYmY1
NmI1MDU4NDUwNGNiNGYyNzM1ODIzOWYyZDZkMWZmLi5lNDk1YzE4MzdmNzIxNzU4YTE1ZWE3MjQy
ZjQ5M2VlMGMyZDU1M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTI2NjAsOCArMjY2MCw4IEBAIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50
UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiBwYXJlbnQsCiAgICAgTGF5
b3V0VW5pdCBjaGlsZE1pZGRsZSA9IHBhcmVudC5sb2dpY2FsV2lkdGhGb3JDaGlsZChjaGlsZCkg
LyAyOwogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBwYXJlbnQuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IHBvaW50SW5DaGlsZENvb3JkaW5hdGVzLngoKSA6IHBvaW50SW5DaGlsZENv
b3JkaW5hdGVzLnkoKTsKICAgICBpZiAobG9naWNhbExlZnQgPCBjaGlsZE1pZGRsZSkKLSAgICAg
ICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRFbGVtZW50LT5u
b2RlSW5kZXgoKSwgRE9XTlNUUkVBTSk7Ci0gICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNp
YmxlUG9zaXRpb24oY2hpbGRFbGVtZW50LT5ub2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsKKyAg
ICAgICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRFbGVtZW50
LT5jb21wdXRlTm9kZUluZGV4KCksIERPV05TVFJFQU0pOworICAgIHJldHVybiBhbmNlc3Rvci0+
Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNoaWxkRWxlbWVudC0+Y29tcHV0ZU5vZGVJbmRleCgpICsg
MSwgVVBTVFJFQU0pOwogfQogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9u
Rm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5k
ZXJSZWdpb24qKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCmluZGV4IDY2ODhlOTY3Nzk5YzIzYjM5NWYxMDUwNThiMGFhNmNkMGVlMWQzMDkuLmVlYWNl
Yjg3ODI0ZTc4MDE3Y2QzYzIxZjg2ZjAxNzFkYWUyNTIxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTgyOCw3ICs4MjgsNyBAQCBzdGF0
aWMgU3RyaW5nIG5vZGVQb3NpdGlvbihOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJ30nKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoImNoaWxkICIpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmROdW1iZXIobi0+bm9kZUluZGV4KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRO
dW1iZXIobi0+Y29tcHV0ZU5vZGVJbmRleCgpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgiIHsiKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGdldFRhZ05h
bWUobikpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>