<?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>140058</bug_id>
          
          <creation_ts>2015-01-04 14:35:48 -0800</creation_ts>
          <short_desc>Get rid of some unnecessary custom StyleBuilder code</short_desc>
          <delta_ts>2015-01-05 10:29:52 -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>CSS</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>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058585</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-04 14:35:48 -0800</bug_when>
    <thetext>Get rid of some unnecessary custom StyleBuilder code and leverage the StyleBuilder generator more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058586</commentid>
    <comment_count>1</comment_count>
      <attachid>243941</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-04 15:12:33 -0800</bug_when>
    <thetext>Created attachment 243941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058606</commentid>
    <comment_count>2</comment_count>
      <attachid>243947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-04 16:11:43 -0800</bug_when>
    <thetext>Created attachment 243947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058653</commentid>
    <comment_count>3</comment_count>
      <attachid>243947</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-04 21:06:48 -0800</bug_when>
    <thetext>Comment on attachment 243947
Patch

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

As usually, my comments are about the code you are moving, not the refactor itself. I didn’t set cq+ but I’m OK if you want to.

&gt; Source/WebCore/css/StyleBuilderConverter.h:898
&gt; +        // For backward compatibility, treat valueless numbers as px.
&gt; +        Ref&lt;CSSPrimitiveValue&gt; value(CSSPrimitiveValue::create(primitiveValue.getDoubleValue(), CSSPrimitiveValue::CSS_PX));
&gt; +        perspective = value.get().computeLength&lt;float&gt;(styleResolver.state().cssToLengthConversionData());

I don’t like this syntax. I prefer the style with the &apos;=&apos; sign or the one with the {} instead of ().

The local variable doesn’t add much. If it didn’t make the line crazy long I’d want to do this all in one line. Maybe a helper function could make that readable? Does this idiom come up elsewhere? The “forcing a value to be px” thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058659</commentid>
    <comment_count>4</comment_count>
      <attachid>243963</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-04 22:02:58 -0800</bug_when>
    <thetext>Created attachment 243963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058668</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-04 22:51:23 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 243947 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243947&amp;action=review
&gt; 
&gt; As usually, my comments are about the code you are moving, not the refactor
&gt; itself. I didn’t set cq+ but I’m OK if you want to.
&gt; 
&gt; &gt; Source/WebCore/css/StyleBuilderConverter.h:898
&gt; &gt; +        // For backward compatibility, treat valueless numbers as px.
&gt; &gt; +        Ref&lt;CSSPrimitiveValue&gt; value(CSSPrimitiveValue::create(primitiveValue.getDoubleValue(), CSSPrimitiveValue::CSS_PX));
&gt; &gt; +        perspective = value.get().computeLength&lt;float&gt;(styleResolver.state().cssToLengthConversionData());
&gt; 
&gt; I don’t like this syntax. I prefer the style with the &apos;=&apos; sign or the one
&gt; with the {} instead of ().
&gt; 
&gt; The local variable doesn’t add much. If it didn’t make the line crazy long
&gt; I’d want to do this all in one line. Maybe a helper function could make that
&gt; readable? Does this idiom come up elsewhere? The “forcing a value to be px”
&gt; thing?

Replaced with:
perspective = primitiveValue.getDoubleValue() * styleResolver.state().cssToLengthConversionData().zoom();

Constructing a new CSSPrimitiveValue just for this seems wasteful. computeLength&lt;&gt;() will do just that if the value is in pixels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058732</commentid>
    <comment_count>6</comment_count>
      <attachid>243963</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-05 10:29:47 -0800</bug_when>
    <thetext>Comment on attachment 243963
Patch

Clearing flags on attachment: 243963

Committed r177915: &lt;http://trac.webkit.org/changeset/177915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058733</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-05 10:29:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243941</attachid>
            <date>2015-01-04 15:12:33 -0800</date>
            <delta_ts>2015-01-04 16:11:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140058-20150104151237.patch</filename>
            <type>text/plain</type>
            <size>14960</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1NDI5NWFiMmExZjkx
ODNkMmJlZWEyMWNjNjcxYTE0YzEwOWJiYi4uMjMwOTcwYTQzYjExZDdiMmZkNzUxMWU5ZTc4M2Ux
MjBlZjc4NjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAxLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBzb21lIHVu
bmVjZXNzYXJ5IGN1c3RvbSBTdHlsZUJ1aWxkZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0IHJpZCBvZiBzb21lIHVubmVjZXNzYXJ5IGN1
c3RvbSBTdHlsZUJ1aWxkZXIgY29kZS4gVGhlIGdlbmVyYXRvciBpcworICAgICAgICBhYmxlIHRv
IGdlbmVyYXRlIHRoaXMgY29kZSBqdXN0IGZpbmUuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVj
dGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRN
YXJxdWVlSW5jcmVtZW50KToKKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRNYXJx
dWVlSW5jcmVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1
c3RvbTo6YXBwbHlWYWx1ZVdvcmRTcGFjaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVX
ZWJraXRQZXJzcGVjdGl2ZSk6IERlbGV0ZWQuCisKIDIwMTUtMDEtMDIgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBHbHlwaFBhZ2VUcmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDBmMWIyYzE0ZDY0MmUyNWYwMWIx
Nzk0MDg0MmYyZjNlYmUxNDA5NDUuLjU0ZGY5YmE4NDE5OGVmZGU1NTMzN2Y1OTllN2E1M2ZhY2M0
ZDBmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0xMDcsNyAr
MTA3LDcgQEAgdGV4dC1yZW5kZXJpbmcgW0luaGVyaXRlZCwgRm9udFByb3BlcnR5LCBUeXBlTmFt
ZT1UZXh0UmVuZGVyaW5nTW9kZSwgTmFtZUZvck1ldGgKIC13ZWJraXQtZm9udC1zbW9vdGhpbmcg
W0luaGVyaXRlZCwgRm9udFByb3BlcnR5LCBUeXBlTmFtZT1Gb250U21vb3RoaW5nTW9kZV0KIC13
ZWJraXQtZm9udC12YXJpYW50LWxpZ2F0dXJlcyBbSW5oZXJpdGVkLCBDdXN0b209QWxsXQogLXdl
YmtpdC1sb2NhbGUgW0luaGVyaXRlZCwgQ3VzdG9tPVZhbHVlXQotLXdlYmtpdC10ZXh0LW9yaWVu
dGF0aW9uIFtJbmhlcml0ZWQsIEN1c3RvbT1WYWx1ZV0KKy13ZWJraXQtdGV4dC1vcmllbnRhdGlv
biBbSW5oZXJpdGVkLCBUeXBlTmFtZT1UZXh0T3JpZW50YXRpb25dCiAtZXB1Yi10ZXh0LW9yaWVu
dGF0aW9uID0gLXdlYmtpdC10ZXh0LW9yaWVudGF0aW9uCiAjaWYgZGVmaW5lZChFTkFCTEVfSU9T
X1RFWFRfQVVUT1NJWklORykgJiYgRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkcKIC13ZWJraXQt
dGV4dC1zaXplLWFkanVzdCBbSW5oZXJpdGVkLCBMZWdhY3lTdHlsZUJ1aWxkZXJdCkBAIC0zMDMs
NyArMzAzLDcgQEAgd2lkb3dzIFtJbmhlcml0ZWQsIFR5cGVOYW1lPXNob3J0LCBBdXRvRnVuY3Rp
b25zXQogd2lkdGggW0luaXRpYWw9aW5pdGlhbFNpemUsIENvbnZlcnRlcj1MZW5ndGhTaXppbmdd
CiB3b3JkLWJyZWFrIFtJbmhlcml0ZWRdCiAtZXB1Yi13b3JkLWJyZWFrID0gd29yZC1icmVhawot
d29yZC1zcGFjaW5nIFtJbmhlcml0ZWQsIEN1c3RvbT1WYWx1ZV0KK3dvcmQtc3BhY2luZyBbSW5o
ZXJpdGVkLCBDb25kaXRpb25hbENvbnZlcnRlcj1Xb3JkU3BhY2luZywgVHlwZU5hbWU9TGVuZ3Ro
XQogd29yZC13cmFwIFtJbmhlcml0ZWQ9RU92ZXJmbG93V3JhcCwgTmFtZUZvck1ldGhvZHM9T3Zl
cmZsb3dXcmFwXQogei1pbmRleCBbVHlwZU5hbWU9aW50LCBBdXRvRnVuY3Rpb25zXQogYWx0IFtM
ZWdhY3lTdHlsZUJ1aWxkZXJdCkBAIC00NjksNyArNDY5LDcgQEAganVzdGlmeS1jb250ZW50CiAt
d2Via2l0LW1hcmdpbi1zdGFydCBbTGVnYWN5U3R5bGVCdWlsZGVyXQogLXdlYmtpdC1tYXJxdWVl
IFtMZWdhY3lTdHlsZUJ1aWxkZXJdCiAtd2Via2l0LW1hcnF1ZWUtZGlyZWN0aW9uCi0td2Via2l0
LW1hcnF1ZWUtaW5jcmVtZW50IFtDdXN0b209VmFsdWVdCistd2Via2l0LW1hcnF1ZWUtaW5jcmVt
ZW50IFtDb25kaXRpb25hbENvbnZlcnRlcj1NYXJxdWVlSW5jcmVtZW50LCBUeXBlTmFtZT1MZW5n
dGhdCiAtd2Via2l0LW1hcnF1ZWUtcmVwZXRpdGlvbiBbTmFtZUZvck1ldGhvZHM9TWFycXVlZUxv
b3BDb3VudCwgQ29udmVydGVyPU1hcnF1ZWVSZXBldGl0aW9uXQogLXdlYmtpdC1tYXJxdWVlLXNw
ZWVkIFtDb252ZXJ0ZXI9TWFycXVlZVNwZWVkXQogLXdlYmtpdC1tYXJxdWVlLXN0eWxlIFtUeXBl
TmFtZT1FTWFycXVlZUJlaGF2aW9yLCBOYW1lRm9yTWV0aG9kcz1NYXJxdWVlQmVoYXZpb3JdCkBA
IC01MDMsNyArNTAzLDcgQEAgb3JkZXIgW1R5cGVOYW1lPWludF0KIC13ZWJraXQtcGFkZGluZy1i
ZWZvcmUgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KIC13ZWJraXQtcGFkZGluZy1lbmQgW0xlZ2FjeVN0
eWxlQnVpbGRlcl0KIC13ZWJraXQtcGFkZGluZy1zdGFydCBbTGVnYWN5U3R5bGVCdWlsZGVyXQot
LXdlYmtpdC1wZXJzcGVjdGl2ZSBbQ3VzdG9tPVZhbHVlXQorLXdlYmtpdC1wZXJzcGVjdGl2ZSBb
Q29uZGl0aW9uYWxDb252ZXJ0ZXI9UGVyc3BlY3RpdmUsIFR5cGVOYW1lPWZsb2F0XQogLXdlYmtp
dC1wZXJzcGVjdGl2ZS1vcmlnaW4gW0xlZ2FjeVN0eWxlQnVpbGRlcl0KIC13ZWJraXQtcGVyc3Bl
Y3RpdmUtb3JpZ2luLXggW0NvbnZlcnRlcj1MZW5ndGhdCiAtd2Via2l0LXBlcnNwZWN0aXZlLW9y
aWdpbi15IFtDb252ZXJ0ZXI9TGVuZ3RoXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRl
ckNvbnZlcnRlci5oCmluZGV4IGVkMGFkOTNjNTU5NTUzMzAxYmU5NDcwMWE0NGRiZmZiNjBmZWEw
ZTguLjVkM2FhOGE1ZThiZjk3MjFiMDYzYWZlZDVkYzYwNGNjOGU5NTI4NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NSZWZsZWN0VmFsdWUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJRdW90ZXNEYXRhLmgi
CkBAIC04Niw2ICs4Nyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBjb252ZXJ0R3JpZFBv
c2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOwogICAgIHN0
YXRpYyBHcmlkQXV0b0Zsb3cgY29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVyJiwgQ1NT
VmFsdWUmKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIHN0YXRpYyBi
b29sIGNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmLCBMZW5ndGgm
KTsKKyAgICBzdGF0aWMgYm9vbCBjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJiwgZmxvYXQmKTsKKyAgICBzdGF0aWMgYm9vbCBjb252ZXJ0TWFycXVlZUluY3JlbWVu
dChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmLCBMZW5ndGgmKTsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyQ3VzdG9tOwpAQCAtMTAwLDYgKzEwNCw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIGJvb2wgY3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlJiwgR3JpZFBv
c2l0aW9uJik7CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlSW1wbGljaXROYW1lZEdyaWRMaW5lc0Zy
b21HcmlkQXJlYShjb25zdCBOYW1lZEdyaWRBcmVhTWFwJiwgTmFtZWRHcmlkTGluZXNNYXAmLCBH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pOwogI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlP
VVQpCisgICAgc3RhdGljIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252
ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJik7CiB9OwogCiBpbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC04NTIsNiArODU3LDc1IEBA
IGlubGluZSBHcmlkQXV0b0Zsb3cgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R3JpZEF1
dG9GbG93KFN0eWxlUmVzb2x2ZXImLCBDCiB9CiAjZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKIAoraW5saW5lIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gc3R5bGVS
ZXNvbHZlci5kb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVy
LnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29t
KHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICogZnJhbWUtPnRleHRab29t
RmFjdG9yKCkpOworCisgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0
aENvbnZlcnNpb25EYXRhKCk7Cit9CisKK2lubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlJiB2YWx1ZSwgTGVuZ3RoJiB3b3JkU3BhY2luZykKK3sKKyAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICAgICAgd29yZFNw
YWNpbmcgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRTcGFjaW5nKCk7CisgICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkKKyAgICAgICAgd29yZFNwYWNpbmcgPSBwcmltaXRp
dmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdp
dGhUZXh0Wm9vbUZhY3RvcihzdHlsZVJlc29sdmVyKSk7CisgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUuaXNQZXJjZW50YWdlKCkpCisgICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKGNsYW1w
VG88ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIG1pblZhbHVlRm9yQ3Nz
TGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCisgICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIEZpeGVkKTsKKyAgICBlbHNlCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUsIGZsb2F0JiBwZXJzcGVjdGl2ZSkKK3sKKyAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsK
KyAgICAgICAgcGVyc3BlY3RpdmUgPSAwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
KyAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkKKyAgICAgICAgcGVyc3BlY3RpdmUg
PSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVyLnN0YXRl
KCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5
LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KKyAgICAgICAgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiB2YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2ZVZhbHVlLmdl
dERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgcGVy
c3BlY3RpdmUgPSB2YWx1ZS5nZXQoKS5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVy
LnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiBwZXJzcGVjdGl2ZSA+PSAwOworfQorCitpbmxpbmUgYm9vbCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSwgTGVuZ3RoJiBtYXJxdWVlTGVuZ3RoKQorewor
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIGNh
c2UgQ1NTVmFsdWVTbWFsbDoKKyAgICAgICAgbWFycXVlZUxlbmd0aCA9IExlbmd0aCgxLCBGaXhl
ZCk7IC8vIDFweC4KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBDU1NWYWx1ZU5vcm1h
bDoKKyAgICAgICAgbWFycXVlZUxlbmd0aCA9IExlbmd0aCg2LCBGaXhlZCk7IC8vIDZweC4gVGhl
IFdpbklFIGRlZmF1bHQuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NTVmFsdWVM
YXJnZToKKyAgICAgICAgbWFycXVlZUxlbmd0aCA9IExlbmd0aCgzNiwgRml4ZWQpOyAvLyAzNnB4
LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKKyAgICAg
ICAgbWFycXVlZUxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxGaXhlZElu
dGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lv
bj4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5
V2l0aEFkanVzdGVkWm9vbSgxLjBmKSk7CisgICAgICAgIHJldHVybiAhbWFycXVlZUxlbmd0aC5p
c1VuZGVmaW5lZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFN0
eWxlQnVpbGRlckNvbnZlcnRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9t
LmgKaW5kZXggMDRlZDBmZGNkY2I2NzZkNzZlZjY4YTRmMTg2ZGJiOWM1NmE4Nzc1Mi4uZTc0YWVm
YzhjNGNkM2U5ZDFkNzZmZWRmZGEzYjQ3NzRkMDk0MzM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtMTAyLDE1ICsxMDIsMTAgQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRKdXN0aWZ5U2VsZihTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0TG9j
YWxlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWVXZWJraXRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwotICAg
IHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXZWJraXRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0VGV4dE9yaWVudGF0
aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWVXZWJraXRXcml0aW5nTW9kZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgdm9pZCBhcHBseVZhbHVlV29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRFZmZlY3RpdmVab29tKFN0eWxlUmVz
b2x2ZXImKTsKLSAgICBzdGF0aWMgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjc3N0b0xlbmd0
aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKFN0eWxlUmVzb2x2ZXImKTsKICAgICBz
dGF0aWMgYm9vbCBjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmLCBMZW5ndGgmLCBmbG9hdCBtdWx0aXBsaWVyID0gMS5mKTsKIAogICAgIHN0YXRpYyBMZW5n
dGggbW1MZW5ndGgoZG91YmxlIG1tKTsKQEAgLTEzMiwzMCArMTI3LDYgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgZmxvYXQgZGV0ZXJtaW5lUnVieVRleHRTaXplTXVsdGlwbGllcihTdHlsZVJlc29s
dmVyJik7CiB9OwogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVX
ZWJraXRNYXJxdWVlSW5jcmVtZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlJiB2YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgTGVuZ3RoIG1hcnF1ZWVMZW5ndGgoVW5kZWZpbmVk
KTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgewotICAgIGNhc2Ug
Q1NTVmFsdWVTbWFsbDoKLSAgICAgICAgbWFycXVlZUxlbmd0aCA9IExlbmd0aCgxLCBGaXhlZCk7
IC8vIDFweC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKLSAgICAg
ICAgbWFycXVlZUxlbmd0aCA9IExlbmd0aCg2LCBGaXhlZCk7IC8vIDZweC4gVGhlIFdpbklFIGRl
ZmF1bHQuCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVMYXJnZToKLSAgICAgICAg
bWFycXVlZUxlbmd0aCA9IExlbmd0aCgzNiwgRml4ZWQpOyAvLyAzNnB4LgotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKLSAgICAgICAgbWFycXVlZUxlbmd0aCA9IHBy
aW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVy
Y2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oc3R5bGVSZXNvbHZlci5zdGF0
ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBm
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBpZiAoIW1hcnF1ZWVMZW5ndGguaXNVbmRlZmluZWQoKSkKLSAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRNYXJxdWVlSW5jcmVtZW50KG1hcnF1ZWVMZW5ndGgpOwotfQotCiBp
bmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVEaXJlY3Rpb24oU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0RGlyZWN0aW9uKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkpOwpAQCAtNTYwLDE0ICs1MzEsNiBAQCBERUZJTkVfQk9SREVSX0lNQUdFX01PRElGSUVS
X0hBTkRMRVIoV2Via2l0TWFza0JveEltYWdlLCBSZXBlYXQpCiBERUZJTkVfQk9SREVSX0lNQUdF
X01PRElGSUVSX0hBTkRMRVIoV2Via2l0TWFza0JveEltYWdlLCBTbGljZSkKIERFRklORV9CT1JE
RVJfSU1BR0VfTU9ESUZJRVJfSEFORExFUihXZWJraXRNYXNrQm94SW1hZ2UsIFdpZHRoKQogCi1p
bmxpbmUgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBTdHlsZUJ1aWxkZXJDdXN0b206OmNzc3Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlcikKLXsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gc3R5bGVSZXNvbHZlci5kb2N1
bWVudCgpLmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICogZnJhbWUtPnRleHRab29tRmFjdG9yKCkpOwot
Ci0gICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCk7Ci19Ci0KIGlubGluZSBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6Y29udmVydExpbmVI
ZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
LCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CkBAIC01NzYsNyAr
NTM5LDcgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpjb252ZXJ0TGluZUhlaWdo
dChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpIHsKLSAgICAgICAgbGVuZ3Ro
ID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNzc3RvTGVuZ3RoQ29udmVy
c2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3Ioc3R5bGVSZXNvbHZlcikpOworICAgICAgICBsZW5n
dGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKHN0eWxl
UmVzb2x2ZXIpKTsKICAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMS5mKQogICAgICAgICAgICAg
bGVuZ3RoID0gTGVuZ3RoKGxlbmd0aC52YWx1ZSgpICogbXVsdGlwbGllciwgRml4ZWQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU5NCwyNCArNTU3LDYgQEAgaW5saW5lIGJvb2wgU3R5bGVC
dWlsZGVyQ3VzdG9tOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlV29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLQotICAgIExlbmd0aCB3b3JkU3BhY2luZzsKLSAg
ICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQotICAg
ICAgICB3b3JkU3BhY2luZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmcoKTsKLSAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKQotICAgICAgICB3b3JkU3BhY2lu
ZyA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjc3N0b0xlbmd0aENvbnZl
cnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKHN0eWxlUmVzb2x2ZXIpKTsKLSAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgd29yZFNwYWNpbmcgPSBM
ZW5ndGgoY2xhbXBUbzxmbG9hdD4ocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSwgbWlu
VmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVuZ3RoKSwgUGVyY2VudCk7Ci0gICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgd29yZFNwYWNpbmcg
PSBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSwgRml4ZWQpOwotICAgIGVs
c2UKLSAgICAgICAgcmV0dXJuOwotICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0V29yZFNw
YWNpbmcod29yZFNwYWNpbmcpOwotfQotCiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcp
CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0TGluZUhlaWdo
dChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQpAQCAtNzI3LDExICs2NzIsNiBAQCBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRXcml0aW5nTW9kZShT
dHlsZVJlc29sdmVyJiBzdHlsZQogICAgICAgICBzdGF0ZS5kb2N1bWVudCgpLnNldFdyaXRpbmdN
b2RlU2V0T25Eb2N1bWVudEVsZW1lbnQodHJ1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbihTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAgc3R5bGVSZXNvbHZlci5z
ZXRUZXh0T3JpZW50YXRpb24oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7Ci19
Ci0KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEp1c3Rp
ZnlTZWxmKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7CkBAIC03NDMsMzEgKzY4Myw2IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZVdlYmtpdEp1c3RpZnlTZWxmKFN0eWxlUmVzb2x2ZXImIHN0eWxlCiAgICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeVNlbGYocHJpbWl0aXZlVmFsdWUp
OwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRQ
ZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUp
Ci17Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwotCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vbmUpIHsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRQZXJzcGVjdGl2
ZSgwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFs
dWU7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCi0gICAgICAgIHBlcnNwZWN0
aXZlVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29s
dmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKLSAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21w
YXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAgICAgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2
ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAg
ICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHZhbHVlLmdldCgpLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZVZhbHVlKTsKLX0K
LQogdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243947</attachid>
            <date>2015-01-04 16:11:43 -0800</date>
            <delta_ts>2015-01-04 22:02:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140058-20150104161147.patch</filename>
            <type>text/plain</type>
            <size>14005</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1NDI5NWFiMmExZjkx
ODNkMmJlZWEyMWNjNjcxYTE0YzEwOWJiYi4uYTg2MGQwYjFiNjEyOWMxZGVmOTI0ZmI1ZTM1ZDQ3
NGQxYzc2MWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAxLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBzb21lIHVu
bmVjZXNzYXJ5IGN1c3RvbSBTdHlsZUJ1aWxkZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2V0IHJpZCBvZiBzb21lIHVubmVjZXNzYXJ5IGN1
c3RvbSBTdHlsZUJ1aWxkZXIgY29kZS4gVGhlIGdlbmVyYXRvciBpcworICAgICAgICBub3cgYWJs
ZSB0byBnZW5lcmF0ZSB0aGlzIGNvZGUganVzdCBmaW5lLgorCisgICAgICAgICogY3NzL0NTU1By
b3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZl
cnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQpOgorICAg
ICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckN1c3RvbTo6Y29udmVydExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TWFycXVlZUluY3JlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmNzc3RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV29yZFNwYWNpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0UGVy
c3BlY3RpdmUpOiBEZWxldGVkLgorCiAyMDE1LTAxLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgR2x5cGhQYWdlVHJlZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCAwZjFiMmMxNGQ2NDJlMjVmMDFiMTc5NDA4NDJm
MmYzZWJlMTQwOTQ1Li4xOTMwNWJiOWMzZTIxYjYyZTI4ZmQ5NDI2ZWQzYjA0ZTI1MmRmMzViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMzAzLDcgKzMwMyw3IEBA
IHdpZG93cyBbSW5oZXJpdGVkLCBUeXBlTmFtZT1zaG9ydCwgQXV0b0Z1bmN0aW9uc10KIHdpZHRo
IFtJbml0aWFsPWluaXRpYWxTaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogd29yZC1icmVh
ayBbSW5oZXJpdGVkXQogLWVwdWItd29yZC1icmVhayA9IHdvcmQtYnJlYWsKLXdvcmQtc3BhY2lu
ZyBbSW5oZXJpdGVkLCBDdXN0b209VmFsdWVdCit3b3JkLXNwYWNpbmcgW0luaGVyaXRlZCwgQ29u
ZGl0aW9uYWxDb252ZXJ0ZXI9V29yZFNwYWNpbmcsIFR5cGVOYW1lPUxlbmd0aF0KIHdvcmQtd3Jh
cCBbSW5oZXJpdGVkPUVPdmVyZmxvd1dyYXAsIE5hbWVGb3JNZXRob2RzPU92ZXJmbG93V3JhcF0K
IHotaW5kZXggW1R5cGVOYW1lPWludCwgQXV0b0Z1bmN0aW9uc10KIGFsdCBbTGVnYWN5U3R5bGVC
dWlsZGVyXQpAQCAtNDY5LDcgKzQ2OSw3IEBAIGp1c3RpZnktY29udGVudAogLXdlYmtpdC1tYXJn
aW4tc3RhcnQgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KIC13ZWJraXQtbWFycXVlZSBbTGVnYWN5U3R5
bGVCdWlsZGVyXQogLXdlYmtpdC1tYXJxdWVlLWRpcmVjdGlvbgotLXdlYmtpdC1tYXJxdWVlLWlu
Y3JlbWVudCBbQ3VzdG9tPVZhbHVlXQorLXdlYmtpdC1tYXJxdWVlLWluY3JlbWVudCBbQ29uZGl0
aW9uYWxDb252ZXJ0ZXI9TWFycXVlZUluY3JlbWVudCwgVHlwZU5hbWU9TGVuZ3RoXQogLXdlYmtp
dC1tYXJxdWVlLXJlcGV0aXRpb24gW05hbWVGb3JNZXRob2RzPU1hcnF1ZWVMb29wQ291bnQsIENv
bnZlcnRlcj1NYXJxdWVlUmVwZXRpdGlvbl0KIC13ZWJraXQtbWFycXVlZS1zcGVlZCBbQ29udmVy
dGVyPU1hcnF1ZWVTcGVlZF0KIC13ZWJraXQtbWFycXVlZS1zdHlsZSBbVHlwZU5hbWU9RU1hcnF1
ZWVCZWhhdmlvciwgTmFtZUZvck1ldGhvZHM9TWFycXVlZUJlaGF2aW9yXQpAQCAtNTAzLDcgKzUw
Myw3IEBAIG9yZGVyIFtUeXBlTmFtZT1pbnRdCiAtd2Via2l0LXBhZGRpbmctYmVmb3JlIFtMZWdh
Y3lTdHlsZUJ1aWxkZXJdCiAtd2Via2l0LXBhZGRpbmctZW5kIFtMZWdhY3lTdHlsZUJ1aWxkZXJd
CiAtd2Via2l0LXBhZGRpbmctc3RhcnQgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLS13ZWJraXQtcGVy
c3BlY3RpdmUgW0N1c3RvbT1WYWx1ZV0KKy13ZWJraXQtcGVyc3BlY3RpdmUgW0NvbmRpdGlvbmFs
Q29udmVydGVyPVBlcnNwZWN0aXZlLCBUeXBlTmFtZT1mbG9hdF0KIC13ZWJraXQtcGVyc3BlY3Rp
dmUtb3JpZ2luIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCiAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdp
bi14IFtDb252ZXJ0ZXI9TGVuZ3RoXQogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teSBbQ29u
dmVydGVyPUxlbmd0aF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aAppbmRleCBlZDBhZDkzYzU1OTU1MzMwMWJlOTQ3MDFhNDRkYmZmYjYwZmVhMGU4Li41ZDNhYThh
NWU4YmY5NzIxYjA2M2FmZWQ1ZGM2MDRjYzhlOTUyODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ1NT
SW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTUmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJMZW5ndGgu
aCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgpAQCAtODYsNiAr
ODcsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY29udmVydEdyaWRQb3NpdGlvbihTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmLCBHcmlkUG9zaXRpb24mKTsKICAgICBzdGF0aWMgR3JpZEF1
dG9GbG93IGNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAj
ZW5kaWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICBzdGF0aWMgYm9vbCBjb252ZXJ0
V29yZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiwgTGVuZ3RoJik7CisgICAgc3Rh
dGljIGJvb2wgY29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYsIGZs
b2F0Jik7CisgICAgc3RhdGljIGJvb2wgY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJiwgTGVuZ3RoJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IFN0eWxlQnVpbGRlckN1c3RvbTsKQEAgLTEwMCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOwog
ICAgIHN0YXRpYyB2b2lkIGNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEo
Y29uc3QgTmFtZWRHcmlkQXJlYU1hcCYsIE5hbWVkR3JpZExpbmVzTWFwJiwgR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIHN0
YXRpYyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFX
aXRoVGV4dFpvb21GYWN0b3IoU3R5bGVSZXNvbHZlciYpOwogfTsKIAogaW5saW5lIExlbmd0aCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtODUyLDYgKzg1Nyw3NSBAQCBpbmxpbmUgR3Jp
ZEF1dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHls
ZVJlc29sdmVyJiwgQwogfQogI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKK2lu
bGluZSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3Nz
dG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyKQoreworICAgIGlmIChhdXRvKiBmcmFtZSA9IHN0eWxlUmVzb2x2ZXIuZG9j
dW1lbnQoKS5mcmFtZSgpKQorICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbShzdHlsZVJlc29s
dmVyLnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSAqIGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpKTsK
KworICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSgpOworfQorCitpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRX
b3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUs
IExlbmd0aCYgd29yZFNwYWNpbmcpCit7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIGlmIChwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHdvcmRTcGFjaW5nID0gUmVu
ZGVyU3R5bGU6OmluaXRpYWxXb3JkU3BhY2luZygpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzTGVuZ3RoKCkpCisgICAgICAgIHdvcmRTcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUuY29t
cHV0ZUxlbmd0aDxMZW5ndGg+KGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21G
YWN0b3Ioc3R5bGVSZXNvbHZlcikpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVy
Y2VudGFnZSgpKQorICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChjbGFtcFRvPGZsb2F0Pihw
cmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZvckNzc0xlbmd0aCwgbWF4
VmFsdWVGb3JDc3NMZW5ndGgpLCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS5pc051bWJlcigpKQorICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChwcmltaXRpdmVWYWx1
ZS5nZXREb3VibGVWYWx1ZSgpLCBGaXhlZCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTVmFsdWUmIHZhbHVlLCBmbG9hdCYgcGVyc3BlY3RpdmUpCit7CisgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgIHBl
cnNwZWN0aXZlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCisgICAgICAgIHBlcnNwZWN0aXZlID0gcHJpbWl0aXZl
VmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEoKSk7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1i
ZXIoKSkgeworICAgICAgICAvLyBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdHJlYXQgdmFs
dWVsZXNzIG51bWJlcnMgYXMgcHguCisgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwcmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CisgICAgICAgIHBlcnNwZWN0aXZlID0g
dmFsdWUuZ2V0KCkuY29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gcGVyc3BlY3RpdmUgPj0gMDsKK30KKworaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdmFsdWUsIExlbmd0aCYgbWFycXVlZUxlbmd0aCkKK3sKKyAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAg
c3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVl
U21hbGw6CisgICAgICAgIG1hcnF1ZWVMZW5ndGggPSBMZW5ndGgoMSwgRml4ZWQpOyAvLyAxcHgu
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgICAg
IG1hcnF1ZWVMZW5ndGggPSBMZW5ndGgoNiwgRml4ZWQpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZh
dWx0LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIENTU1ZhbHVlTGFyZ2U6CisgICAg
ICAgIG1hcnF1ZWVMZW5ndGggPSBMZW5ndGgoMzYsIEZpeGVkKTsgLy8gMzZweC4KKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6CisgICAgICAgIG1hcnF1ZWVM
ZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVy
c2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KHN0eWxlUmVz
b2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3Rl
ZFpvb20oMS4wZikpOworICAgICAgICByZXR1cm4gIW1hcnF1ZWVMZW5ndGguaXNVbmRlZmluZWQo
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1
c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IDA0
ZWQwZmRjZGNiNjc2ZDc2ZWY2OGE0ZjE4NmRiYjljNTZhODc3NTIuLjRjMTZiYmUzYWU2YzUyZDAw
Yzk1Zjg1ODc2ODdkY2QyYWIxZDNlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVy
Q3VzdG9tLmgKQEAgLTEwMiwxNSArMTAyLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBh
cHBseVZhbHVlVmVydGljYWxBbGlnbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBz
dGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0SnVzdGlmeVNlbGYoU3R5bGVSZXNvbHZlciYsIENT
U1ZhbHVlJik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdExvY2FsZShTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0TWFy
cXVlZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmKTsKLSAgICBzdGF0aWMgdm9p
ZCBhcHBseVZhbHVlV2Via2l0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7
CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFRleHRPcmllbnRhdGlvbihTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlV2Via2l0V3Jp
dGluZ01vZGUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZVdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogCiBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIHJlc2V0RWZmZWN0aXZlWm9vbShTdHlsZVJlc29sdmVyJik7Ci0g
ICAgc3RhdGljIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY3NzdG9MZW5ndGhDb252ZXJzaW9u
RGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJik7CiAgICAgc3RhdGljIGJvb2wg
Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiwgTGVuZ3Ro
JiwgZmxvYXQgbXVsdGlwbGllciA9IDEuZik7CiAKICAgICBzdGF0aWMgTGVuZ3RoIG1tTGVuZ3Ro
KGRvdWJsZSBtbSk7CkBAIC0xMzIsMzAgKzEyOCw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGZs
b2F0IGRldGVybWluZVJ1YnlUZXh0U2l6ZU11bHRpcGxpZXIoU3R5bGVSZXNvbHZlciYpOwogfTsK
IAotaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TWFycXVl
ZUluY3JlbWVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUp
Ci17Ci0gICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpOwotICAgIExlbmd0aCBtYXJxdWVlTGVuZ3RoKFVuZGVmaW5lZCk7Ci0gICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKLSAgICBjYXNlIENTU1ZhbHVlU21h
bGw6Ci0gICAgICAgIG1hcnF1ZWVMZW5ndGggPSBMZW5ndGgoMSwgRml4ZWQpOyAvLyAxcHguCi0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgIG1hcnF1ZWVM
ZW5ndGggPSBMZW5ndGgoNiwgRml4ZWQpOyAvLyA2cHguIFRoZSBXaW5JRSBkZWZhdWx0LgotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTGFyZ2U6Ci0gICAgICAgIG1hcnF1ZWVMZW5n
dGggPSBMZW5ndGgoMzYsIEZpeGVkKTsgLy8gMzZweC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NWYWx1ZUludmFsaWQ6Ci0gICAgICAgIG1hcnF1ZWVMZW5ndGggPSBwcmltaXRpdmVWYWx1
ZS5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJz
aW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKCFt
YXJxdWVlTGVuZ3RoLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0TWFycXVlZUluY3JlbWVudChtYXJxdWVlTGVuZ3RoKTsKLX0KLQogaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRGlyZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldERpcmVjdGlvbihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKQEAg
LTU2MCwxNCArNTMyLDYgQEAgREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklFUl9IQU5ETEVSKFdl
YmtpdE1hc2tCb3hJbWFnZSwgUmVwZWF0KQogREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklFUl9I
QU5ETEVSKFdlYmtpdE1hc2tCb3hJbWFnZSwgU2xpY2UpCiBERUZJTkVfQk9SREVSX0lNQUdFX01P
RElGSUVSX0hBTkRMRVIoV2Via2l0TWFza0JveEltYWdlLCBXaWR0aCkKIAotaW5saW5lIENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEgU3R5bGVCdWlsZGVyQ3VzdG9tOjpjc3N0b0xlbmd0aENvbnZl
cnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIp
Ci17Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5mcmFt
ZSgpKQotICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbShzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PmVmZmVjdGl2ZVpvb20oKSAqIGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpKTsKLQotICAgIHJldHVy
biBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpOwotfQot
CiBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgTGVuZ3RoJiBs
ZW5ndGgsIGZsb2F0IG11bHRpcGxpZXIpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwpAQCAtNTc2LDcgKzU0MCw3IEBAIGlu
bGluZSBib29sIFN0eWxlQnVpbGRlckN1c3RvbTo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlm
IChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKSB7Ci0gICAgICAgIGxlbmd0aCA9IHByaW1pdGl2
ZVZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0
aFRleHRab29tRmFjdG9yKHN0eWxlUmVzb2x2ZXIpKTsKKyAgICAgICAgbGVuZ3RoID0gcHJpbWl0
aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3Nz
dG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihzdHlsZVJlc29sdmVyKSk7
CiAgICAgICAgIGlmIChtdWx0aXBsaWVyICE9IDEuZikKICAgICAgICAgICAgIGxlbmd0aCA9IExl
bmd0aChsZW5ndGgudmFsdWUoKSAqIG11bHRpcGxpZXIsIEZpeGVkKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC01OTQsMjQgKzU1OCw2IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckN1c3Rv
bTo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZVdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2
YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7Ci0KLSAgICBMZW5ndGggd29yZFNwYWNpbmc7Ci0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKLSAgICAgICAgd29yZFNw
YWNpbmcgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRTcGFjaW5nKCk7Ci0gICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkKLSAgICAgICAgd29yZFNwYWNpbmcgPSBwcmltaXRp
dmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdp
dGhUZXh0Wm9vbUZhY3RvcihzdHlsZVJlc29sdmVyKSk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUuaXNQZXJjZW50YWdlKCkpCi0gICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKGNsYW1w
VG88ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIG1pblZhbHVlRm9yQ3Nz
TGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIFBlcmNlbnQpOwotICAgIGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIEZpeGVkKTsKLSAgICBlbHNlCi0gICAgICAg
IHJldHVybjsKLSAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFdvcmRTcGFjaW5nKHdvcmRT
cGFjaW5nKTsKLX0KLQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdExpbmVIZWlnaHQoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlcikKQEAgLTc0MywzMSArNjg5LDYgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0SnVzdGlmeVNlbGYoU3R5bGVSZXNvbHZl
ciYgc3R5bGUKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRKdXN0aWZ5U2VsZihw
cmltaXRpdmVWYWx1ZSk7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVdlYmtpdFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENT
U1ZhbHVlJiB2YWx1ZSkKLXsKLSAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0KLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSkgewotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldFBlcnNwZWN0aXZlKDApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZmxvYXQg
cGVyc3BlY3RpdmVWYWx1ZTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkKLSAg
ICAgICAgcGVyc3BlY3RpdmVWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8Zmxv
YXQ+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwot
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgLy8gRm9y
IGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRyZWF0IHZhbHVlbGVzcyBudW1iZXJzIGFzIHB4Lgot
ICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCkpOwotICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gdmFsdWUuZ2V0KCkuY29tcHV0
ZUxlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAocGVyc3BlY3RpdmVWYWx1ZSA+PSAwLjBm
KQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFBlcnNwZWN0aXZlKHBlcnNwZWN0
aXZlVmFsdWUpOwotfQotCiB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243963</attachid>
            <date>2015-01-04 22:02:58 -0800</date>
            <delta_ts>2015-01-05 10:29:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140058-20150104220302.patch</filename>
            <type>text/plain</type>
            <size>13808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1NDI5NWFiMmExZjkx
ODNkMmJlZWEyMWNjNjcxYTE0YzEwOWJiYi4uM2Y4OWU4ZDcxYTI5ZjI4ZmY3NjkyZGNhMjYzYzMy
MzhhNjlmOGNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTAxLTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBzb21lIHVu
bmVjZXNzYXJ5IGN1c3RvbSBTdHlsZUJ1aWxkZXIgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMDU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgR2V0IHJpZCBvZiBzb21lIHVubmVjZXNzYXJ5IGN1c3Rv
bSBTdHlsZUJ1aWxkZXIgY29kZS4gVGhlIGdlbmVyYXRvciBpcworICAgICAgICBub3cgYWJsZSB0
byBnZW5lcmF0ZSB0aGlzIGNvZGUganVzdCBmaW5lLgorCisgICAgICAgICogY3NzL0NTU1Byb3Bl
cnR5TmFtZXMuaW46CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjc3N0b0xlbmd0aENvbnZlcnNp
b25EYXRhV2l0aFRleHRab29tRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQpOgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckN1c3RvbTo6Y29udmVydExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TWFycXVlZUluY3JlbWVudCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUJ1aWxkZXJDdXN0b206OmNzc3RvTGVuZ3RoQ29udmVy
c2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV29yZFNwYWNpbmcpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0UGVyc3Bl
Y3RpdmUpOiBEZWxldGVkLgorCiAyMDE1LTAxLTAyICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgR2x5cGhQYWdlVHJlZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCAwZjFiMmMxNGQ2NDJlMjVmMDFiMTc5NDA4NDJmMmYz
ZWJlMTQwOTQ1Li4xOTMwNWJiOWMzZTIxYjYyZTI4ZmQ5NDI2ZWQzYjA0ZTI1MmRmMzViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMzAzLDcgKzMwMyw3IEBAIHdp
ZG93cyBbSW5oZXJpdGVkLCBUeXBlTmFtZT1zaG9ydCwgQXV0b0Z1bmN0aW9uc10KIHdpZHRoIFtJ
bml0aWFsPWluaXRpYWxTaXplLCBDb252ZXJ0ZXI9TGVuZ3RoU2l6aW5nXQogd29yZC1icmVhayBb
SW5oZXJpdGVkXQogLWVwdWItd29yZC1icmVhayA9IHdvcmQtYnJlYWsKLXdvcmQtc3BhY2luZyBb
SW5oZXJpdGVkLCBDdXN0b209VmFsdWVdCit3b3JkLXNwYWNpbmcgW0luaGVyaXRlZCwgQ29uZGl0
aW9uYWxDb252ZXJ0ZXI9V29yZFNwYWNpbmcsIFR5cGVOYW1lPUxlbmd0aF0KIHdvcmQtd3JhcCBb
SW5oZXJpdGVkPUVPdmVyZmxvd1dyYXAsIE5hbWVGb3JNZXRob2RzPU92ZXJmbG93V3JhcF0KIHot
aW5kZXggW1R5cGVOYW1lPWludCwgQXV0b0Z1bmN0aW9uc10KIGFsdCBbTGVnYWN5U3R5bGVCdWls
ZGVyXQpAQCAtNDY5LDcgKzQ2OSw3IEBAIGp1c3RpZnktY29udGVudAogLXdlYmtpdC1tYXJnaW4t
c3RhcnQgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KIC13ZWJraXQtbWFycXVlZSBbTGVnYWN5U3R5bGVC
dWlsZGVyXQogLXdlYmtpdC1tYXJxdWVlLWRpcmVjdGlvbgotLXdlYmtpdC1tYXJxdWVlLWluY3Jl
bWVudCBbQ3VzdG9tPVZhbHVlXQorLXdlYmtpdC1tYXJxdWVlLWluY3JlbWVudCBbQ29uZGl0aW9u
YWxDb252ZXJ0ZXI9TWFycXVlZUluY3JlbWVudCwgVHlwZU5hbWU9TGVuZ3RoXQogLXdlYmtpdC1t
YXJxdWVlLXJlcGV0aXRpb24gW05hbWVGb3JNZXRob2RzPU1hcnF1ZWVMb29wQ291bnQsIENvbnZl
cnRlcj1NYXJxdWVlUmVwZXRpdGlvbl0KIC13ZWJraXQtbWFycXVlZS1zcGVlZCBbQ29udmVydGVy
PU1hcnF1ZWVTcGVlZF0KIC13ZWJraXQtbWFycXVlZS1zdHlsZSBbVHlwZU5hbWU9RU1hcnF1ZWVC
ZWhhdmlvciwgTmFtZUZvck1ldGhvZHM9TWFycXVlZUJlaGF2aW9yXQpAQCAtNTAzLDcgKzUwMyw3
IEBAIG9yZGVyIFtUeXBlTmFtZT1pbnRdCiAtd2Via2l0LXBhZGRpbmctYmVmb3JlIFtMZWdhY3lT
dHlsZUJ1aWxkZXJdCiAtd2Via2l0LXBhZGRpbmctZW5kIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCiAt
d2Via2l0LXBhZGRpbmctc3RhcnQgW0xlZ2FjeVN0eWxlQnVpbGRlcl0KLS13ZWJraXQtcGVyc3Bl
Y3RpdmUgW0N1c3RvbT1WYWx1ZV0KKy13ZWJraXQtcGVyc3BlY3RpdmUgW0NvbmRpdGlvbmFsQ29u
dmVydGVyPVBlcnNwZWN0aXZlLCBUeXBlTmFtZT1mbG9hdF0KIC13ZWJraXQtcGVyc3BlY3RpdmUt
b3JpZ2luIFtMZWdhY3lTdHlsZUJ1aWxkZXJdCiAtd2Via2l0LXBlcnNwZWN0aXZlLW9yaWdpbi14
IFtDb252ZXJ0ZXI9TGVuZ3RoXQogLXdlYmtpdC1wZXJzcGVjdGl2ZS1vcmlnaW4teSBbQ29udmVy
dGVyPUxlbmd0aF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApp
bmRleCBlZDBhZDkzYzU1OTU1MzMwMWJlOTQ3MDFhNDRkYmZmYjYwZmVhMGU4Li5iNTA3MGQ1NTM1
MTE5Y2EyODEwZDRlZGZjMWRkMzIwNzUzOGZmNTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ1NTSW1h
Z2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
UmVmbGVjdFZhbHVlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
ICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUXVvdGVzRGF0YS5oIgpAQCAtODYsNiArODcs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgY29udmVydEdyaWRQb3NpdGlvbihTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmLCBHcmlkUG9zaXRpb24mKTsKICAgICBzdGF0aWMgR3JpZEF1dG9G
bG93IGNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAjZW5k
aWYgLy8gRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICBzdGF0aWMgYm9vbCBjb252ZXJ0V29y
ZFNwYWNpbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiwgTGVuZ3RoJik7CisgICAgc3RhdGlj
IGJvb2wgY29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYsIGZsb2F0
Jik7CisgICAgc3RhdGljIGJvb2wgY29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJiwgTGVuZ3RoJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFN0
eWxlQnVpbGRlckN1c3RvbTsKQEAgLTEwMCw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYsIEdyaWRQb3NpdGlvbiYpOwogICAg
IHN0YXRpYyB2b2lkIGNyZWF0ZUltcGxpY2l0TmFtZWRHcmlkTGluZXNGcm9tR3JpZEFyZWEoY29u
c3QgTmFtZWRHcmlkQXJlYU1hcCYsIE5hbWVkR3JpZExpbmVzTWFwJiwgR3JpZFRyYWNrU2l6aW5n
RGlyZWN0aW9uKTsKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQorICAgIHN0YXRp
YyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRo
VGV4dFpvb21GYWN0b3IoU3R5bGVSZXNvbHZlciYpOwogfTsKIAogaW5saW5lIExlbmd0aCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtODUyLDYgKzg1Nyw3MyBAQCBpbmxpbmUgR3JpZEF1
dG9GbG93IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJl
c29sdmVyJiwgQwogfQogI2VuZGlmIC8vIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAKK2lubGlu
ZSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3NzdG9M
ZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyKQoreworICAgIGlmIChhdXRvKiBmcmFtZSA9IHN0eWxlUmVzb2x2ZXIuZG9jdW1l
bnQoKS5mcmFtZSgpKQorICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbShzdHlsZVJlc29sdmVy
LnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSAqIGZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpKTsKKwor
ICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpOworfQorCitpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3Jk
U3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUsIExl
bmd0aCYgd29yZFNwYWNpbmcpCit7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgICAgIHdvcmRTcGFjaW5nID0gUmVuZGVy
U3R5bGU6OmluaXRpYWxXb3JkU3BhY2luZygpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVl
LmlzTGVuZ3RoKCkpCisgICAgICAgIHdvcmRTcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0
ZUxlbmd0aDxMZW5ndGg+KGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0
b3Ioc3R5bGVSZXNvbHZlcikpOworICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2Vu
dGFnZSgpKQorICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChjbGFtcFRvPGZsb2F0Pihwcmlt
aXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZvckNzc0xlbmd0aCwgbWF4VmFs
dWVGb3JDc3NMZW5ndGgpLCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5p
c051bWJlcigpKQorICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS5n
ZXREb3VibGVWYWx1ZSgpLCBGaXhlZCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlLCBmbG9hdCYgcGVyc3BlY3RpdmUpCit7CisgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgICAgIHBlcnNw
ZWN0aXZlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCisgICAgICAgIHBlcnNwZWN0aXZlID0gcHJpbWl0aXZlVmFs
dWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKSk7CisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIo
KSkKKyAgICAgICAgcGVyc3BlY3RpdmUgPSBwcmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgp
ICogc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS56b29t
KCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHBlcnNwZWN0aXZlID49IDA7Cit9CisK
K2lubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1l
bnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlLCBMZW5ndGgm
IG1hcnF1ZWVMZW5ndGgpCit7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0
VmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgorICAgICAgICBtYXJxdWVlTGVu
Z3RoID0gTGVuZ3RoKDEsIEZpeGVkKTsgLy8gMXB4LgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBtYXJxdWVlTGVuZ3RoID0gTGVuZ3RoKDYs
IEZpeGVkKTsgLy8gNnB4LiBUaGUgV2luSUUgZGVmYXVsdC4KKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgY2FzZSBDU1NWYWx1ZUxhcmdlOgorICAgICAgICBtYXJxdWVlTGVuZ3RoID0gTGVuZ3Ro
KDM2LCBGaXhlZCk7IC8vIDM2cHguCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ1NT
VmFsdWVJbnZhbGlkOgorICAgICAgICBtYXJxdWVlTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUuY29u
dmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8
IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKKyAgICAgICAgcmV0
dXJuICFtYXJxdWVlTGVuZ3RoLmlzVW5kZWZpbmVkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gU3R5bGVCdWlsZGVyQ29udmVydGVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCAwNGVkMGZkY2RjYjY3NmQ3NmVmNjhhNGYxODZk
YmI5YzU2YTg3NzUyLi40YzE2YmJlM2FlNmM1MmQwMGM5NWY4NTg3Njg3ZGNkMmFiMWQzZTg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0xMDIsMTUgKzEwMiwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtp
dEp1c3RpZnlTZWxmKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyB2b2lk
IGFwcGx5VmFsdWVXZWJraXRMb2NhbGUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7Ci0gICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJik7Ci0gICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFBlcnNwZWN0
aXZlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFs
dWVXZWJraXRUZXh0T3JpZW50YXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJik7CiAgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZVdlYmtpdFdyaXRpbmdNb2RlKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYpOwotICAgIHN0YXRpYyB2b2lkIGFwcGx5VmFsdWVXb3JkU3BhY2luZyhTdHlsZVJl
c29sdmVyJiwgQ1NTVmFsdWUmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCByZXNldEVm
ZmVjdGl2ZVpvb20oU3R5bGVSZXNvbHZlciYpOwotICAgIHN0YXRpYyBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhIGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3IoU3R5
bGVSZXNvbHZlciYpOwogICAgIHN0YXRpYyBib29sIGNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVz
b2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYsIExlbmd0aCYsIGZsb2F0IG11bHRpcGxpZXIgPSAxLmYp
OwogCiAgICAgc3RhdGljIExlbmd0aCBtbUxlbmd0aChkb3VibGUgbW0pOwpAQCAtMTMyLDMwICsx
MjgsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBmbG9hdCBkZXRlcm1pbmVSdWJ5VGV4dFNpemVN
dWx0aXBsaWVyKFN0eWxlUmVzb2x2ZXImKTsKIH07CiAKLWlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQotewotICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBMZW5ndGggbWFy
cXVlZUxlbmd0aChVbmRlZmluZWQpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpKSB7Ci0gICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgotICAgICAgICBtYXJxdWVlTGVuZ3Ro
ID0gTGVuZ3RoKDEsIEZpeGVkKTsgLy8gMXB4LgotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1ZhbHVlTm9ybWFsOgotICAgICAgICBtYXJxdWVlTGVuZ3RoID0gTGVuZ3RoKDYsIEZpeGVkKTsg
Ly8gNnB4LiBUaGUgV2luSUUgZGVmYXVsdC4KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NW
YWx1ZUxhcmdlOgotICAgICAgICBtYXJxdWVlTGVuZ3RoID0gTGVuZ3RoKDM2LCBGaXhlZCk7IC8v
IDM2cHguCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgotICAgICAg
ICBtYXJxdWVlTGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50
ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9u
PihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlX
aXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmICghbWFycXVlZUxlbmd0aC5pc1VuZGVmaW5lZCgp
KQotICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldE1hcnF1ZWVJbmNyZW1lbnQobWFy
cXVlZUxlbmd0aCk7Ci19Ci0KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZURpcmVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXREaXJlY3Rpb24oZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CkBAIC01NjAsMTQgKzUzMiw2IEBAIERFRklORV9C
T1JERVJfSU1BR0VfTU9ESUZJRVJfSEFORExFUihXZWJraXRNYXNrQm94SW1hZ2UsIFJlcGVhdCkK
IERFRklORV9CT1JERVJfSU1BR0VfTU9ESUZJRVJfSEFORExFUihXZWJraXRNYXNrQm94SW1hZ2Us
IFNsaWNlKQogREVGSU5FX0JPUkRFUl9JTUFHRV9NT0RJRklFUl9IQU5ETEVSKFdlYmtpdE1hc2tC
b3hJbWFnZSwgV2lkdGgpCiAKLWlubGluZSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIFN0eWxl
QnVpbGRlckN1c3RvbTo6Y3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3Rv
cihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQotewotICAgIGlmIChGcmFtZSogZnJhbWUg
PSBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxl
UmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1
c3RlZFpvb20oc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkgKiBmcmFtZS0+
dGV4dFpvb21GYWN0b3IoKSk7Ci0KLSAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKTsKLX0KLQogaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVy
Q3VzdG9tOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBj
b25zdCBDU1NWYWx1ZSYgdmFsdWUsIExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBtdWx0aXBsaWVyKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKQEAgLTU3Niw3ICs1NDAsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0
b206OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgo
KSkgewotICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0
aD4oY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihzdHlsZVJlc29s
dmVyKSk7CisgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8TGVu
Z3RoPihTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRo
VGV4dFpvb21GYWN0b3Ioc3R5bGVSZXNvbHZlcikpOwogICAgICAgICBpZiAobXVsdGlwbGllciAh
PSAxLmYpCiAgICAgICAgICAgICBsZW5ndGggPSBMZW5ndGgobGVuZ3RoLnZhbHVlKCkgKiBtdWx0
aXBsaWVyLCBGaXhlZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTk0LDI0ICs1NTgsNiBA
QCBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXb3JkU3BhY2luZyhTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotCi0gICAgTGVu
Z3RoIHdvcmRTcGFjaW5nOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpCi0gICAgICAgIHdvcmRTcGFjaW5nID0gUmVuZGVyU3R5bGU6OmluaXRp
YWxXb3JkU3BhY2luZygpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkp
Ci0gICAgICAgIHdvcmRTcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5n
dGg+KGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRhdGFXaXRoVGV4dFpvb21GYWN0b3Ioc3R5bGVSZXNv
bHZlcikpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAg
ICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChjbGFtcFRvPGZsb2F0PihwcmltaXRpdmVWYWx1ZS5n
ZXREb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZvckNzc0xlbmd0aCwgbWF4VmFsdWVGb3JDc3NMZW5n
dGgpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQot
ICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1
ZSgpLCBGaXhlZCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm47Ci0gICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRXb3JkU3BhY2luZyh3b3JkU3BhY2luZyk7Ci19Ci0KICNpZiBFTkFCTEUo
SU9TX1RFWFRfQVVUT1NJWklORykKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaGVyaXRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIpCkBAIC03
NDMsMzEgKzY4OSw2IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVdlYmtpdEp1c3RpZnlTZWxmKFN0eWxlUmVzb2x2ZXImIHN0eWxlCiAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0SnVzdGlmeVNlbGYocHJpbWl0aXZlVmFsdWUpOwogfQogCi1pbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRQZXJzcGVjdGl2ZShT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCi17Ci0gICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwot
Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsK
LSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRQZXJzcGVjdGl2ZSgwKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZsb2F0IHBlcnNwZWN0aXZlVmFsdWU7Ci0gICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCi0gICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBw
cmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVyLnN0YXRlKCku
Y3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1
ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIC8vIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0
cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2ZVZhbHVlLmdldERv
dWJsZVZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKLSAgICAgICAgcGVyc3Bl
Y3RpdmVWYWx1ZSA9IHZhbHVlLmdldCgpLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlUmVzb2x2
ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKHBlcnNwZWN0aXZlVmFsdWUgPj0gMC4wZikKLSAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZVZhbHVlKTsKLX0KLQogdGVtcGxhdGUg
PENTU1Byb3BlcnR5SUQgaWQ+CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFs
dWUmIHZhbHVlKQogewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>